The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В 42 NPM-пакета TanStack интегрирован самораспространяющийся червь

12.05.2026 22:03 (MSK)

В результате компрометации процесса формирования релизов на базе GitHub Actions в проекте TanStack атакующим удалось опубликовать в репозитории NPM 84 вредоносные версии, охватывающие 42 NPM-пакета из стека TanStack. Некоторые из скомпрометированных пакетов насчитывали более 10 миллионов загрузок в неделю.

Доступ к публикации релизов был получен из-за неверной настройки pull_request_target "Pwn Request" в GitHub Actions (указание маски в настройках привело к запуску pull_request_target для pull-запросов в сторонние форки), отравления кэша GitHub Actions через форк и возможности извлечения OIDC-токена из памяти запущенного runner-процесса (Runner.Worker) через чтение содержимого /proc/<pid>/mem.

NPM-пакеты с вредоносными изменениями были опубликованы 11 мая с 22:20 до 22:26 (MSK), замечены через 20 минут и блокированы спустя полтора часа. Для каждого из поражённых NPM-пакетов были выпущены по две вредоносные версии, в которые был интегрирован код для активации червя mini-shai-hulud, выполняющего поиск токенов и учётных данных в текущем окружении. В случае обнаружения токена подключения к каталогу NPM червь автоматически публиковал новые вредоносные релизы для разрабатываемых в текущем окружении пакетов, поражая дерево зависимостей. Таким способом было поражено более 400 NPM-пакетов, использующих пакеты TanStack в числе зависимостей.

Червь размещался в файле router_init.js и активировался при установке поражённого пакета вручную разработчиком или автоматизированно в окружении непрерывной интеграции при помощи команд "npm install", "pnpm install" или "yarn install". После активации червь выполнял поиск в системе токенов к NPM (~/.npmrc), AWS, GCP, Azure, HashiCorp и KubernetesK8s, а также закрытых ключей SSH. Найденные данные отправлялись злоумышленникам через децентрализованный P2P-мессенджер getsession.org.

В черве было предусмотрено совершение деструктивных действий в случае отзыва перехваченного NPM-токена - в системе настраивался периодический запуск скрипта ~/.local/bin/gh-token-monitor.sh, который каждые 60 секунд проверял активность токена через обращение к api.github.com/user и в случае отзыва токена выполнял команду "rm -rf ~/".

  1. Главная ссылка к новости (https://tanstack.com/blog/npm-...)
  2. OpenNews: Анализ конфиденциальных данных, захваченных червём Shai-Hulud 2
  3. OpenNews: При помощи червя Shai-Hulud скомпрометировано 600 NPM-пакетов
  4. OpenNews: Скомпрометирован NPM-пакет axios, имеющий 100 млн загрузок в неделю
  5. OpenNews: Утечка кода инструментария Claude Code из-за забытого в NPM-пакете map-файла
  6. OpenNews: Раскрыты подробности захвата учётных данных сопровождающего NPM-пакет axios
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65432-tanstack
Ключевые слова: tanstack
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Rev (ok), 23:29, 12/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    Какая замечательная и безопасная экосистема у JS-ников!
     
     
  • 2.7, anonymous (??), 23:46, 12/05/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    у каждого разработчика должна быть настроена firejail.
     
     
  • 3.23, Аноним (23), 04:50, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    VScode и Dev контейнеры. Стандарт индустрии, по факту.
     
     
  • 4.27, Аноним (27), 07:42, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > 2026
    > считать мелкософтовские поделки за стандарт
    > пакетик
     
  • 4.34, Сладкая булочка (?), 09:37, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > VScode и Dev контейнеры. Стандарт индустрии, по факту.

    Индустрия с тобой сейчас в одной комнате?

     
     
  • 5.46, Аноним (46), 11:18, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, в одной. Нитакусики с vim и emacs не в счёт.
     
  • 3.56, Аноним (-), 12:45, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.11, Джон Титор (ok), 00:39, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.18, kai3341 (ok), 01:27, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Какая замечательная и безопасная экосистема у JS-ников!

    Иногда лучше жевать, чем говорить. Атака стара как мир. Принципиально уязвимы __все__ пакетные менеджеры, где есть возможность исполнить произвольный код. Ирония в том, что сборка сишных экстеншнов является таким кодом, поэтому постинсталл хуки это жизненная необходимость. Бинпакеты публикуются очень не под все рахитектуры и тем более не под все ОС

     
     
  • 3.28, Аноним (27), 07:44, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • –4 +/
    ой ой, уязвимы все, но почему-то только у жсников проблемы
     
     
  • 4.45, Аноним (45), 11:17, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >ой ой, уязвимы все, но почему-то только у жсников проблемы

    Может быть это связано не с js, а например, с размером и числом юзеров сервиса? Да не, не может такого быть.

     
     
  • 5.50, Аноним (50), 11:39, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Может быть это связано не с js, а например, с размером и числом юзеров сервиса? Да не, не может такого быть.

    С одной стороны да.
    С другой - даже в ненужной недоОСь типа BSD нашли отличный бекдорчик живущий с 2013 года.

    Но тут порадовала оперативность нахождения и устранения.
    Это тебе не ХЗ библиотека, которую обнаружили спустя месяц.

     
  • 3.60, Сладкая булочка (?), 14:00, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> Какая замечательная и безопасная экосистема у JS-ников!
    > Принципиально уязвимы __все__
    > пакетные менеджеры, где есть возможность исполнить произвольный код. Ирония в том,
    > что сборка сишных экстеншнов является таким кодом, поэтому постинсталл хуки это
    > жизненная необходимость. Бинпакеты публикуются очень не под все рахитектуры и тем
    > более не под все ОС

    Никто тебе не мешает собирать в изолированном окружении.

     
  • 2.26, OpenBotNET (ok), 07:12, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это "безпасность" GitHub. Micro$oft срала на безопасность своих пользователей еще начиная с MS DOS. То есть всегда!
     
  • 2.43, Аноним (43), 11:01, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.2, Аноним (2), 23:29, 12/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Это божественно!
     
  • 1.3, Аноним (45), 23:37, 12/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну что начинаем собрание экспертов: кого-то взломали, тут явно виноват джаваскрипт, надо было безопасный раст юзать.
     
     
  • 2.4, S404 (?), 23:41, 12/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    100% виноват Micro$oft, они ведь владеют npm
     
  • 2.8, Аноним83 (?), 00:06, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Такое ощущение что в остальных экосистемах в разляпистыми репозиториями ни чуть не лучше, просто року до них у кого то не дошли.
    Те ничего не мешает в любой лефтпад и/или его сборочные скрипты вставить запуск любого кода.
     
  • 2.12, Джон Титор (ok), 00:41, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • –3 +/
     
     
  • 3.22, 12yoexpert (ok), 04:03, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
     
  • 4.40, Джон Титор (ok), 10:35, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.5, Аноним (5), 23:42, 12/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что делать ? Общий сбор!
     
     
  • 2.6, S404 (?), 23:44, 12/05/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Действовать наперёд, сразу удалить французкий "rm -fr ~/"
     
  • 2.32, Аноним (32), 09:06, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Отвязанный от $язычка менеджер пакетов.
     

  • 1.9, НектоОткудаТо (?), 00:06, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Плата за использование бесплатных публичных сервисов.
    Жаловаться в таких случаях пострадавшие могут только на себя.
    Без злорадства всякого пишу, но и без сожаления.
     
     
  • 2.14, Аноним (-), 01:08, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • +7 +/
     
  • 2.16, Джон Титор (ok), 01:22, 13/05/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.21, 12yoexpert (ok), 03:59, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    согласен, давай будем платить михалкову, а скачивать через госуслуги

    можно ещё эплу с гуглом заставить платить

     
     
  • 3.31, НектоОткудаТо (?), 09:00, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А ещё в огороде бузина растёт, знаете ли)
     

  • 1.13, Джон Титор (ok), 00:53, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Доступ к публикации релизов был получен из-за неверной настройки pull_request_target "Pwn Request" в GitHub Actions (указание маски в настройках привело к запуску pull_request_target для pull-запросов в сторонние форки), отравления кэша GitHub Actions через форк и возможности извлечения OIDC-токена из памяти запущенного runner-процесса (Runner.Worker) через чтение содержимого /proc/<pid>/mem.

    Ну кто ж скажет что виноваты рукожопые программисты из Майкрософт и их менеджеры? Кто ж не так давно вместо давно хорошо настроенной системы добавил какие-то Rules вместо Branches? Тем более рукожопо написав что ваша главная ветка теперь не защищена, туда можно комитить кому угодно если не настроите. А значит и внутри много чего поменяли. Вот боком и вылезло. Главное поспешить, занять рынок. А виноват кто настраивал.

     
  • 1.15, Аноним (15), 01:19, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сиськина опять замели под ковёр. Ща и меня отправят на скамейку пузанов.
     

  • 1.25, Аноним (25), 06:55, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ща ии все найдет и исправит.
     
     
  • 2.55, Аноним (2), 12:40, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Удалит вместе со всеми базами и бэкапами.
     

  • 1.30, Tron is Whistling (?), 08:36, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну и отлично.
     
  • 1.33, Аноним (33), 09:12, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А на название-то стека обратите внимание TanStack ;) Совпалает с фамилией одного известного персонажа.
     

  • 1.35, Сладкая булочка (?), 09:38, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В npm без перемен.
     
  • 1.36, Tron is Whistling (?), 09:46, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ~/ - это ещё по-божески, пожалели.
     
     
  • 2.54, Сладкая булочка (?), 12:36, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Самое ценное в современных системах у пользователей в хомяке. Сиситемные файлы восстановить можно.
     

  • 1.37, FSA (ok), 09:57, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сколько нытья в комментариях. Лучше скажите какие пакеты пострадали.
     
  • 1.38, Аноним (38), 10:02, 13/05/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +1 +/
     
  • 1.39, Аноним (39), 10:08, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > в случае отзыва токена выполнял команду "rm -rf ~/".

    Что-то прямо некрасиво как-то.

     
     
  • 2.48, Аноним (48), 11:34, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Если кто-то не обучаем и не может сесть и почитать пару статей, где будет сказано как делать нужно и как не нужно, то пусть дрессируется на своём собственном опыте.
     

  • 1.44, Аноним (43), 11:10, 13/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В NPM внедрили вредноносный код
    > замечены через 20 минут и блокированы спустя полтора часа

    В ядро линукс внедрили бекдор:
    > Copy Fail
    > 2017 году при внесении оптимизации
    > Dirty Frag
    > проявляется в ядре Linux с января 2017 года, а уязвимость в RxRPC - с июня 2023 года

    Сидящие на опеньке плюсуют коммент:
    "Какая замечательная и безопасная экосистема у JS-ников!"

     
     
  • 2.47, Аноним (46), 11:22, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Всё так. А потом ещё сопротивляются внедрению ИИ для анализа кода ядра.
     
  • 2.49, Аноним (49), 11:38, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >В NPM внедрили вредноносный код
    >В ядро линукс внедрили бекдор

    Ну ты и сравнил! Проектик TanStack на JS и ядро на 40+ млн. строк на С.

    >Сидящие на опеньке плюсуют коммент: "Какая замечательная и безопасная экосистема у JS-ников!"

    И правильно делают.

     
     
  • 3.51, Аноним (50), 11:41, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну ты и сравнил! Проектик TanStack на JS и ядро на 40+ млн. строк на С.

    В ведре сколько тысяч разработчиков и коммитеров?
    Куда смотрели эти тысячи глаз на протяжении кучи лет?
    Сколько миллионов строк кода это автогенерированные дрова?

    >>Сидящие на опеньке плюсуют коммент: "Какая замечательная и безопасная экосистема у JS-ников!"
    > И правильно делают.

    Конечно!
    Им надо сохранять репутацию uдuйотов.


     
     
  • 4.52, Аноним (49), 11:49, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >В ведре сколько тысяч разработчиков и коммитеров?

    Не зависимо от количества конструкторов и сборщиков, сравнивать Боинг-747 с дельтапланом абсолютно не корректно.

    >Конечно!
    >Им надо сохранять репутацию uдuйотов.

    Согласен. Ты своим примером полностью это доказал.

     
     
  • 5.53, Аноним (53), 12:29, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Не зависимо от количества конструкторов и сборщиков, сравнивать Боинг-747 с дельтапланом абсолютно не корректно.

    Конечно.
    Надежность боинга должна быть на несколько порядков выше, чем конструкция дельтаплана.
    Но открывая хотя бы
    lore.kernel.org/linux-cve-announce/
    видно что это далеко не так.

     
  • 5.57, Аноним (2), 12:52, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > сравнивать Боинг-747 с дельтапланом абсолютно не корректно

    Естественно, не корректно. Боинг завалил куда больше народу, чем дельтапланы.

     
     
  • 6.58, Аноним (58), 13:16, 13/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> сравнивать Боинг-747 с дельтапланом абсолютно не корректно
    > Естественно, не корректно. Боинг завалил куда больше народу, чем дельтапланы.

    Ага, а 100% людей пивших воду - умерли (с)
    А теперь посчитай на часы полета и выяснится, что шансов помереть в автомобиле или ОТ гораздо больше.


     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру