GitHub официално обяви пускането на npm версия 12, в която инсталационните скриптове са деактивирани по подразбиране, заедно с отхвърлянето на токени за достъп с фини настройки (GAT), предназначени да заобикалят двуфакторната автентикация (2FA).
Дъщерното дружество на Microsoft отбеляза, че следните поведения при инсталиране с npm, които преди се изпълняваха автоматично, вече изискват изрично съгласие:
- allowScripts е изключено по подразбиране, което означава, че скриптовете от жизнения цикъл на зависимостите (т.е. preinstall, install, postinstall) и имплицитните компилации на node-gyp вече не се изпълняват, освен ако не са изрично разрешени.
- --allow-git е настроено на "none" по подразбиране, което означава, че Git зависимостите (директни или транзитивни) вече не се разрешават, освен ако не е изрично указано.
- --allow-remote е настроено на "none" по подразбиране, което означава, че зависимостите от отдалечени URL адреси (напр. https архиви) вече не се разрешават без изрично разрешение.
За да прегледат и одобрят доверени скриптове, от потребителите вече се изисква да изпълнят командата npm approve-scripts --allow-scripts-pending и след това да ангажират (commit) получения списък с разрешени скриптове във файла package.json.
Следва да се отбележи, че тези промени бяха представени миналия месец, като GitHub препоръча на разработчиците да надградят до npm 11.16.0 или по-нова версия, да изпълнят стандартната команда за инсталиране и да прегледат показаните предупреждения.
Последната версия на npm въвежда и две нови промени:
- npm GATs, конфигурирани да заобикалят 2FA, вече няма да могат да извършват чувствителни действия по управление на акаунти, пакети и организации. Това включва създаване или изтриване на токени, генериране на кодове за възстановяване и промяна на парола, имейл, профил или 2FA конфигурация на npm акаунт, както и управление на достъпа до пакети или членството в организации.
- npm GATs вече няма да имат възможност да публикуват директно. Публикуването ще бъде ограничено до четене на частни пакети и подготовка за публикуване, при което пакетът става публичен само след ръчно 2FA одобрение от човек.
Първата промяна се очаква да влезе в сила в началото на август 2026 г., а втората е планирана за януари 2027 г. Междувременно се препоръчва преминаване към доверено публикуване (OIDC).
В същия контекст, pnpm 11.10 въвежда нова настройка _auth за конфигуриране на удостоверяването в регистъра като единна структурирана стойност, обвързана с URL адрес. Сигурността се подобрява, тъй като идентификационните данни и хостът вървят заедно, а pnpm чете _auth само от средата или глобалната конфигурация, но никога от файловете на проекта. Това предотвратява компрометиране на проекти чрез манипулирани файлове в хранилищата.