pnpm v10 теперь по умолчанию блокирует скрипты жизненного цикла зависимостей

Node.jspnpmБезопасностьDevOps

Ключевое обновление

pnpm v10 (стабильная версия) изменяет поведение установки по умолчанию так, что скрипты жизненного цикла, определенные в зависимостях, больше не выполняются во время установки, если это не разрешено явно (через pnpm.onlyBuiltDependencies, файл разрешенного списка или путем одобрения сборок). Это преднамеренное, значительное изменение, направленное на предотвращение атак на цепочку поставок, которые выполняют вредоносные скрипты postinstall/preinstall. (github.com)

Почему это важно

Это практический поворот в области безопасности с немедленным операционным воздействием. Команды, использующие pnpm, могут столкнуться с неудачами CI и локальных установок для пакетов, которые зависят от скриптов сборки/установки (нативные модули, такие как bcrypt, движки Prisma, esbuild, sqlite3 и т.д.), поскольку эти скрипты теперь игнорируются, пока вы не одобрите их. Изменение уменьшает автоматическую поверхность атаки от ненадежных скриптов зависимостей, но требует небольшую миграцию: либо предварительно одобрить необходимые пакеты с помощью новой команды pnpm approve-builds, либо добавить одобренные имена в pnpm.onlyBuiltDependencies (или использовать управляемый onlyBuiltDependenciesFile, предоставленный внутренним пакетом политики). В CI вы должны зафиксировать версию pnpm через поле packageManager, предварительно заполнить разрешенный список (или выполнить детерминированный, неинтерактивный шаг одобрения) и протестировать сборки от начала до конца перед развертыванием изменения в монорепозиториях. Для команд, которые не могут немедленно принять разрешенный список, pnpm предоставляет способ восстановить поведение до v10, настроив neverBuiltDependencies, но полагание на это лишает вас преимущества в безопасности. В целом, это небольшая предварительная операционная стоимость, которая значительно укрепляет установки против распространенных атак на цепочку поставок скриптов установки. (github.com)

Источник

Читать дальше