В современном цифровом мире программное обеспечение пользуется широкой популярностью, и экосистема npm является ключевым элементом в разработке JavaScript-приложений. Однако именно эта инфраструктура оказалась в центре одной из самых опасных кибератак последних лет. В сентябре 2025 года эксперты по кибербезопасности выявили масштабную заражённость более 40 npm-пакетов вредоносным скриптом bundle.js, целью которого была кража конфиденциальных данных разработчиков и распространение вредоносного ПО по цепочке поставок. Атака была детально исследована компанией Socket, занимающейся безопасностью цепочек поставок программного обеспечения.
Вредоносный код был внедрён в так называемую функцию NpmModule.updatePackage, которая загружала пакет в формате tarball, модифицировала его package.json и вставляла в архив локальный скрипт bundle.js. После этого изменённый пакет автоматически публиковался, что позволило заражать все последующие зависимости и проекты, которые использовали эти пакеты.
Главная цель атаки заключалась в поиске секретных ключей и токенов разработчиков, в том числе таких как GITHUB_TOKEN, NPM_TOKEN, AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY. Для возникновения этой активности использовался легитимный инструмент TruffleHog, используемый для сканирования репозиториев в поисках секретов. Однако в данном случае его злоупотребление позволило злоумышленникам автоматически сканировать зараженные устройства на наличие уязвимых данных и отправлять их на внешний сервер, контролируемый хакерами. Особенностью вредоносного кода было его кроссплатформенное влияние - он одинаково эффективно работал как в операционных системах Windows, так и Linux. Такая универсальность значительно увеличила вероятность успешного внедрения и распространения угрозы.
После расследования были выявлены десятки популярных npm-пакетов, пострадавших от этой атаки, включая angulartics2, различные пакеты из пространства имён @ctrl, @nativescript-community, а также инструменты для работы с React и Ember. Вредоносный скрипт bundle.js не только сканировал системы на наличие конфиденциальных данных, но и использовал полученные токены для создания вредоносных рабочих потоков GitHub Actions. Эти воркфлоу запускались в автоматическом режиме и обеспечивали постоянную кражу данных, даже если исходная инфекция была удалена с компьютера разработчика. При этом создавались специальные webhook-ссылки, через которые похищенная информация передавалась злоумышленникам.
Эксперты настоятельно рекомендуют всем разработчикам проверить наличие заражённых пакетов в своих проектах, а также обновить или заменить затронутые версии. Помимо этого необходимо срочно менять все токены npm, GitHub и прочие учетные данные, которые могли быть скомпрометированы. Длительное использование взломанных пакетов и токенов может привести к дальнейшему распространению вредоносного ПО и масштабным утечкам данных. Анализ хода атаки показал, что вредоносный код ведёт себя как настоящий червь, автоматически распространяющий себя по цепочке зависимостей пострадавших npm-пакетов. Каждый раз, когда разработчик публикует новую версию заражённого пакета, вредоносный код внедряется во все остальные пакеты, к которым у него есть доступ.
Это создаёт эффект лавины - за короткий промежуток времени одна заражённая точка может превратиться в сотни или даже тысячи уязвимых модулей по всему миру. Среди пострадавших оказались также пакеты, публикуемые от имени известных компаний, например, аккаунт crowdstrike-publisher был использован для распространения множества заражённых библиотек. Несмотря на то, что CrowdStrike заявил, что их основная платформа и сенсоры не пострадали, инцидент подчёркивает, насколько уязвимы современные системы поставок программного обеспечения и как важно оперативно реагировать на такие угрозы. Параллельно с выявлением основного вредоносного ПО исследователи обратили внимание на так называемую кампанию "Shai-Hulud", которая, по предположениям, является первой в мире подобной атакой-"червём" с саморазмножающимся механизмом и возможностью похищать облачные токены. Началом атаки считается скомпрометированный пакет rxnt-authentication, опубликованный в npm 14 сентября 2025 года.
Отсюда же берёт начало цепочка заражения многих связанных проектов и пакетов. Кроме заражённых пакетов, в ходе расследования были обнаружены скомпрометированные аккаунты GitHub, где злоумышленники создали репозитории с инфицированными данными и скрытую информацию. В центральных узлах этой атаки оказались пользователи с ограниченной безопасностью своих аккаунтов, что позволило хакерам получить доступ и внедрять вредоносные изменения в проекты автоматически. Интересной деталью стало сходство с недавним инцидентом, получившим название s1ngularity, который атаковал экосистему nx build system. Органы кибербезопасности видят в этих событиях тенденцию к развитию всё более автоматизированных и масштабных атак на цепочки поставок - именно в такой инфраструктуре заложена уязвимость, позволяющая быстро заразить большое количество проектов.
Согласно экспертам, решение проблемы требует комплексного подхода. Во-первых, необходимо повышать осведомлённость разработчиков о важности контроля и отказа от использования небезопасных ключей и токенов. Во-вторых, следует внедрять строгие проверки и аудиты репозиториев и npm-пакетов на предмет присутствия вредоносного кода. И, наконец, важна развитая инфраструктура мониторинга, которая позволит оперативно выявлять подозрительную активность и нейтрализовать её на корню. Кроме технических мер, ситуация подчёркивает важность грамотной работы с правами доступа.
Минимизация числа тех, кто может публиковать и модифицировать пакеты, а также регулярная смена токенов и паролей помогут остановить распространение червей в будущих атаках. К сожалению, помимо технических уязвимостей самих пакетов, участились случаи фишинговых атак на разработчиков и пользователей. Так, представители Rust Security Response Working Group предупредили о фишинговой кампании с доменом, имитирующим официальный rustfoundation.dev, где злоумышленники пытались выжать из жертв данные от входа в системы. Это показывает, как многообразен и изощрён сейчас арсенал киберпреступников, и насколько важно оставаться бдительными.
В итоге событие с заражением npm-пакетов bundle.js открывает глаза всему сообществу на критическую необходимость обеспечивать доверие и безопасность цепочек поставок при разработке программного обеспечения. Угроза распространяется по всей экосистеме - от индивидуальных разработчиков до крупных компаний. Коллаборация, постоянное обучение и использование современных средств безопасности - вот основные инструменты, которые помогут успешно противостоять подобным атакам в будущем. Пользователям npm рекомендуется проверить версии используемых пакетов и немедленно обновиться до безопасных релизов, а разработчикам - проводить всесторонний аудит процессов публикации и обращать особое внимание на безопасность своих учетных данных.
Только слаженная работа всех участников экосистемы позволит существенно снизить риски и предотвратить распространение вредоносных цепочек в будущем. .