网络安全新升级:npm v12禁用安装脚本,JS生态零信任防护时代到来

2026年7月,GitHub旗下npm预计发布v12正式版本。本次版本更新摒弃了常规功能的迭代,默认禁用preinstall、install、postinstall等安装生命周期脚本,同时封禁Git依赖、远程URL依赖等高位访问渠道,彻底改变沿用多年的默认信任模式,从底层重新塑造安全架构,JavaScript生态零信任防护时代正式到来。

npm是为了简化项目跨平台适配、原生模块编译和环境配置工作生成的。开发者只需要执行一行npm install命令,就可以完成自动下载资源、底层编译等操作,极大程度降低开发部署的难度,同时也是JavaScript生态快速发展的重要助力,但是带来便捷性的同时也隐藏着巨大的网络安全隐患。

一直以来,npm对所有的开源依赖包默认信任,安装脚本运行时会获取用户完整的系统权限,在可读写本地文件,网络请求发起和系统指令调用方面都是静默运行的,用户很难及时察觉其运行开始和终止。据Sonatype在2026年软件供应链安全报告统计的数据显示,JavaScript生态中超过72%的软件供应链攻击都是借助安装脚本植入的恶意代码实现的。账号和密钥等可能会被这类攻击窃取,植入远程控制程序,更严重的是可能入侵企业的CI或CD自动化流水线,进而引发大规模的数据泄露和业务故障。项目之间的依赖性难以逐个排查,进一步放大了安全风险。

本次发布的npm v12目标是从源头拦截各类攻击行为,主要变化就是全部关闭安装脚本的自动化执行,allowScripts配置项默认设置为off,无论是常规生命周期脚本,还是node-gyp触发的原生编译行为,都会统一拦截。白名单内的可信包默认放行,同时支持恢复旧版规则或强制授权运行,三种运行模式的划分可以适配不同使用场景。

本次变革虽然有效保护数据的安全,但是也在短期内带来适配性方面的压力。开发者需要新增脚本审计和白名单配置等操作,使用门槛被提高,部分老旧的项目可能会出现安装异常。业内也有声音担忧恶意代码会被转移到程序运行阶段,但运行时攻击处罚的条件更为严苛,搭配终端安全监控工具,是可以完全有效拦截的。

(本内容信息来源于网络,如有侵权或不实之处可联系删除)