【开源项目推荐】Package-Inferno:一个让你看透 npm 包“真面目”的开源神器

53 阅读3分钟

2025~2026 年这段时间,npm 供应链攻击事件仍然层出不穷。

有人一个月偷偷往一个已经被几万人依赖的包里塞后门,有人把恶意代码藏在 prototype pollution 里,有人直接把 crypto miner 伪装成性能优化工具……
普通开发者面对几百上千个依赖时,真的很难判断一个包到底安不安全。

而今天要介绍的这个工具,就是专门来解决这个痛点的——
Package Inferno
github.com/MHaggis/Pac…

它到底能干什么?

一句话总结:
它能把一个 npm 包“解剖”得非常透彻,比你肉眼看代码、看 package.json、看最近提交记录要深入得多。

目前主要提供的核心能力有这些:

检测维度能发现什么问题难度(人工)Package Inferno 是否能较好识别
可疑字符串/硬编码API key、wallet address、C2 域名、矿池地址等★★☆非常强
动态代码执行eval、Function、vm.runInNewContext 等高危写法★★★
原型污染Object.prototype 相关操作★★★★中等~强
进程/文件系统操作child_process、fs.writeFile、process.exit 等★★非常强
网络外联http/https/fetch + 可疑域名★★非常强
环境变量窃取process.env 相关操作 + 敏感关键字★★★
伪装/混淆变量名极长、base64 大段字符串、unicode 混淆等★★★★中等(依赖规则质量)
版本间行为剧变某个版本突然多了很多奇怪代码★★★★支持(需配合历史版本对比)

它是怎么做到的?

Package Inferno 的工作流程大概是这样的:

  1. 输入 → npm 包名 + 版本(或直接给 tarball url)
  2. 自动下载 → 解压 tarball
  3. 多维度扫描(目前主要有三类):
    • 基于正则 + 启发式的字符串匹配(最快)
    • YARA 规则引擎(最强可扩展)
    • 部分 AST 分析(正在快速迭代中)
  4. 输出结构化的 JSON 结果,包含:
    • 发现的每一个“红旗”(red flag)
    • 对应的文件路径 + 行号 + 命中规则
    • 严重性评分(可自定义)
    • 证据片段(方便人工复核)

实际使用场景举例

场景1:新项目要引入一个冷门包
npx package-inferno lodash.debounce@4.0.8
→ 几秒钟告诉你这个版本有没有被投毒

场景2:公司内部供应链安全周
把所有生产依赖扫一遍,输出 top 20 最可疑的包
→ 直接生成报告发给安全团队

场景3:研究型玩家
想研究最近一年有哪些包被投过毒?
配合脚本批量拉取热门包的不同历史版本 → 对比 delta → 找规律

目前的状态(2026年1月)

  • 项目非常新(公开时间 ≈ 2025年底~2026年初)
  • 还在快速迭代中,规则还在疯狂补充
  • 作者很活跃,issue 和 PR 响应很快
  • 已经可以开箱即用(支持 Docker 一键跑)
  • 社区贡献度还很低,正是现在参与最有影响力的时候

怎么快速上手?(最简单方式)

# 方式1:直接 npx(最快)
npx package-inferno express@4.19.2

# 方式2:Docker(推荐批量/公司用)
docker run -it --rm ghcr.io/mhaggis/package-inferno:latest axios@1.7.7

# 方式3:本地开发/改规则
git clone https://github.com/MHaggis/Package-Inferno.git
cd Package-Inferno
npm install
npm run scan -- axios@1.7.7

一句话总结

如果你:

  • 经常选包选到焦虑
  • 公司有供应链安全要求
  • 对 npm 恶意包投毒原理感兴趣

那么 Package Inferno 非常值得你今天就 star + clone 一份,闲暇时跑跑自己项目里的依赖,看看能不能挖出一些“惊喜”。

安全,从审视每一个依赖开始。
祝大家 2026 年都能用上干净的 npm 包~