Обновление actions/checkout v7: как GitHub закрывает опасный вектор атак pull_request_target?

GitHub внедряет существенное изменение в поведение официального экшена actions/checkout: начиная с 18 июня 2026 года версия v7 в определённых условиях будет отказываться подтягивать код из форков pull request, фактически ломая распространённый сценарий так называемых pwn request атак. Бэкпорт на все поддерживаемые мажорные версии обещают завершить к 16 июля 2026 года.
Что именно блокируется
Поведение затрагивает ровно два контекста workflow:
    []триггер pull_request_target;
    []триггер workflow_run — только когда workflow_run.event относится к событиям типа pull_request.
В этих сценариях actions/checkout откажется забирать head форка или merge-коммит. Запуск workflow завершится ошибкой, если в pull_request_target прилетает форк с небезопасными входными данными. Важно понимать границы: блокируется только checkout через сам actions/checkout. Прямой вызов git clone, использование GitHub CLI или сторонних экшенов для чекаута, а также чекаут произвольных сторонних репозиториев (через явное указание repository:) остаются вне зоны действия защиты.
Почему pull_request_target так опасен
Триггер pull_request_target срабатывает автоматически — без ручного аппрува — при открытии, переоткрытии PR или обновлении head-ветки. Workflow при этом работает в контексте дефолтной ветки базового репозитория. Отсюда прямой доступ к секретам репозитория или организации, токену GITHUB_TOKEN с правами на чтение и запись, а также к кэшу дефолтной ветки.
Классическая цепочка атаки выглядит так: pull_request_target + actions/checkout, который подтягивает код форка + выполнение этого кода. Код атакующего запускается с полными привилегиями workflow, что открывает кражу токенов и секретов и компрометацию цепочки поставки. Само сочетание терминов «pwn request» давно в ходу у исследователей из Socket: они подробно описывали угрозу и инициировали диалог с GitHub об изменении дефолтов.
Реальные жертвы: кампания s1ngularity
Атаки через pull_request_target — не теоретическая угроза. Кампания s1ngularity привела к компрометации нескольких заметных проектов:
    []система сборки Nx — скомпрометированы сразу несколько пакетов;
    []PostHog;
    []TanStack;
    []Emacs-пакет kubernetes-el/kubernetes-el.
Инциденты расследовала и документировала команда Socket, отсюда же берутся ключевые формулировки для описания угрозы и защитных мер.
Замысел и злоупотребление триггером
GitHub задумывал pull_request_target для доверенной автоматизации — навешивания меток, комментирования, работы с метаданными проекта. Проблема возникает в момент чекаута: шаг checkout определяет, какой код попадает на раннер. Если он подтягивает код форка, workflow по сути выполняет код атакующего с правами базового репозитория.
Официальная документация GitHub прямо предупреждает: «Запуск недоверенного кода на триггере pull_request_target может привести к уязвимостям безопасности» и перечисляет конкретные последствия — отравление кэша, выдачу непредусмотренного доступа на запись и раскрытие секретов.
Что разработчикам делать уже сейчас
Обновление — страховка, но не серебряная пуля. Практический минимум:
    []Пересмотреть необходимость pull_request_target: если workflow не требует повышенных прав или секретов, использовать обычный pull_request — он работает в контексте форка и непривилегирован.
    []Следовать принципу наименьших привилегий через блок permissions: у workflow и токенов.
    []Жёстко контролировать пользовательский ввод: ни один параметр из PR не должен превращаться в выполнение произвольного кода.
    []Считать апдейт направляющей, а не исчерпывающей защитой. Workflow с секретами, правами на запись, деплой или OIDC-публикацию требуют ручного ревью и регулярного аудита.
Границы защиты — ключевой нюанс
Как отмечает Socket, обновление покрывает только чекауты через actions/checkout. За рамками остаются самописные скрипты checkout, git clone, GitHub CLI, сторонние экшены, а также вредоносный код, прокинутый через issue_comment, pull_request_review или другие события. Это и превращает изменение в ограждение, а не готовую систему безопасности Actions.
Кто за этим стоит
GitHub (дочерняя компания Microsoft) публикует обновление и документацию. actions/checkout — официальный экшен, которого и касается релиз v7. Socket — компания по безопасности open source — обеспечила аналитическую базу, описания и атрибуцию кампании s1ngularity. Под удар попали Nx, PostHog, TanStack и kubernetes-el/kubernetes-el — на их примере GitHub показывает реальный масштаб pwn request атак.
Ждать осталось недолго: 18 июня 2026 года версия v7 откажется работать с небезопасной комбинацией pull_request_target + код форка, а 16 июля 2026 года это поведение появится и в ранее поддерживаемых мажорных линейках.


Новое на сайте

Ссылка