Роботам тут не рады. Платформа npm больше не доверяет автоматическим сборкам без одобрения человека

Участившиеся хакерские атаки заставили создателей сервиса действовать предельно жёстко.


3ugb7exbwk7gfsuopju0oq8h43idmwmd.jpg

Компания GitHub, которой принадлежит платформа npm, сообщила о двух новых мерах защиты для экосистемы JavaScript. Обновления должны усложнить атаки, при которых злоумышленники пытаются подменять популярные пакеты через автоматические сборки и сторонние источники. Изменения затронули как процесс публикации пакетов, так и установку зависимостей.

Главным нововведением стал режим поэтапной публикации (staged publishing), который теперь доступен всем пользователям npm CLI версии 11.15.0 и новее. Вместо мгновенной публикации готовый пакет сначала отправляется в специальную очередь. После загрузки версия остаётся недоступной для установки, пока сопровождающий проекта вручную не подтвердит выпуск через npm CLI или сайт npmjs.com.

В GitHub пояснили, что механизм усиливает проверку присутствия человека при каждой публикации. Подтверждение требует двухфакторной аутентификации, даже если сборка создаётся автоматически через CI/CD или систему доверенной публикации (trusted publishing) с OIDC. Разработчики рассчитывают, что новая схема усложнит атаки на инфраструктуру сборки и снизит риск распространения вредоносных обновлений через скомпрометированные процессы CI/CD.

Компания рекомендует использовать staged publishing вместе с trusted publishing. В таком режиме CI/CD сможет только загружать пакет в очередь, а финальное одобрение останется за владельцем проекта. Для перехода на новую модель потребуется обновить рабочие процессы и заменить команду npm publish на npm stage publish.

Одновременно GitHub расширила контроль над источниками зависимостей. В версии npm 11.15.0 появились флаги --allow-file, --allow-remote и --allow-directory. Настройки позволяют ограничивать установку пакетов из локальных директорий, файловых архивов и удалённых URL-адресов. Ранее аналогичная возможность существовала только для Git-источников через параметр --allow-git.

Каждый параметр поддерживает два режима: all и none. Настройки можно применять как через командную строку, так и в файлах .npmrc и package.json. В npm напомнили, что в следующем крупном релизе CLI параметр --allow-git по умолчанию переключится с all на none.

Новые ограничения для файлов, директорий и удалённых источников пока остаются необязательными, однако разработчики уже сейчас могут включить более строгую модель безопасности . Чем меньше автоматизированные процессы действуют без контроля, тем труднее превратить удобство разработки в канал для незаметной атаки.