Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

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

Компания 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.

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

SecurityLab