Что такое секреты?
Секреты — это удостоверения, предоставляющие доступ к чувствительным системам и данным. Распространенные примеры:
- Ключи и токены API, используемые для аутентификации с внешними сервисами
- Пароли базы данных и строки подключения
- Учетные данные облачных провайдеров и токены сервисных аккаунтов
- Сертификаты и ключи шифрования
Когда секреты сохраняются в репозиториях, они становятся жёстко закодированными учетными данными , встроенными непосредственно в исходный код или конфигурационные файлы. Эти закодированные секреты становятся частью вашей истории Git и остаются доступными даже после удаления из последнего коммита. Это означает, что устранение утечки учетных данных требует большего, чем просто удаление файла; Также необходимо отозвать и заменить учетные данные, чтобы предотвратить несанкционированный доступ.
Как тайны раскрываются
**Секретное распространение** происходит, когда учетные данные распространяются по репозиториям, командам и системам без централизованного управления или видимости. Это затрудняет отслеживание, какие секреты существуют, где они используются и были ли они раскрыты. Секреты обычно попадают в хранилища через несколько распространённых шаблонов.
Рабочие процессы разработки
- Жёстко закодированные учетные данные, добавленные во время локального тестирования и случайно зафиксированные
- Секреты в конфигурационных файлах, таких как
.envфайлы или шаблоны инфраструктуры как код - Примеры учетных данных с реальными API-ключами или токенами в документации, вики или README-файлах
Управление репозиторием
- Наследственные репозитории с забытыми, но всё ещё активными учетными данными
- Секреты, которыми делятся в GitHub выпусках, комментариях к pull request, обсуждениях или сути
- Аккредитации, представленные внешними участниками или подрядчиками
Распространение контроля версий
- Секреты сохраняются в истории Git даже после удаления из текущего кода.
- Учетные данные распространяются в форкированные репозитории, системы резервного копирования и логи CI/CD.
- Публичные хранилища с раскрытыми секретами индексируются поисковыми системами и специализированными сервисами сканирования.
Угрозы безопасности
Раскрытые секреты могут привести к нескольким типам инцидентов с безопасностью.
Неавторизованный доступ
Утечки учетных данных дают неавторизованным пользователям прямой доступ к вашим системам. После раскрытия жёстко заданные секреты могут быть использованы для:
- Предоставление инфраструктуры или услуг на вашем аккаунте с использованием утекших учетных данных облачного провайдера
- Доступ к чувствительным данным клиентов или организаций через скомпрометированные учетные данные базы данных
- Доступ к производственным системам через доступные сервисные токены
Утечки данных
Утечки учетных данных дают несанкционированным пользователям прямой доступ к вашим системам, что приводит к утечкам данных. После того как злоумышленники получают доступ с помощью раскрытых учетных данных, они могут извлекать конфиденциальные данные, изменять или удалять критически важную информацию и подрывать доверие клиентов. Утечки данных требуют немедленного реагирования на инциденты, включая отзыв документов, устранение системы и оценку масштаба и последствий утечки.
Атаки цепочки поставок
Обнаруженные токены реестра пакетов могут использоваться для публикации вредоносных версий вашего программного обеспечения, затрагивая пользователей и организации, зависящие от ваших пакетов.
Финансовые последствия
Раскрытые секреты могут обойтись вашей компании во многих отношениях.
-
**Неожиданные облачные счета**: утечка API позволяет злоумышленникам использовать ваши облачные ресурсы. Они могут запускать вычислительные инстанции, хранить данные или майнить криптовалюту на вашем аккаунте, генерируя крупные счета. -
**Реагирование на инциденты**: расследование утечек, ротация удостоверений и аудит систем требует значительных инженерных затрат и ресурсов. -
**Юридические расходы**: Утечки данных могут привести к штрафам, юридическим расходам и уведомлениям. -
**Долгосрочный ущерб**: потерянные клиенты, выросшие страховые расходы и упущенные бизнес-возможности после того, как инциденты с безопасностью стали достоянием общественности.
Секретная безопасность с GitHub
GitHub предоставляет инструменты, помогающие вам предотвратить, выявить и устранить секретные утечки:
1. Не допускать новых секретов
Включите защиту Push для сканирования кода во git push время операций и блокировки коммитов с обнаруженными секретами до их появления в вашем репозитории. Это предотвращает добавление жёстко заданных учетных данных в вашу кодовую базу и обеспечивает обратную связь разработчикам в реальном времени в момент риска, охватывая как шаблоны провайдеров для известных сервисов, так и не-провайдерские шаблоны, такие как приватные ключи и универсальные API-ключи.
Поощряйте отдельных разработчиков включать защиту от push для своих личных аккаунтов, чтобы защитить все свои push-файлы GitHub, независимо от политики организации. Это помогает предотвратить тайное распространение, фиксируя утечку учетных данных до того, как они попадут в ваши хранилища.
2. Обнаружить существующие секреты
Используйте secret scanning для постоянного мониторинга ваших репозиториев на предмет жёстко закодированных секретов и генерации оповещений при обнаружении учетных данных, что позволяет быстро отзывать и помещать скомпрометированные учетные данные. Помимо стандартного обнаружения шаблонов поставщиков, вы можете расширить сканирование на паттерны без провайдеров и определить пользовательские шаблоны для специфических для организаций секретов. Это поможет вам получить видимость в секретном разрастании по всей организации.
Дальнейшие действия
Чтобы защитить вашу организацию от секретных утечек:
- Включите защиту от пуша, чтобы предотвратить появление новых секретов.
- Включите secret scanning возможность начать выявлять существующие секретные утечки.
- Создайте безопасные практики управления учетными данными для ваших команд разработчиков.