Взломы npm в 2026: новые угрозы безопасности JavaScript-пакетов и как защититься
-
В 2026 году взломы npm стали реальной головной болью для разработчиков JavaScript. Злоумышленники используют уязвимости в менеджерах пакетов, чтобы красть секреты, ключи и распространять вредоносный код. Эта статья разберет свежие угрозы вроде PackageGate и SANDWORM_MODE, покажет примеры атак и даст практические шаги по защите.
Знание этих проблем поможет избежать компрометации проектов. Вы узнаете, как обходить флаги вроде --ignore-scripts и почему npm не всегда патчит дыры. Простые меры безопасности сохранят ваши CI/CD-пайплайны и токены в целости.
PackageGate: шесть zero-day уязвимостей в npm и не только
PackageGate - это скандал января 2026 года, когда нашли шесть zero-day дыр в npm, pnpm, vlt и Bun. Они позволяют обходить флаг --ignore-scripts через инъекцию .npmrc в git-зависимостях. npm отказался патчить, заявив, что пользователи сами отвечают за пакеты. Это значит, если вы полагались на этот флаг как на щит, в нем огромная дыра.
Другие менеджеры среагировали быстро: pnpm выпустил фиксы под CVE-2025-69263 и CVE-2025-69264, vlt закрыл path traversal, Bun поправил доверие к 366 пакетам. Атаки работают так: вредоносный код лежит на сервере атакующего, сканеры его не видят, lockfile не спасает. Уже видели PoC с reverse shell. Теперь перейдем к деталям.
- Байпас --ignore-scripts в npm: Злоумышленник пихает .npmrc в git-репозиторий зависимости. Скрипты prepare/postinstall запускаются несмотря на флаг. npm закрыл отчет, мол, ‘так задумано’.
- Аналогичные дыры в pnpm: Скрипты git-зависимостей игнорируют allowlist onlyBuiltDependencies. Фикс вышел в v10, но проверяйте версии.
- Path traversal в vlt: Регулярки позволяют выйти за границы пакета. Установлен патч.
- Доверие в Bun: 366 пакетов доверены по умолчанию. Теперь проверяется строже.
Менеджер Уязвимость Статус фикса CVE npm .npmrc инъекция Не патчена Нет pnpm Git-скрипты Патч CVE-2025-69263, CVE-2025-69264 vlt Path traversal Патч Нет Bun Доверие пакетов Патч Нет SANDWORM_MODE и другие вредоносные пакеты
Кампания SANDWORM_MODE использует 19 пакетов с typosquatting, чтобы красть крипто-ключи, CI-секреты и API-ключи AI. Это эволюция Shai-Hulud: код крадет токены npm/GitHub, распространяется по SSH и даже инжектит промпты в AI-ассистенты вроде Ollama с DeepSeek. Пакеты от паблишера official334 и javaorg скачали миллионы раз.
Полиморфный движок переименовывает переменные и шифрует строки для evasии. Есть флаги для будущих атак. Похожий ‘ambar-src’ набрал 50 тысяч скачиваний за дни, используя open-source malware и preinstall-скрипты. Такие атаки компрометируют систему без импорта кода. Локальные уязвимости вроде CVE-2026-0775 позволяют эскалацию привилегий через неверные права на модули.
- Кража секретов: Пакеты сливают env-переменные, токены и ключи в GitHub API или DNS.
- Самораспространение: Использует украденные аккаунты для публикации новых пакетов. Проверяйте package.json и workflows.
- Evasion-техники: Полиморфизм, hook-персистентность, MCP-инъекция. Удалите подозрительные пакеты срочно.
- Примеры пакетов: official334/, javaorg/, ambar-src (typosquat ember-source).
CVE в npm: эскалация привилегий и path traversal
CVE-2026-0775 - локальная эскалация в npm CLI из-за неверных прав на модули. Атакующий с низкими правами кладет вредоносный модуль в незащищенную папку, и при запуске от рута выполняется произвольный код. Требует локального доступа, но эффект высокий: full compromise.
Похожие CVE-2026-23890 и CVE-2026-24131 в pnpm позволяют path traversal через ‘directories’ в package.json, chmod’уя файлы вне пакета. Атакующий выходит за sandbox. Это показывает, что даже CLI-уровень небезопасен. Теперь меры защиты.
CVE Описание Вектор Сложность CVE-2026-0775 Privilege escalation в npm CLI Локальный Высокая CVE-2026-23890 Path traversal в pnpm Remote package Средняя CVE-2026-24131 Директории escape в pnpm Remote package Средняя Как защититься от взломов npm
Переходите на строгие политики: используйте lockfile, но проверяйте git-зависимости вручную. Внедряйте socket.dev или аналогичные сканеры, которые ловят remote payloads. Всегда запускайте npm с --ignore-scripts, но добавьте .npmrc-блокировку и audit.
Альтернативы: Bun или pnpm с их свежими патчами надежнее npm сейчас. Ротируйте токены после подозрений, мониторьте workflows. Для CI/CD - контейнеризация install’ов и read-only реестры. Регулярный аудит package.json спасет от 90% угроз.
- Сканеры: Socket, Koi Security - ловят git-дипы и worms.
- Флаги: npm ci --ignore-scripts --audit, но знайте о байпасах.
- Мониторинг: Слеьте скачивания, проверяйте издателей на npmjs.com.
- Ротация: Меняйте все секреты после install подозрительного.
- Альтернативы: pnpm/Bun с ‘scripts disabled by default’.
Что еще ждет npm-экосистему
В 2026 взломы эволюционируют: ждите больше полиморфизма и AI-интеграций в malware. npm под Microsoft, видимо, меняет политику, но дыры остаются. Стоит поэкспериментировать с приватными реестриями или Verdaccio.
Фокус на lockfile-интегрированных сканерах поможет, но полная защита - в образовании команды. Следите за обновлениями CVE и отзывами вроде PackageGate.
© 2024 - 2026 ExLends, Inc. Все права защищены.