Обычная сборка проекта превратилась в лотерею с опасным призом.
Исследователи из компании Socket выявили более 60 вредоносных пакетов в реестре npm, которые автоматически собирают данные с устройств пользователей — имена хостов, IP-адреса, DNS-серверы и каталоги пользователей. Вся информация отправляется злоумышленникам через Discord‑вебхук. Библиотеки публиковались с трёх аккаунтов, уже удалённых с платформы, и в общей сложности были загружены более 3000 раз.
Установка происходит с внедрением скрипта, активирующегося во время выполнения npm install. Он работает на Windows, macOS и Linux, проверяя при этом наличие виртуализированной среды от Amazon, Google и других облаков . Система сборки, CI/CD и любые рабочие станции с такими пакетами могут быть использованы как точки разведки для последующих атак.
Параллельно специалисты зафиксировали ещё одну волну атак: 8 npm-пакетов, маскирующихся под полезные модули для React, Vue.js, Vite и Quill Editor, на деле запускают разрушительный код — удаляют файлы проектов, повреждают методы JavaScript и портят данные в браузерном хранилище. Некоторые из них срабатывают при первом вызове функций и даже способны выключать систему в зависимости от времени.
Авторы этой атаки активно используют технику маскировки — часть опубликованных ими пакетов действительно работают как заявлено, что помогает скрыть вредоносную активность. Отслеженная группа действует под псевдонимом xuxingfeng, и часть вредоносных библиотек была размещена ещё в 2023 году.
Таким образом, злоумышленники всё чаще применяют приёмы, характерные для социальной инженерии : создают видимость активности, ведут якобы полезную разработку, а вредонос закладывают незаметно, между строк. Это не только усложняет выявление таких пакетов, но и создаёт атмосферу неопределённости в экосистеме open source, где доверие к инструментам становится уязвимостью.
На фоне подобных инцидентов становится очевидно: автоматизация сборки требует не меньше внимания, чем сам код. Без тщательной проверки любое действие может обернуться троянским конём.