Log in to leave a comment
No posts yet
最近 Axios 库被接管事件以及 Shai-Hulud 蠕虫的扩散令人震惊。这证明了即使是信任的维护者账号一旦被盗,恶意代码就可能直接植入我们的代码库。对于没有专门安全团队的初创公司来说,一次 npm install 导致 AWS 访问密钥被窃取的后果是灾难性的。但是,只要在系统层面铺设好安全网,即使恶意脚本运行,也能切断数据向外传输的路径。
即使攻击者在安装包时运行了恶意代码,如果我们在网络层面禁止未经授权的外部传输,就可以将凭证泄露的损失降为零。AWS 安全组(Security Group)默认允许所有出站流量。这无异于为数据发送到攻击者的服务器铺设了高速公路。
registry.npmjs.org 等经过批准的域名通过。.env 文件。使用 AWS Secrets Manager,并构建一个在应用程序运行时通过 SDK 仅将机密加载到内存中的层级。通过这种方式,可以物理性地化解像 Shai-Hulud 2.0 那样通过搜索文件系统来窃取 .env 的蠕虫攻击。
当依赖树中的版本在开发者不知情的情况下擅自升级时,攻击就会爆发。npm install 在解析灵活的版本范围(^1.0.0)时,极有可能修改 package-lock.json。必须严格使用包管理器的完整性验证功能。
.npmrc 文件中写入 save-exact=true。强制要求所有包都以精确版本存储,不带插入符号(^)。npm install 替换为 npm ci。如果与 package-lock.json 有任何不一致,它将拒绝安装并立即停止构建。package.json 的 overrides 字段中写入 "axios": "1.14.0"。这样所有的间接依赖都会被锁定在安全版本。由于 npm ci 会删除现有的 node_modules 并重新安装,因此不会给污染文件留下残留空间。跳过依赖计算还能加快构建速度,这算是一个额外的红利。
由于人工无法逐一检查所有包,必须让流水线具备自动行使“否决权”的能力。npm audit 仅查看已知的 CVE 数据库,在拦截零日攻击或未知的恶意行为方面存在明显的局限性。
no-restricted-imports 规则禁止使用 Axios 等特定库,从代码层面强制要求仅使用内部验证过的 HTTP 客户端。引入像 Socket.dev 这样的基于行为的分析,在发生安全事故时,每周可节省 2 小时以上的手段调查时间。
| 工具名称 | 分析方式 | 引入效果 |
|---|---|---|
| npm audit | 对比 CVE 数据库 | 原生内置工具,静态漏洞分析 |
| Socket.dev | 基于行为的分析 | 探测未知的恶意代码模式 |
| Harden-Runner | eBPF 运行时监控 | 拦截构建服务器的可疑网络请求 |
如果你已经听到了攻击的消息,可能已经晚了。请查阅系统日志和网络活动记录,确认环境是否遭到侵害。恶意代码通常为了与 C2 服务器通信会先发送 DNS 查询,这些记录是最确凿的证据。
tcpdump 查找是否包含 sfrclak.com 或 plaincryptojs 相关关键词的请求。一旦发现,请立即隔离该设备。ps -ef 命令检查父进程为 npm 的子进程中是否运行了 bun 或 powershell。攻击者虽然试图抹除痕迹,但往往会创建 node 以外的出格进程,或在 .github/workflows/ 下植入异常 YAML 文件以确保持久性。必须仔细检查是否产生了 Git status 无法捕获的新文件。通过构建网络白名单、npm ci 以及运行时分析工具这三阶段安全网,你将不再会因为一条安全新闻而整天提心吊胆。