Mastodon Mastodon Mastodon Mastodon

Як зміни в npm 12 вплинуть на скрипти встановлення та залежності

Photo of author

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, публікацій вендорів і відкритих звітів дослідників. Статті перевіряються перед публікацією та оновлюються за появи нових даних.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.