Работодатель не назван

Постмортем: как взломали цепочку поставок TanStack через GitHub Actions (OIDC + Cache Poisoning)

Английский не нужен

Не указано: грейд, формат работы, география

Навыки

  • AWS
  • Azure
  • CI/CD
  • Code review
  • DNS / DHCP
  • Google Cloud
  • GitHub
Ещё 5
  • GitHub Actions
  • Kubernetes
  • OAuth / OIDC
  • Vault / Consul
  • YAML

О компании и продукте

  • Это и позволило вредоносному коду выполниться в контексте базового репозитория без одобрения админов. Отравление кэша. Вредоносный скрипт записал отравленный кэш pnpm-store (1.1 ГБ) в общий репозиторий под ключом ветки main

Задачи

  • Сбор секретов
  • Сканировал .npmrc, сессии GitHub/gh CLI, ключи AWS (IMDS/Secrets Manager), GCP, Azure, конфиги Kubernetes, HashiCorp Vault, приватные SSH-ключи, файлы .env и сессии 1Password
  • Эксфильтрацию. Отправлял данные по HTTPS и скрытым DNS-каналам в сеть Session/Oxen
  • Червь-эффект
  • Запрашивал у npm другие пакеты, где скомпрометированный юзер был админом, и пытался заразить и их (пострадали некоторые пакеты Mistral AI, UiPath, Guardrails AI)
  • Если ваша команда пользуется TanStack
  • Проверить lock-файлы на наличие зараженных версий (полный список в CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx)
  • Если пакеты ставились — считать раннеры/хосты скомпрометированными и провести полную ротацию всех секретов и ключей, к которым они имели доступ
  • Блокировать хуки сборки
  • В CI/CD использовать флаг --ignore-scripts при установке зависимостей (например, pnpm install --ignore-scripts или npm ci --ignore-scripts)
  • Изолировать кэш
  • Недостаточно просто ограничить OIDC-токен веткой main (ведь атакующие дождались легитимного пуша)
  • Необходимо строго разделять области видимости кэша
  • Кэш для релизных пайплайнов должен быть полностью изолирован от кэша, доступного для воркфлоу проверки PR (pull_request_target)
  • В GitHub Actions фиксировать сторонние экшены по SHA-хэшам коммитов, ограничить область действия OIDC конкретными защищенными ветками (refs/heads/main) и жестко изолировать триггер pull_request_target
  • DevOpsKaz 😛

Требования

  • 11 мая 2026 года злоумышленники за 6 минут опубликовали 84 вредоносные версии 42 npm-пакетов семейства @tanstack/* (популярный набор библиотек для фронтенд-разработки) с легитимной подписью происхождения (SLSA provenance)
  • При этом учетные данные мейнтейнеров не были украдены, а 2FA была включена
  • Схема атаки
  • Pwn Request
  • Злоумышленник создал PR из форка
  • Воркфлоу bundle-size.yml использовал триггер pull_request_target
  • Сам по себе он безопасен (запускает код из ветки main), но внутри был шаг сборки бенчмарков, который явно подтягивал файлы из коммита форка
  • Разграничение прав через permissions не сработало, так как экшен использовал внутренний токен раннера для записи, а не GITHUB_TOKEN
  • Затем злоумышленник сделал force-push пустышки, скрыв изменения в PR
  • Кража OIDC-токена из памяти
  • Когда мейнтейнер сделал штатный пуш в main, запустился легитимный релизный воркфлоу, который восстановил отравленный кэш
  • Вредоносный код активировался и извлек валидный OIDC-токен прямо из оперативной памяти процесса GitHub Actions Runner, после чего легитимно залил пакеты в npm
  • Вредоносный код внедрялся через хук prepare (optionalDependencies) и выполнял

Паспорт вакансии

История публикации

Появилась в Вакандии31 день
Перепубликациинетпубликовалась один раз
Проверяли на источникеВидели 29 дней назад
Среди похожихНет данныху карточки не хватает полей, чтобы найти похожие

Откуда что взялось

Отмечено то, что вывели мы. Без пометки — значение назвал работодатель.

Грейдне указан
Формат работыне указан
Географияне указана
Зарплата≈ 110 000 RUB в месяцнаша оценка, в вакансии не названа

Почему на этом месте в выдаче

Порядок выдачи объявлен контрактом: свежесть решает между днями, полнота и зарплата — внутри дня.

Полнота карточки251 из 4 полей: грейд, формат, география, зарплата
Зарплата названа0вилки работодателя нет, показана наша оценка

Проверка Вакандии

Источники и свежесть

Тип источника
Карьерный сайт работодателя
Найдено публикаций
1
Посмотреть публикации и даты
  • telegramОсновная публикация · 2026-06-29

Безопасность

Отклик уходит на сайт источника

Вакандия показывает вакансию, но не отправляет отклик и не проверяет работодателя. Сам отклик вы оставляете на внешнем сайтеt.me.

Признаки мошенничества
  • Просят предоплату, «залог» или деньги за обучение и оборудование.
  • Требуют код из SMS, данные банковской карты или доступ к «Госуслугам».
  • Быстро уводят в мессенджер и торопят с решением.
  • Обещают большой доход без опыта и без деталей задач.

Настоящий работодатель не просит денег и платёжных данных до трудоустройства.

Продолжить поиск

Похожие вакансии

Причина сходства указана на каждой карточке