GitHub Actions ужесточает безопасность actions/checkout, чтобы блокировать атаки pwn request — ИИ для бизнеса

GitHub Actions ужесточает безопасность actions/checkout, чтобы блокировать атаки pwn request

Прослушать статью

После многих лет попыток научить разработчиков безопасно использовать pull_request_target платформа наконец вводит более строгие настройки по умолчанию.

Потрясенная всплеском кибератак, которые вышли из-под контроля в средах разработчиков, GitHub усилила безопасность actions/checkout, чтобы блокировать атаки «pwn request», использующие небезопасное применение триггера workflow pull_request_target для запуска кода атакующего с полными привилегиями workflow.

Как было объявлено 18 июня, actions/checkout v7 теперь автоматически блокирует и завершает с ошибкой workflow при использовании внутри событий pull_request_target или workflow_run, если выполняется попытка загрузить непроверенный код pull request из fork.

Теперь единственный способ обойти эти проверки для разработчиков — явно указать allow-unsafe-pr-checkout в actions/checkout, сообщила GitHub в журнале изменений V7.

Это изменение знаменует начало новой эпохи «secure by default», в которой безопасность будет задаваться системой GitHub, а не оставляться на усмотрение разработчиков. В рамках этой работы 16 июля новые настройки по умолчанию будут перенесены и на все поддерживаемые major-версии.

«Workflow, закрепленные за плавающим major-тегом, например actions/checkout@v4, автоматически получат это изменение. Workflow, закрепленные за конкретным SHA, minor- или patch-версией, переносом не затрагиваются и должны будут обновиться через Dependabot или через уже используемые процессы обновления», — пояснила GitHub.

Однако, поскольку атаки pwn request могут происходить и другими способами, «в будущих релизах может быть рассмотрено дальнейшее ужесточение дополнительных событий», добавили в журнале изменений.

Слепое пятно

Если и есть за что критиковать GitHub в этой истории, так это за то, что устранение слабого места, известного уже много лет, заняло слишком много времени.

Проблема связана с GitHub Actions, где триггеры запускают workflow, включая pull_request, который обрабатывает сторонние forks без доступа к секретам вроде API keys, service tokens и credentials. Минус в том, что такое ограничение мешает работе некоторых автоматизаций, поэтому разработчики переходят на альтернативный триггер pull_request_target, который дает нужный доступ.

В какой-то момент атакующие поняли, что при неосторожной настройке pull_request_target вместе с actions/checkout для загрузки недоверенного кода из fork он открывал back door к репозиториям и их secret.

Иными словами, слабое место в pull_request_target связано не с самим триггером, который при правильном использовании законен и безопасен, а с его неправильным применением. Как сказано в журнале изменений GitHub: «Проверка head непроверенного pull request из fork внутри одного из таких workflow обычно позволяет коду под контролем атакующего выполняться с полными привилегиями workflow».

Появление actions/checkout v7, однако, должно усложнить такие атаки, автоматически блокируя рискованные workflow независимо от их конфигурации.

К сожалению, ущерб уже во многом нанесен. Репозитории open source в последнее время подвергались затяжным атакам группировки TeamPCP, использовавшей разные техники, включая pwn request.

Показательный пример — атака в прошлом месяце, в результате которой были скомпрометированы 170 пакетов node package manager (npm), включая экосистему TanStack Router, благодаря exploit pwn request. Что особенно неловко, в отдельном инциденте, не связанном с pwn request, была взломана и сама GitHub: атакующие эксфильтровали исходный код примерно из 3800 внутренних репозиториев компании.

Лучше поздно, чем никогда: GitHub начала серию реформ безопасности на платформе, включая предпринятое ранее в этом месяце ограничение автоматического выполнения install script в npm.


Материал — перевод статьи с английского.

Оригинал: GitHub Actions hardens checkout security to block ‘pwn request’ attacks