The OpenNET Project / Index page

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

Самораспространяющийся червь поразил 187 пакетов в NPM

17.09.2025 08:45

Атака на сопровождающих пакеты в репозитории NPM перешла на новый уровень. В дополнение к использованию вредоносного ПО для перехвата платежей и конфиденциальной информации атакующие перешли к внедрению в скомпрометированные пакеты червя для автоматизации подстановки вредоносного ПО в зависимости. Применение червя зафиксировано после компрометации NPM-пакета @ctrl/tinycolor, имеющего 2.2 млн еженедельных загрузок и задействованного в качестве прямой зависимости в 964 пакетах. В результате активности червя атака охватила 187 пакетов, для которых были сформированы вредоносные выпуски (477 вредоносных релизов).

В ходе новой атаки после получения параметров учётной записи сопровождающего в результате фишинга, атакующие публикуют релиз пакета с червём, который активируется при установке скомпрометированного пакета в числе зависимостей. После активации червь осуществляет поиск учётных данных в текущем окружении, загружая и запуская утилиту TruffleHog. В случае обнаружения токена подключения к каталогу NPM червь автоматически публикует новый вредоносный релиз и по цепочке поражает дерево зависимостей. Помимо токена доступа к NPM червь сохраняет ключи доступа к GitHub и облачным сервисам AWS, Azure и GCP (Google Cloud Platform), а также другие конфиденциальные данные, которые способен обнаружить сканер TruffleHog.

Вредоносные релизы формируются для 20 наиболее популярных пакетов, к которым имеет доступ найденный NPM-токен. Функциональность публикации релиза реализована в форме функции NpmModule.updatePackage, которая загружает исходный архив пакета, изменяет номер версии и добавляет postinstall-хук в файл package.json, подставляет обработчик bundle.js, переупаковывает пакет и публикует его. Поддерживается работа в Linux и macOS.

Червю присвоено кодовое имя Shai-Hulud (гигантский червь, упоминаемый в романе Дюна). Найденные в системе учётные данные размещаются в GitHub через создание репозиториев с именем Shai-Hulud (например, "B611/Shai-Hulud"), а также в закодированном виде отражаются в логах GitHub Actions. В создаваемом репозитории размещается файл data.json, в котором присутствует строка с закодированной методом base64 информацией о системе, переменных окружения и перехваченных ключах доступа. В CI на базе GitHub для передачи информации на внешний хост червь создаёт обработчик GitHub Actions (.github/workflows/shai-hulud-workflow.yml). Судя по всему, атака не ограничивается упомянутыми 187 пакетами, так как на GitHub продолжают появляться новые репозитории с именем Shai-Hulud и файлом data.json.

Среди прочего, в результате активности червя поражёнными оказались 25 пакетов компании CrowdStrike, развивающей инструменты для защиты от атак через зависимости (Supply Chain). По заявлению CrowdStrike скомпрометированные пакеты не использовались в платформе Falcon и атака не распространилась на клиентов. Также стало известно, что прошлая волна публикации вредоносных релизов в NPM, осуществлявшаяся без червя, затронула проект gemini-cli, развиваемый компанией Google.

  1. Главная ссылка к новости (https://krebsonsecurity.com/20...)
  2. OpenNews: Атакующие получили контроль над NPM-пакетами проекта DuckDB и опубликовали вредоносные выпуски
  3. OpenNews: Скомпрометированы 18 NPM-пакетов, насчитывающих более 2 миллиардов загрузок в неделю
  4. OpenNews: NPM-пакет Stylus был по ошибке заблокирован из-за подозрений в наличии вредоносного кода
  5. OpenNews: Фишинг позволил получить контроль над несколькими популярными NPM-пакетами
  6. OpenNews: Злоумышленники смогли внедрить бэкдор в NPM-пакет от разработчиков криптовалюты XRP
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63894-npm
Ключевые слова: npm, attack, worm
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (24) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:27, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > червь поразил 187 пакетов в NPM

    Не может быть! Никогда такого не было!

     
     
  • 2.12, Жироватт (ok), 10:14, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И вот опять!
    Но на этот раз не криптостиллер и не майнер - уже что-то новое
     
  • 2.18, Аноним (18), 11:52, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Дежурная шутка. Уже не смешно.
     

  • 1.2, Аноним (-), 09:47, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    As of September 13, 2025, a specific count from "all-the-package-repos" indicates a total of 3,583,991 packages.

    Из них червь поразил ЦЕЛЫХ 187 пакетов. Просто невероятно!

     
     
  • 2.4, ptr (ok), 09:59, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > червь поразил

    Как раз сколько он поразил неизвестно. Выявлено пораженных 187 пакетов. Так как червю пару недель от силы и для поражения пакета необходимо, чтобы его сопровождающий не только подцепил червя, но и запушил изменения, то это число выглядит совсем иначе.

    > total of 3,583,991 packages

    Подозреваю, что из этих пакетов подавляющее большинство не обновлялись годами, а уже за последние пару недель из них обновлялись несколько сотен.

     
     
  • 3.24, Аноним (24), 12:00, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А как они выявляют заражение?
    Сканируют каждый раз вручную весь репозитарий антивирусом?
     
  • 2.6, Аноним (6), 10:04, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну да учитывая что даже самый захудалый проектик способен подтянуть десятки тысяч зависимостей (зависимостей зависимостей n+1). То шанс вляпаться в зараженный пакет, достаточно большой.
     

  • 1.3, Аноним (3), 09:56, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Среди прочего, в результате активности червя поражёнными оказались 25 пакетов компании CrowdStrike, развивающей инструменты для защиты от атак через зависимости

    Невероятно

     
  • 1.5, Аноним (5), 10:04, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    JS-приматов не жаль
     
     
  • 2.9, Аноним (6), 10:07, 17/09/2025 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 2.17, penetrator (?), 11:45, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    проблема в том, что бандлить JS для фронта приходится через NPM

    и проходится тащить нодовскую дичь в проект из бандлинга и минификации

     

  • 1.7, Аноним (7), 10:05, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Автоматизацию теперь червем называют?
     
     
  • 2.19, Аноним (19), 11:55, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Автоматизация распространения вредоноса - да.

    пс: очередной неруззкий чебурашка.

     

  • 1.8, Xo (?), 10:05, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Жесть, вы чё такие дырявые то? Опять npm пакеты...
     
     
  • 2.22, Аноним (24), 11:58, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    не прошло и месяца с последнего взлома реп NPM...
     

  • 1.10, freehck (ok), 10:13, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > В ходе новой атаки после получения параметров учётной записи сопровождающего в ретзультате фишинга, атакующие публикуют релиз пакета с червём, который активируется при установке скомпрометированного пакета в числе зависимостей. После активации червь осуществляет поиск учётных данных в текущем окружении, загружая и запуская утилиту TruffleHog. В случае обнаружения токена подключения к каталогу NPM червь автоматически публикует новый вредоносный релиз и по цепочке поражает дерево зависимостей. Помимо токена доступа к NPM червь сохраняет ключи доступа к GitHub и облачным сервисам AWS, Azure и GCP (Google Cloud Platform), а также другие конфиденциальные данные, которые способен обнаружить сканер TruffleHog.

    Какие молодцы! Нет, ну серьёзно, они реально озаботились тем, чтобы подставлять зловреда как можно незаметнее: мало того, что всего-то лишь добавляют строчку в список зависимостей, коих в package.json и без того немало, так ещё и делают валидные релизы.

     
  • 1.11, Аноним (11), 10:13, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Все почему? А потому что в JS принято обновлять все npm в слепую. Так как там тысячи пакетов v0.x.x с такими же зависимостями, обновляющиеся каждый день по нескольку раз.

    Появление червя был лишь вопросом времени.

     
  • 1.13, 12yoexpert (ok), 10:42, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    красивое
     
     
  • 2.14, пох. (?), 11:11, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, а говорили - "язык плохой"!
     

  • 1.15, Аноним (15), 11:13, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мне вот реально интересно. А кто то этим пользуется? Ибо чето как то стремно становится за всякие гос. сервисы. Вчера например как раз столкнулся с тем, что страничка одного гос. сайта на React грузила при каждом чихе браузер на 100% секунды на 3. Но вроде проверил ее на спец. сайтах и ничего не нашло. Просто кривые руки?
     
  • 1.16, SKZ (?), 11:32, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А хоть в жабаскрипт что-нибудь компилирует?
     
     
  • 2.21, Аноним (24), 11:56, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Только корпы и неумехи, которым жалко показывать что же они там навасянокодили.
     

  • 1.20, Аноним (24), 11:55, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как опять?
    Че они не пристрелят этот завирусованный НПМ, ну или сопровождающих?
     
  • 1.23, Аноним (23), 11:59, 17/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это уже серьезно - стоит задуматься от отказа от подобных моделей растпространения пакетов.
    Возможно сам червь и не серьезнн, но вот тенденция - сколько уже новостей было. Ощущение такое, что там у них дуршлаг, ибо из раза в раз повторяется одно и то же.
     

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



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

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