当企业私有包名未在公共 npm 源占位时,攻击者可抢注同名高版本包,利用包管理器“取最高版本”的策略让构建流水线拉取恶意公共包。
![]()
一、锁定私有源并禁用公共回退
ini
# .npmrc 强制私有 scope 只走内部源
@company:registry=https://npm.internal.example.com/
registry=https://registry.npmjs.org/
# 禁止私有 scope 回退到公共源
@company:always-auth=truejson
{
"overrides": {
"@company/internal-lib": "1.4.2"
}
}