Mastodon Mastodon Mastodon Mastodon

npm 12 заблокирует выполнение скриптов при установке — как подготовиться к критическим изменениям

Фото автора

CyberSecureFox Editorial Team

Опубликовано:

GitHub анонсировал набор критических изменений в npm версии 12, главное из которых — отключение выполнения install-скриптов зависимостей по умолчанию. Изменение затрагивает всех разработчиков, использующих Node.js-экосистему: команда npm install больше не будет автоматически запускать скрипты preinstall, install и postinstall из зависимостей без явного одобрения. Релиз npm 12 запланирован на следующий месяц. Для подготовки GitHub рекомендует обновиться до npm 11.16.0 или новее и использовать команду npm approve-scripts для явного одобрения доверенных пакетов.

Что именно меняется

GitHub охарактеризовал скрипты жизненного цикла, выполняемые при установке, как «крупнейшую поверхность выполнения кода во всей экосистеме npm». Проблема в том, что npm install запускает скрипты из каждой транзитивной зависимости — а значит, единственный скомпрометированный пакет в любом месте дерева зависимостей способен выполнить произвольный код на машине разработчика или в среде CI/CD.

npm 12 вводит три ключевых ограничения:

  • Блокировка install-скриптов:npm install не будет выполнять скрипты preinstall, install и postinstall из зависимостей, если они не разрешены явно в конфигурации проекта.
  • Блокировка Git-зависимостей: прямые и транзитивные Git-зависимости не будут разрешаться без явного указания флага --allow-git.
  • Блокировка удалённых

Под блокировку попадают и нативные сборки через node-gyp: пакеты с файлом binding.gyp без явного install-скрипта также будут заблокированы, поскольку npm запускает для них неявную команду node-gyp rebuild. Скрипты prepare из Git-, файловых и символьных зависимостей блокируются аналогично.

Закрытие обхода через .npmrc

Отдельного внимания заслуживает установка значения --allow-git в none по умолчанию. Это закрывает вектор атаки, при котором файл .npmrc внутри Git-зависимости мог переопределить исполняемый файл Git. Примечательно, что этот путь выполнения кода работал даже при использовании флага --ignore-scripts, который до сих пор считался основной мерой защиты от вредоносных скриптов при установке.

Кого это затрагивает

Изменения коснутся практически всей экосистемы Node.js. Наибольшее влияние испытают:

  • Проекты с нативными модулями — любые зависимости, использующие node-gyp для компиляции C/C++ аддонов, потребуют явного одобрения.
  • CI/CD-пайплайны — автоматизированные сборки, полагающиеся на postinstall-скрипты для настройки окружения, могут сломаться без обновления конфигурации.
  • Проекты с Git-зависимостями — монорепозитории и проекты, ссылающиеся на приватные репозитории напрямую, потребуют явного разрешения.

При бездействии обновление до npm 12 приведёт к сбоям установки зависимостей — все неодобренные скрипты просто перестанут выполняться.

Как подготовиться

GitHub рекомендует следующий порядок действий:

  1. Обновить npm до версии 11.16.0 или новее.
  2. Выполнить стандартную установку зависимостей и изучить выводимые предупреждения.
  3. Запустить npm approve-scripts --allow-scripts-pending для просмотра списка пакетов со скриптами.
  4. Одобрить доверенные пакеты и зафиксировать обновлённый package.json в репозитории.

После обновления до npm 12 будут выполняться только явно одобренные скрипты. Всё, что осталось без одобрения, будет заблокировано.

Стоит отметить, что ранее npm уже ввёл настройку min-release-age, позволяющую отклонять версии пакетов, опубликованные менее указанного числа дней назад, — как защиту от свежих вредоносных публикаций. Отключение скриптов по умолчанию в npm 12 — логичное продолжение этой стратегии укрепления безопасности цепочки поставок.

Переход npm на модель явного одобрения скриптов — это фундаментальный сдвиг от «доверия по умолчанию» к «нулевому доверию» в управлении зависимостями. Командам разработки следует начать аудит скриптов зависимостей уже сейчас на npm 11.16.0+, чтобы обновление до npm 12 не привело к неожиданным сбоям в сборочных процессах.


CyberSecureFox Editorial Team

Редакция CyberSecureFox освещает новости кибербезопасности, уязвимости, malware-кампании, ransomware-активность, AI security, cloud security и security advisories вендоров. Материалы готовятся на основе official advisories, данных CVE/NVD, уведомлений CISA, публикаций вендоров и открытых отчётов исследователей. Статьи проверяются перед публикацией и обновляются при появлении новых данных.

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.