Исследователи компании Palo Alto Networks выявили серьезную уязвимость в системе безопасности GitHub, затрагивающую ряд крупных проектов с открытым исходным кодом. Проблема связана с утечкой токенов аутентификации через артефакты GitHub Actions в рабочих процессах CI/CD. Эта уязвимость, получившая название ArtiPACKED, открывает потенциальным злоумышленникам доступ к приватным репозиториям, позволяя похищать исходный код или внедрять вредоносные элементы в проекты.
Механизм утечки токенов GitHub
Основная проблема заключается в действии actions/checkout, широко используемом в GitHub workflow для клонирования кода репозитория. По умолчанию это действие сохраняет токен GitHub в локальном скрытом каталоге .git. Если разработчик по ошибке загружает весь каталог checkout как часть артефакта, токен GitHub оказывается скомпрометирован. Помимо токенов, в этой директории могут храниться другие конфиденциальные данные, такие как ключи API, токены доступа для облачных сервисов и учетные данные различных аккаунтов.
Уязвимости в конвейерах CI/CD
Вторая обнаруженная проблема связана с конвейерами CI/CD, использующими переменные окружения для хранения токенов GitHub. Если действия или скрипты в рамках рабочего процесса логируют эти переменные, а логи затем загружаются в качестве артефактов, это создает дополнительный вектор утечки. Например, действие super-linter может создавать подробные логи при установке параметра CREATE_LOG_FILE в значение True.
Временное окно для эксплуатации
Токены GitHub остаются действительными в течение всего workflow, но их потенциал использования зависит от конкретного случая. Токен Actions_Runtime_Token, используемый для кеширования и управления артефактами, обычно действует около шести часов. Однако другие секреты и токены могут иметь различные сроки действия — от нескольких минут до бессрочного периода.
Сценарий атаки и автоматизация эксплуатации
Исследователи разработали сценарий атаки, позволяющий выявлять проекты, использующие GitHub Actions, и автоматически сканировать их на предмет уязвимостей. Злоумышленники могут использовать скрипты для загрузки артефактов из CI/CD конвейеров целевых репозиториев и проверки их на наличие секретов. Особенно уязвимы в этом отношении публичные репозитории.
Масштаб проблемы и затронутые проекты
В ходе исследования специалисты Palo Alto Networks обнаружили 14 крупных опенсорсных проектов, включая проекты Google, Microsoft, AWS и Red Hat, допустивших подобные утечки. После уведомления разработчиков большинство уязвимостей были устранены. Однако проблема остается актуальной в масштабах всей экосистемы GitHub, так как ответственность за защиту артефактов лежит на самих пользователях.
Для минимизации рисков утечки токенов GitHub эксперты рекомендуют пользователям избегать включения целых директорий в загружаемые артефакты, проводить тщательную очистку логов и регулярно проверять конфигурации CI/CD-конвейеров. Особое внимание следует уделить настройкам потенциально опасных действий, таких как actions/checkout, чтобы предотвратить сохранение учетных данных. Реализация этих мер позволит значительно повысить уровень безопасности проектов с открытым исходным кодом и защитить их от потенциальных атак, связанных с утечкой токенов GitHub.