# Секретные риски утечек

Секреты, такие как API-ключи, пароли и токены, зафиксированные в репозиториях, могут быть использованы неавторизованными пользователями, создавая безопасность, соответствие требованиям и финансовый риск для вашей организации.

## Что такое секреты?

Секреты — это удостоверения, предоставляющие доступ к чувствительным системам и данным. Распространенные примеры:

* Ключи и токены 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** для постоянного мониторинга ваших репозиториев на предмет жёстко закодированных секретов и генерации оповещений при обнаружении учетных данных, что позволяет быстро отзывать и помещать скомпрометированные учетные данные. Помимо обнаружения шаблонов поставщиков по умолчанию, можно развернуть сканирование в универсальные шаблоны и определить пользовательские шаблоны для секретов для конкретной организации. Это поможет вам получить видимость в секретном разрастании по всей организации.