VMTech
Обсудить проект

Червь из keyv@6.0.0 заразил сотни npm-пакетов и оставил хуки в редакторах

Червь из keyv@6.0.0 заразил сотни npm-пакетов и оставил хуки в редакторах

Червь для кражи учётных данных, впервые подтверждённый в keyv@6.0.0, 4 августа 2026 года вышел за пределы пространств имён Keyv и Cacheable. SafeDep проверила 353 вредоносные версии 79 пакетов npm. Её мониторинг показывал более широкий охват — 442 версии 353 пакетов, а Aikido сообщила как минимум о 868 пакетах и 1381 версии. Последние две оценки не удалось независимо подтвердить по полному публичному списку.

Количество вредоносных артефактов не равно числу заражённых машин. Чтобы определить реальный ущерб, необходимо установить точную версию зависимости на конкретной системе и выяснить, выполнился ли её lifecycle-скрипт.

Как запускался и распространялся червь

В keyv@6.0.0 появился preinstall-вызов node setup.mjs, а в пакет вошли файлы setup.mjs и Math_Symbol.js. Скомпилированный код библиотеки при этом не изменился. Первый этап проверял наличие Bun, при необходимости загружал версию 1.3.13 из официальных релизов GitHub и передавал управление скомпилированному файлу размером 727 680 байт.

SafeDep установила, что модуль собирал данные GitHub, npm, облачных платформ, Vault, Kubernetes, баз данных и закрытых ключей, а также читал память раннеров GitHub Actions. Socket обнаружила код для изменения, повышения версии и повторной публикации пакетов, доступных с похищенной учётной записью npm.

Эта кампания показывает, как доверие к легитимной инфраструктуре разработки помогает вредоносному коду проходить через легитимные процессы сборки и подписи. Релиз Keyv имел действительную OIDC- и SLSA-аттестацию, поскольку был создан штатным процессом GitHub Actions. Аттестация верно описывала сборку, но не подтверждала безопасность поступившего в неё исходного кода.

Отдельные пути через Claude Code и VS Code

В репозитории сохранились ещё два механизма исполнения. Файл .claude/settings.json содержал хук SessionStart, вызывавший .vscode/setup.mjs. В .vscode/tasks.json была задача Environment Setup с параметром runOn: folderOpen, которая запускала .claude/setup.mjs.

Эти хуки не выполняются безусловно во всех средах. VS Code по умолчанию блокирует автоматические задачи в недоверенном рабочем пространстве и запрашивает разрешение. Claude Code применяет механизм доверия к проектным настройкам из репозитория. На момент проверки оба файла оставались в основной ветке.

Что проверять компаниям

Ориентироваться на текущий тег latest недостаточно: реестр быстро менялся, и для ряда пакетов уже были возвращены прежние релизы. Проверка должна учитывать точные имена и разрешённые версии из lock-файлов. Блокировка всего пространства имён тоже ненадёжна: SafeDep отмечала, что адаптеры @keyv/* и ветка Keyv 5.x оставались чистыми.

Socket рекомендует считать раскрытыми учётные данные любой рабочей станции или CI-раннера, где выполнилась заражённая версия. SafeDep советует сначала удалить установленный вредоносом обработчик отзыва учётных данных и только потом менять токены и ключи: отзыв служит его триггером и может запустить локальный код злоумышленника.

npm 12 по умолчанию блокирует неодобренные lifecycle-скрипты зависимостей, однако более ранние клиенты и другие способы установки, разрешающие такие сценарии, остаются уязвимыми. Практический приоритет для бизнеса — сверить lock-файлы и журналы CI, определить факт исполнения скрипта, безопасно удалить обработчик и лишь затем провести контролируемую ротацию всех затронутых секретов.

#npmsecurity#supplychain#devsecops#malware
Открытая аналитика
На сайте 1 просмотров
мин чтения 4 05.08.2026
Instagram

Червь из keyv@6.0.0 заразил сотни npm-пакетов и оставил хуки в редакторах

Открыть публикацию в Instagram ↗