English
Русский
Українська
Голубая
Фиолетовая
Cветлая
Терминал
Norton
Войти
🌸 Май уже здесь — скидки 50% до конца выходных, и сегодня тоже ☀️

Атака на цепочку поставок TanStack и её последствия

Атака на цепочку поставок TanStack и её последствия

Эта статья основана на глубоком анализе недавней атаки на цепочку поставок (supply chain attack), затронувшей популярную экосистему TanStack и вышедшую далеко за её пределы. Атака оказалась крайне опасной из-за своей способности к самораспространению по принципу «червя».

Суть инцидента: Масштаб и охват

11 мая произошла масштабная атака на пакеты TanStack (Query, Router, Start и др.). Злоумышленникам удалось опубликовать вредоносные версии всех пакетов семейства в NPM. Хотя атаку локализовали в течение 20 минут, этого времени хватило, чтобы вирус начал распространяться дальше.

Основные факты:

  • Тип атаки: Червь (Worm).
  • Цель: Кража учетных данных (NPM tokens, GitHub tokens, AWS credentials) и дальнейшее самораспространение.
  • Затронутые экосистемы: Изначально NPM (JavaScript), но уже зафиксированы случаи перехода в экосистему Python.
  • Жертвы: Не только рядовые разработчики, но и CI/CD пайплайны других проектов.

Как работает «Червь» в коде

В отличие от обычного крадника данных, это вредоносное ПО использует украденные токены GitHub и NPM для автоматической публикации новых вредоносных версий пакетов, к которым у жертвы есть доступ.

  1. Сбор данных: Вирус сканирует систему на наличие секретов в типичных местах (папки .aws, переменные окружения, конфигурации NPM).
  2. Экстраполяция: Если жертва — мейнтейнер другого пакета, вирус использует её права для публикации зараженного кода в этот пакет.
  3. Заражение CI/CD: Если ваш проект использует TanStack в процессе сборки (CI), вредоносный код может выполниться в облачной среде сборки и украсть секреты самого репозитория.

Технический разбор: Как это стало возможным?

Атака не была связана со взломом компьютера конкретного разработчика. Злоумышленники использовали уязвимость в архитектуре GitHub Actions проекта TanStack, применив комбинацию из трех техник:

  1. PullRequestTarget Pattern: Использование триггера pull_request_target. В отличие от обычного pull_request, этот триггер запускает воркфлоу в контексте базового репозитория, что дает доступ к секретам и общим ресурсам.
  2. Отравление кэша (Cache Poisoning): Злоумышленник создал форк, внес вредоносный код и открыл Pull Request. При запуске GitHub Action вредоносный код сохранил себя в кэше зависимостей. Когда настоящий мейнтейнер запустил легитимную сборку, она подтянула «отравленный» кэш.
  3. Кража OIDC токена: Получив доступ к среде исполнения через кэш, вирус перехватил краткосрочный токен (OIDC), предназначенный для «доверенной публикации» (Trusted Publishing) в NPM, и использовал его для выгрузки вредоносного кода.

Как проверить себя и защититься?

Индикаторы компрометации (IoC)

  • Сетевой трафик: Проверьте наличие исходящих запросов на подозрительные URL (список обновляется в официальных постах TanStack).
  • Время установки: Если вы устанавливали или обновляли пакеты TanStack вечером 11 мая (по UTC), считайте свою систему скомпрометированной.
  • Токены: Если вы подозреваете заражение, немедленно отозовите все токены (NPM, AWS, GitHub).

Рекомендации по безопасности

  • Используйте Dev Containers или VM: Не ведите разработку напрямую в основной ОС. Изоляция среды минимизирует доступ вируса к вашим личным файлам и ключам.
  • Минимальный возраст пакетов: Настройте пакетные менеджеры (например, Bun или PNPM) на установку пакетов, выпущенных не менее X дней/часов назад. Это дает сообществу время обнаружить и удалить вредоносный код.
  • Запрет postinstall-скриптов: Большинство атак полагаются на скрипты жизненного цикла. Используйте флаг --ignore-scripts.
  • Управление секретами: Избегайте хранения ключей в .env файлах. Используйте специализированные сервисы (Infisical, Doppler) или SSO-авторизацию (например, AWS SSO вместо IAM-ключей).

Итог

Эра ИИ делает такие атаки проще: злоумышленникам легче анализировать чужой код на предмет уязвимостей в CI/CD. Данный инцидент показал, что даже «безопасные» методы (вроде Trusted Publishing без постоянных токенов) могут быть обойдены при грамотном использовании механизмов кэширования.

Совет на сегодня: Воздержитесь от обновлений зависимостей в ближайшие дни, пока волна «червя» не утихнет окончательно.

Читайте также

Комментарии
 logo