flawopen.com/安全事件/Shai-Hulud npm worm
想象一个由数百家工厂组成的供应链网络,每家工厂收到零件箱后连看都不看就直接组装进自己的产品里。有人偷了一张出厂通行证,把一个暗藏机械怪兽的零件箱寄了出去。下一个工厂开箱的瞬间,怪兽立刻偷走这家工厂的所有通行证,并把自己的幼崽塞进该厂即将发往别处的所有新零件箱里。没有任何人在幕后指挥,它自己在整个生态里疯狂蔓延。
npm ci --ignore-scripts neutralises the execution primitive this worm depended on. Allowlist the small number of dependencies that truly need a native build step.npm ci, not npm install. A lockfile means a freshly published malicious version is not silently pulled into your build the hour it appears.Most dependency-security tooling is built to answer "does this package have a known CVE?". A freshly trojanised version of a package you already trust has no CVE, a legitimate history, and a maintainer in good standing. Shai-Hulud is the argument for treating installation itself as the security boundary — controlling what executes, what credentials are within reach when it does, and how quickly new versions are adopted — rather than relying on after-the-fact vulnerability lists.
Check whether any affected package version appears in your lockfiles or CI logs for the exposure window, look for unexpected public repositories or new Actions workflows on developer and organisation GitHub accounts, and audit npm and GitHub token creation and package publication events. If a build machine ran an affected version, treat every credential that machine could reach as compromised and rotate it.
--ignore-scripts fully protect me?It removes the install-time execution path, which is what this worm used. It does not protect you from malicious code inside a package you actually import and run. It is a strong control, not a complete one.
No. Further variants using the same self-propagating pattern were reported in late 2025 and into 2026, and the technique has since been observed spanning multiple registries. The structural weaknesses it exploits — automatic script execution and long-lived publish tokens — are properties of the ecosystem rather than of any one package.