Процесс заражения начинается во время установки пакета. Вредоносные пакеты используют хук postinstall в файле package.json для автоматического выполнения локального файла JavaScript — обычно index.js — сразу после распаковки содержимого пакета.
В экосистеме npm обнаружена новая вредоносная кампания, получившая название CanisterWorm. Исследователи Endor Labs и Aikido описывают её как supply-chain worm: после установки заражённого пакета вредоносный код пытается украсть npm-токены разработчика, а затем с их помощью автоматически публикует заражённые версии других пакетов, которыми владеет жертва. Endor Labs пишет о «десятках» вредоносных пакетов, Aikido — как минимум о пакетах в скоупах @EmilGroup, @opengov, а также отдельных пакетах @teale.io/eslint-config, @airtm/uuid-base32 и @pypestream/floating-ui-dom.
Главный механизм заражения довольно типичный для npm-атак: вредоносный код запускается через postinstall сразу после установки пакета. По данным Endor Labs, скрипт ищет токены в .npmrc, /etc/npmrcи переменных окружения вроде NPM_TOKEN, после чего передаёт их в отдельный модуль, который получает список пакетов владельца и публикует новые версии уже с внедрённым вредоносным кодом. То есть заражение может пойти дальше без участия разработчика — за счёт уже украденных учётных данных.
Отдельно исследователи отмечают, что вредонос закрепляется на Linux-системах через пользовательский systemd-сервис. Aikido и Endor Labs приводят одинаковую механику: malware создаёт unit-файл ~/.config/systemd/user/pgmon.service, запускает его через systemctl --user enable/start и маскирует артефакты под что-то, связанное с PostgreSQL — например, pgmon и pglog. Это позволяет переживать перезагрузку и автоматически восстанавливаться после остановки процесса.
Ещё одна важная деталь — инфраструктура управления. По данным Endor Labs и Aikido, CanisterWorm использует Internet Computer Protocol (ICP) как своеобразный «dead drop» для получения адреса следующей полезной нагрузки. В разборе Endor Labs прямо указан ICP endpoint tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io. Исследователи считают это необычным ходом: такая схема затрудняет обычное принудительное отключение через жалобы на домен или хостинг, потому что управляющая точка вынесена в децентрализованную инфраструктуру.
По состоянию на публикации исследователей масштабы кампании оценивались по-разному. Endor Labs перечисляет 50+ затронутых пакетов в своём разборе, а Mend пишет, что затронуто более 50 пакетов в нескольких npm-скоупах. При этом Aikido зафиксировала начало волны 20 марта 2026 года в 20:45 UTC и отдельно отметила, что злоумышленники успели скомпрометировать десятки пакетов за очень короткое время.
Есть и ещё один неприятный момент: хотя постоянный бэкдор ориентирован на Linux, кража npm-токенов и дальнейшее распространение затрагивают не только Linux-машины. Mend отдельно подчёркивает, что токены, найденные на macOS и Windows, тоже могут быть украдены и использованы для публикации заражённых пакетов от имени жертвы. Иными словами, даже если полноценное закрепление не сработает, компрометация цепочки поставки всё равно возможна.
Исследователи также связывают CanisterWorm с недавним инцидентом вокруг Trivy. По официальному сообщению maintainers Trivy, 19 марта 2026 года злоумышленник с использованием скомпрометированных учётных данных опубликовал вредоносные версии trivy, trivy-action и setup-trivy. Snyk уточняет, что атакующие force-push’нули вредоносный код в 75 из 76 тегов aquasecurity/trivy-action, а окно воздействия длилось примерно 12 часов. Mend прямо пишет, что украденные в ходе атаки на Trivy npm-токены стали стартовой площадкой для последующего распространения CanisterWorm.
Разработчикам и DevSecOps-командам важно помнить, что риск не ограничивается одним «плохим» пакетом: проблема в том, что заражённая зависимость может превратить машину разработчика или CI/CD runner в точку дальнейшего распространения по всей цепочке публикации. Из-за этого компрометация одного токена способна быстро выйти за пределы одного репозитория или одной команды.
CanisterWorm опасен не только тем, что ворует npm-токены, а тем, что превращает их в механизм автоматического заражения других пакетов. Для npm-экосистемы это полноценная цепная supply-chain атака.
Есть новость? Станьте автором.
Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.