Отравление кэша GitHub Actions: руководство по безопасности CI/CD 2026
Гайд по безопасности · Май 2026

Отравление кэша GitHub Actions:
Руководство по безопасности CI/CD 2026

Как злоумышленники превращают общий кэш GitHub Actions в оружие для атак на цепочку поставок — реальные механики атак, разбор кражи OIDC-токена TanStack и полный чеклист защиты ваших CI/CD пайплайнов.

Олег Максимов 21 мая 2026 14 мин чтения

Введение

В мае 2026 года экосистема TanStack была скомпрометирована через сложную атаку, объединившую Pwn Request через pull_request_target и отравление кэша GitHub Actions. Злоумышленник опубликовал 84 вредоносных npm-пакета, не украв ни одного пароля — они использовали механизм кэширования GitHub Actions и OIDC-доверие.

Кампания червя Mini Shai-Hulud (апрель–май 2026) использовала аналогичные техники для компрометации более 170 npm и PyPI пакетов. Утечка Grafana Labs также эксплуатировала Pwn Request. Дорожная карта безопасности Actions 2026 от GitHub прямо признаёт cache poisoning критической угрозой.

Как работает кэширование GitHub Actions

GitHub Actions предоставляет встроенный механизм кэширования через action actions/cache, позволяющий сохранять и восстанавливать директории между запусками воркфлоу.

Проблема модели доверия

Области кэша определяются иерархией веток. Ветки функций, созданные от main, могут получать доступ к кэшам main. Это позволяет злоумышленнику отравить кэш, который восстановит релизный воркфлоу.

Область кэшаКто может писатьКто может читатьУровень риска
Дефолтная ветка (main)Воркфлоу на mainВсе производные веткиКритический
Ветка функцииВоркфлоу на этой веткеТолько эта веткаНизкий
PR из форка с pull_requestВетка форкаТолько ветка форкаБезопасно
PR из форка с pull_request_targetКонтекст базовой веткиБазовая ветка + производныеКритический

Кейс: хронология атаки на TanStack

Чеклист усиления безопасности GitHub Actions

Критические

Избегайте pull_request_target для публичных репозиториев. Используйте pull_request.
Не кэшируйте непроверенные файлы на дефолтной ветке.
Установите GITHUB_TOKEN только на чтение по умолчанию.

Безопасные настройки

Фиксируйте actions на полном SHA, не используйте теги.
Используйте OIDC для облачного доступа.
Разделяйте проверку и публикацию в разных воркфлоу.

FAQ

Что такое отравление кэша GitHub Actions?
Техника атаки, при которой злоумышленник внедряет вредоносный код в кэш воркфлоу из низкопривилегированного воркфлоу для выполнения с повышенными правами.
Как атака на TanStack использует отравление кэша?
Злоумышленник отравил кэш pnpm store через pull_request_target. Когда релизный воркфлоу восстановил кэш, код атакующего извлёк OIDC-токен и опубликовал 84 вредоносных npm-пакета.
Что такое Pwn Request?
Атака, эксплуатирующая pull_request_target, который выполняется в контексте базового репозитория с доступом к секретам.
Как предотвратить отравление кэша?
Пять мер: (1) избегайте pull_request_target, (2) изолируйте кэш, (3) минимальные права токена, (4) фиксация на SHA, (5) OIDC.

Нужна помощь?

Я провожу аудит безопасности GitHub Actions и CI/CD пайплайнов. Свяжитесь со мной.

Контакты

Беспокоитесь о безопасности CI/CD?

Аудит GitHub Actions воркфлоу. Бесплатная консультация.