Вышла новая версия пакетного менеджера npm - npm 12.0 — 10 июля 2026 г. в 05:35:58.242
Вышла новая версия пакетного менеджера npm - npm 12.0 Это одно из самых значительных обновлений менеджера пакетов за его историю — команда сфокусировалась на безопасности цепочки поставок. Так, разработчики перевели несколько функций, которые раньше запускались автоматически при `npm install`, в режим «требует явного разрешения». Это сделано, чтобы усложнить атаки, когда вредоносный пакет подменяет или дополняет установочные скрипты. * `allowScripts` по умолчанию `off`. Теперь скрипты жизненного цикла (`preinstall`, `install`, `postinstall`) и неявные сборки через `node-gyp` (например, если в пакете есть файл `binding.gyp`) не запускаются автоматически. Чтобы разрешить их, нужно выполнить `npm approve-scripts`. Можно указать конкретные пакеты или использовать `--all`. А чтобы сначала посмотреть, какие скрипты будут заблокированы, запустите `npm approve-scripts --allow-scripts-pending` — после проверки добавьте доверенные в белый список (он сохранится в `package.json`). Для сомнительных пакетов есть команда `npm deny-scripts`. * `--allow-git` по умолчанию `none`. Зависимости из Git-репозиториев (прямые или транзитивные) теперь тоже требуют явного флага `--allow-git`. Это закрывает уязвимость: раньше пакет мог через свой файл `.npmrc` подменить исполняемый файл Git и запустить код даже при включённом `--ignore-scripts`. * `--allow-remote` по умолчанию `none`. Аналогично, зависимости по прямым удалённым URL (например, tar-архивы по HTTPS) теперь нужно разрешать отдельно через `--allow-remote`. Ещё одно важное направление: работа с токенами: в npm 12.0 начали поэтапно ограничивать возможности Granular Access Tokens (GAT), которые настраивали для обхода двухфакторной аутентификации (2FA). * Сначала (примерно в начале августа 2026 года) такие токены лишили права выполнять чувствительные операции с аккаунтом, пакетами и организациями: создание/удаление токенов, смена пароля, email, настроек 2FA, генерация кодов восстановления, изменение прав доступа к пакетам, управление сопровождающими, членством в организациях и командах. Для этих действий теперь требуется интерактивная сессия с 2FA. * Позже (ориентировочно в январе 2027 года) планируют полностью запретить прямую публикацию пакетов через GAT. Вместо этого токены смогут только читать приватные пакеты и ставить публикацию на этап ожидания. Окончательный релиз в публичный доступ произойдёт только после ручного подтверждения 2FA человеком. * В качестве альтернативы для автоматической публикации рекомендуют использовать механизм Trusted Publishers на основе OpenID Connect (OIDC) — с токенами ограниченного времени действия. Хотя эти меры серьёзно усложняют некоторые типы атак (например, те, что эксплуатировали установочные скрипты), они не закрывают все векторы. Например, если злоумышленник скомпрометировал аккаунт сопровождающего и опубликовал вредоносный пакет в реестр, код (если он встроен в саму логику пакета, а не в установочный скрипт) всё равно дойдёт до разработчиков при установке. https://github.blog/changelog/2026-07-08-npm-install-time-security-and-gat-bypass2fa-deprecation/

