Исследователи Palo Alto Networks обнаружили, что в ряде крупных проектов с открытым исходным кодом (включая проекты Google, Microsoft, AWS и Red Hat), происходят утечки токенов аутентификации GitHub. Проблема связана с артефактами GitHub Actions в рабочих процессах CI/CD. Злоумышленники могут похитить эти токены и получить доступ к приватным репозиториям, украсть исходный код или внедрить вредоносный код в проекты.
Хотя многие владельцы репозиториев уже приняли меры для устранения утечки, в целом проблема остается неисправленной, поскольку разработчики GitHub возлагают ответственность за защиту артефактов на самих пользователей.
В своем отчете эксперты рассказывают, что совокупность факторов, включая небезопасные настройки по умолчанию, некорректные настройки пользователей и недостаточные проверки безопасности, могут приводить к утечке токенов GitHub. Такие атаки в компании назвали ArtiPACKED.
Первой была обнаружена проблема, связанная с действием actions/checkout, которое обычно используется в GitHub workflow для клонирования кода репозитория, чтобы тот был доступен в ходе выполнения рабочего процесса.
По умолчанию это действие сохраняет токен GitHub в локальном скрытом каталоге .git, что необходимо для аутентифицированных операций. Если же пользователь по ошибке загрузит весь каталог checkout как часть артефакта, токен GitHub в папке git окажется скомпрометирован. Другая конфиденциальная информация, которая так же может содержаться в этой директории, это ключи API, токены доступа для облачных сервисов и учетные данные для различных аккаунтов.
Аналогичная ошибка, связанная с загрузкой артефактов, может возникнуть и с артефактами, создаваемыми в процессе CI/CD (к примеру, результаты сборки и тестирования, которые хранятся и остаются доступны до трех месяцев).
Вторая обнаруженная специалистами проблема связана с конвейерами CI/CD, которые используют переменные окружения для хранения токенов GitHub. Если действия (actions) или скрипты в рамках рабочего процесса целенаправленно или по ошибке логируют эти переменные, а логи загружаются в качестве артефактов.
Эксперты отмечают, что действие super-linter может создавать подробные логи, если CREATE_LOG_FILE установлено в значение True.
По словам специалистов, в результате злоумышленники будут стремиться использовать специфические ситуации состояния гонки, когда эфемерные токены GitHub нужно успеть извлечь из логов и использовать до истечения срока их действия.
Токены GitHub остаются действительными в течение всего workflow, поэтому потенциал их использования зависит от конкретного случая. Так, токен Actions_Runtime_Token, используемый GitHub для кеширования и управления артефактами, обычно действует в течение шести часов, поэтому окно для его эксплуатации невелико. Однако другие секреты и токены, включая API-ключи или токены доступа к облачным сервисам, могут иметь разный срок действия — от нескольких минут до бесконечности.
В своем отчете эксперты разобрали сценарий атаки, который позволяет выявить проекты или публичные репозитории, использующие GitHub Actions, и затем, с помощью автоматизированных скриптов просканировать их на предмет критериев, повышающих вероятность создания артефактов.
Другой набор скриптов позволяет автоматически загружать артефакты из CI/CD конвейеров целевых репозиториев (что совсем несложно в случае с публичными репозиториями), а затем проверять их на наличие секретов.
В рамках этого исследования специалисты Palo Alto Networks обнаружили 14 крупных опенсорсных проектов, допустивших подобные утечки. Эксперты сообщили о своих находках разработчикам, которые устранили проблемы в:
- Firebase (Google)
- OpenSearch Security (AWS)
- Clair (Red Hat)
- Active Directory System (Adsys) (Canonical)
- JSON Schemas (Microsoft)
- TypeScript Repos Automation, TypeScript Bot Test Triggerer, Azure Draft (Microsoft)
- CycloneDX SBOM (OWASP)
- Stockfish
- Libevent
- Guardian для Apache Kafka (Aiven-Open)
- Git Annex (Datalad)
- Penrose
- Deckhouse
- Concrete-ML (Zama AI)
В заключение эксперты рекомендуют пользователям GitHub избегать включения целых директорий в загружаемые артефакты, проводить очистку логов и регулярно проверять конфигурации CI/CD-конвейеров. А настройки для потенциально опасных действий (таких как actions/checkout), стоит скорректировать таким образом, чтобы учетные данные не сохранялись.