- Автор темы
- #1
Инженеры GitHub представили npm 12, в котором серьезно переработали безопасность механизма установки зависимостей. Lifecycle-скрипты, зависимости из Git-репозиториев и зависимости, устанавливаемые по удаленным URL, теперь требуют явного разрешения.
Главное изменение затронуло параметр allowScripts, который теперь отключен по умолчанию. Это означает, что скрипты preinstall, install и postinstall, а также сборка нативных модулей через node-gyp больше не выполняются автоматически при установке пакетов.
Аналогичным образом изменилось поведение еще двух механизмов. Параметр --allow-git теперь имеет значение none, поэтому npm не станет загружать прямые и косвенные Git-зависимости без явного разрешения. То же касается --allow-remote: зависимости, загружаемые через удаленные URL, включая tar-архивы, доступные по HTTPS, теперь блокируются по умолчанию.
Для проверки и одобрения доверенных скриптов разработчикам предлагают выполнить команду: npm approve-scripts --allow-scripts-pending, после чего сформированный allowlist необходимо сохранить в package.json и закоммитить в репозиторий.
Напомним, что эти изменения анонсировали еще в июне 2026 года. Тогда в GitHub рекомендовали разработчикам перейти на npm 11.16.0 или более новую версию, выполнить обычную установку зависимостей и изучить появившиеся предупреждения.
Кроме того, для повышения безопасности будут ограничены возможности granular access tokens (GAT), настроенных для обхода двухфакторной аутентификации (2ФА). С начала августа 2026 года такие токены больше нельзя будет использовать для важных операций с аккаунтами, пакетами и организациями.
В частности, с использованием GAT с обходом 2ФА нельзя будет создавать и удалять токены, генерировать коды восстановления, менять пароли, email-адреса, профили и настройки 2ФА. Ограничения также коснутся управления доступом к пакетам, списками мейнтейнеров, настройками trusted publishing, участниками организаций и команд, а также правами команд.
В GitHub сообщают, что следующий этап изменений запланирован на январь 2027 года. После этой даты GAT будут окончательно лишены возможности для прямой публикации пакетов. Токены можно будет использовать для чтения приватных пакетов и подготовки публикаций, но релиз станет публичным только после ручного подтверждения с применением 2ФА.
Главное изменение затронуло параметр allowScripts, который теперь отключен по умолчанию. Это означает, что скрипты preinstall, install и postinstall, а также сборка нативных модулей через node-gyp больше не выполняются автоматически при установке пакетов.
Аналогичным образом изменилось поведение еще двух механизмов. Параметр --allow-git теперь имеет значение none, поэтому npm не станет загружать прямые и косвенные Git-зависимости без явного разрешения. То же касается --allow-remote: зависимости, загружаемые через удаленные URL, включая tar-архивы, доступные по HTTPS, теперь блокируются по умолчанию.
Для проверки и одобрения доверенных скриптов разработчикам предлагают выполнить команду: npm approve-scripts --allow-scripts-pending, после чего сформированный allowlist необходимо сохранить в package.json и закоммитить в репозиторий.
Напомним, что эти изменения анонсировали еще в июне 2026 года. Тогда в GitHub рекомендовали разработчикам перейти на npm 11.16.0 или более новую версию, выполнить обычную установку зависимостей и изучить появившиеся предупреждения.
Кроме того, для повышения безопасности будут ограничены возможности granular access tokens (GAT), настроенных для обхода двухфакторной аутентификации (2ФА). С начала августа 2026 года такие токены больше нельзя будет использовать для важных операций с аккаунтами, пакетами и организациями.
В частности, с использованием GAT с обходом 2ФА нельзя будет создавать и удалять токены, генерировать коды восстановления, менять пароли, email-адреса, профили и настройки 2ФА. Ограничения также коснутся управления доступом к пакетам, списками мейнтейнеров, настройками trusted publishing, участниками организаций и команд, а также правами команд.
В GitHub сообщают, что следующий этап изменений запланирован на январь 2027 года. После этой даты GAT будут окончательно лишены возможности для прямой публикации пакетов. Токены можно будет использовать для чтения приватных пакетов и подготовки публикаций, но релиз станет публичным только после ручного подтверждения с применением 2ФА.
«Чтобы подготовиться к этим изменениям, переведите автоматическую публикацию на trusted publishing через OIDC или staged publishing с ручным подтверждением вместо publish-токена с длительным сроком действия», — советуют в GitHub.
