Червь ChainDrop атакует npm-реестр: опубликованы вредоносные версии десятков пакетов

Атака на цепочку поставок NPM

npm - крупнейший реестр программных компонентов для языка JavaScript. Эту платформу используют миллионы разработчиков по всему миру, и практически каждый веб-проект так или иначе зависит от пакетов из этого реестра. 4 августа 2026 года в экосистеме npm началась масштабная атака. Самораспространяющийся червь, получивший название ChainDrop, публикует изменённые версии пакетов от имени их легитимных авторов. Вредоносные релизы содержат скрытый код, который выполняется при установке и открывает злоумышленникам доступ к системам жертв.

Описание

Атака развивается необычайно быстро. Червь автоматически использует украденные учётные данные разработчиков, поэтому новые заражённые версии появляются в реестре каждые несколько минут. Затронуты аккаунты, принадлежащие разным командам, компаниям и индивидуальным авторам. Это указывает на то, что злоумышленники собрали значительный объём токенов доступа. Токены представляют собой цифровые ключи, которые позволяют вносить изменения в пакеты без ввода пароля. Похитить их можно при заражении компьютера разработчика или сборочного сервера, где такие ключи хранятся.

По данным StepSecurity OSS Security, всплеск вредоносных публикаций зафиксирован 4 августа в период с 09:50 до 10:50 UTC. Только за этот час выявлено более пятидесяти пакетов с критическими признаками компрометации. Список постоянно пополняется, поскольку кампания продолжается в реальном времени. Многие из затронутых пакетов широко используются в коммерческих продуктах, что существенно повышает риск масштабного ущерба. Ситуация осложняется тем, что часть пакетов входит в состав популярных фреймворков и инструментов разработки.

Механизм заражения выглядит следующим образом. После публикации вредоносной версии пакета при его установке автоматически запускается дополнительный сценарий. Этот сценарий скрытно связывается с управляющим сервером и загружает основную вредоносную программу. Затем программа выполняется на компьютере пользователя или на сборочном сервере. Жертва не замечает ничего подозрительного, поскольку установка проходит штатно. В результате злоумышленники получают полный контроль над заражённой системой. Они могут просматривать файлы, перехватывать нажатия клавиш и похищать данные.

Особую опасность представляет воздействие на системы непрерывной интеграции и доставки (CI/CD). Эти серверы автоматически собирают, тестируют и разворачивают приложения, поэтому они содержат множество секретов. К ним относятся пароли базы данных, ключи шифрования и токены для публикации новых версий пакетов. Если червь проникает в такую среду, он может похитить все эти данные. Кроме того, заражённые компоненты попадают в артефакты сборки и могут распространяться дальше по цепочке поставок. Именно поэтому атака носит самораспространяющийся характер: каждый новый заражённый сервер становится источником дополнительных токенов и новых вредоносных публикаций.

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

Организациям, использующим npm, следует немедленно принять меры. В первую очередь нужно проверить файлы блокировки зависимостей, которые фиксируют точные версии используемых пакетов. Если в них обнаружены пакеты из списка, необходимо считать окружение скомпрометированным. Прежде всего следует отозвать и перевыпустить все ключи и токены, которые могли находиться на затронутых машинах и серверах. Также требуется проверить конфигурацию систем CI/CD на наличие посторонних процессов и изменений. После этого нужно откатить версии зависимостей до предыдущих известных безопасных и дождаться чистых релизов от мейнтейнеров.

Предотвратить подобные атаки помогут базовые, но важные меры безопасности. Для учётных записей разработчиков необходимо включить многофакторную аутентификацию. Права доступа следует ограничивать только теми действиями, которые необходимы для работы. Например, нельзя выдавать токены с правами на публикацию пакетов всем сотрудникам. Кроме того, полезно настроить автоматический мониторинг публикаций используемых пакетов. При появлении новой версии система может автоматически проверять её репутацию и наличие известных индикаторов вредоносности. Важно также регулярно проводить аудит состава программного обеспечения и своевременно обновлять инструменты безопасности.

Расследование инцидента продолжается. Аналитики изучают инфраструктуру управления червём и механизм утечки учётных данных. По предварительным данным, для передачи команд злоумышленники используют блокчейн-транзакции, что затрудняет отслеживание и блокировку серверов управления. Ожидается, что список затронутых пакетов будет расширен, а технические подробности появятся позднее. До завершения расследования любые обновления зависимостей следует выполнять с повышенной осторожностью. Своевременная ротация секретов и пристальное внимание к изменениям в используемых библиотеках помогут значительно снизить потенциальный ущерб от этой атаки.

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

Package

  • @arv-bedrock/auth 1.1.7
  • @arv-bedrock/auth-admin 1.0.2
  • @arv-bedrock/auth-sso 1.6.1
  • @arv-bedrock/auth-sso-backend 1.7.1
  • @arv-bedrock/logger 1.7.1
  • @cacheable/memory 2.2.1
  • @cacheable/net 2.1.1
  • @cacheable/node-cache 3.1.2
  • @cacheable/utils 2.5.1
  • @deliveroo/determinator 0.2.1
  • @deliveroo/reevent 1.0.1
  • @hubsync/web-sdk-react 6.3.7
  • @onereach/get-version-data 3.1.2
  • @onereach/idw-sdk 0.1.2
  • @onereach/idw-ui-components 0.1.2
  • @onereach/orest-cli 2.4.1
  • @onereach/or-file-uploader-next 0.0.8
  • @onereach/phonenumber-interpreter 0.0.18
  • @onereach/si-checkbox-group 0.3.5
  • @onereach/si-datepicker 0.4.5
  • @onereach/ssml-editor 2.0.12
  • @onereach/ui-components 27.0.2
  • @ornikar/eslint-config 24.0.1
  • @ornikar/eslint-config-babel 24.0.1
  • @ornikar/eslint-plugin-neverthrow 1.3.1
  • @ornikar/graphql-config 1.1.1
  • @ornikar/jest-config-react 18.0.2
  • @ornikar/react-modern-calendar-datepicker 3.2.1
  • @ornikar/react-native-svg-transformer 1.0.6
  • @ornikar/repo-config-react-legacy-css 15.1.2
  • @ornikar/stylelint-config 14.0.3
  • @or-sdk/deployments 2.1.5
  • @or-sdk/graph 1.10.5
  • @or-sdk/idw-public 1.6.6
  • @or-sdk/qna 3.4.2
  • @picsart/ai-sdk 3.32.2
  • @qlik/dts-bundler 2.0.3
  • @qlik/sprout-gesture 0.0.13
  • @servicetitan/acquisition-functions 5.22.1
  • @servicetitan/anvil2-ext-charts 0.2.4
  • @servicetitan/confirm 41.3.1
  • @servicetitan/eslint-plugin-mobx-6 12.8.15
  • @servicetitan/feature-spotlight 3.9.1
  • @servicetitan/kendo-theme 0.0.27
  • @servicetitan/marketing-direct-mail-components 20.1.1
  • @servicetitan/standalone-root 1.11.3
  • @servicetitan/startup-jest 2.2.1
  • @servicetitan/stylelint-config 38.1.1
  • @servicetitan/titan-chatbot-api 9.0.1
  • @servicetitan/titan-chatbot-ui-cypress 9.0.1
  • cacheable 2.5.1
  • cacheable-request 13.0.20
  • cache-manager 7.2.10
  • ecto 5.0.1
  • file-entry-cache 11.1.6
  • flat-cache 6.1.24
  • pob-test-typescript-package-in-monorepo 4.2.1
  • tslint-folder-schema 1.0.6

Комментарии: 0