ondrej-merkun/skill-audit

GitHub: ondrej-merkun/skill-audit

一款本地静态扫描工具,用于检测 AI 代理技能和插件中的提示注入与恶意代码,帮助开发者和安全团队在使用前识别潜在风险。

Stars: 1 | Forks: 0

skill-audit terminal demo showing scan results

skill-audit

扫描您机器上的每个 AI 代理技能,以检测提示注入和恶意代码。
默认采用快速的本地规则,并可选启用本地 LLM 审查以获取更深层的上下文。

npm version   Node version   npm provenance: attested   Security policy   46 shipped rules   GitHub Action: skill-audit   License: Apache-2.0

`skill-audit` 是一款快速的本地的首道关卡工具,专为 AI 代理技能、插件、MCP 配置和项目指令文件而设计。它能够发现暴露给 Claude Code、OpenAI Codex、GitHub Copilot、Cursor、Gemini CLI、Windsurf、Cline 以及跨代理项目文件的内容,然后在彩色判定表中优先显示风险最高的结果。 当您需要更深层次的语义扫描时,可以在相同的已发现技能、确定性发现结果、相关文件路径和截断代码片段之上,添加可选的本地 LLM 审查。 使用 `npx` 运行一次性扫描,或者在使用以下命令(包括本地 LLM 审查)之前全局安装 `skill-audit` 二进制文件。 ``` # 一次性扫描 npx @ondrej-merkun/skill-audit # 全局安装 npm install -g @ondrej-merkun/skill-audit skill-audit ``` 需要更深度的本地审查吗? ``` skill-audit llm add local --base-url http://127.0.0.1:11434/v1 --model llama3.1 skill-audit scan --llm local ``` 默认的规则扫描在您的机器上本地运行,不调用任何模型。可选的本地 LLM 审查使用您的本地环回 OpenAI 兼容服务器,将模型发现的结果与规则发现的结果单独标记,并且不需要云账户或远程模型。此版本不在面向用户的 CLI 中执行丰富查询。 ## 阅读首个结果 默认扫描会按风险对发现结果进行排序,因此第一行就是接下来需要审查的内容。 ``` AGENT SKILL VERDICT SCORE TOP ISSUE Claude Code obfuscated-eval-skill FAIL 50 CODEEXEC-JS-EVAL-FUNCTION Claude Code webhook-exfil-skill FAIL 75 NET-WEBHOOK-KNOWN Codex review-helper REVIEW 82 PI-OVERRIDE ``` - **FAIL** 表示触发了高风险或强制失败的规则。在使用该技能之前,请将其移除或进行审查。 - **REVIEW** 表示有风险的模式需要人工结合上下文判断,这些通常出现在安全培训、测试固件或引用的示例中。 - **PASS** 表示没有触发任何内置规则。但这并不能保证该技能是安全或最新的。 使用以下命令调查某一行: ``` skill-audit explain obfuscated-eval-skill ``` ## 常用命令 扫描与过滤: ``` skill-audit # default scan skill-audit scan --agent claude-code # restrict discovery to one agent skill-audit scan --include-marketplaces # include inactive local marketplace inventory ``` 编写报告: ``` skill-audit scan --json -o skill-audit-report.json # machine-readable JSON skill-audit scan --summary -o skill-audit-summary.txt # compact text summary skill-audit scan --html skill-audit-report.html # standalone HTML report ``` 添加本地 LLM 审查: ``` skill-audit llm add local --base-url http://127.0.0.1:11434/v1 --model llama3.1 skill-audit llm list # configured local models skill-audit llm check local # local model health check skill-audit scan --llm local # add local LLM review skill-audit scan --llm local --llm qwen # compare multiple local models skill-audit scan --llm all --html skill-audit-report.html ``` 清点与跟进: ``` skill-audit list # inventory without scanning skill-audit list --include-marketplaces # show installed and inactive marketplace skills skill-audit explain # inspect one result skill-audit ignore # suppress a reviewed tree hash ``` 更多工作流:[`docs/EXAMPLES.md`](docs/EXAMPLES.md)。 ## 覆盖范围 `skill-audit` 会扫描全局和项目本地的技能位置,支持 Claude Code、Codex、Copilot、Cursor、Gemini CLI、Windsurf、Cline 以及诸如 `AGENTS.md` 等跨代理指令文件。它匹配 46 条内置规则,涵盖提示注入、网络数据泄露、文件系统访问、代码执行、混淆、硬编码机密、git 历史记录访问、依赖项风险以及特定于技能的恶意软件模式。 已安装或当前暴露的技能是默认的扫描和列表范围。`plugins/marketplaces/` 下的插件市场负载属于非活动的本地库存;仅在使用 `--include-marketplaces` 时才会将其包含在内,此时输出会将行标记为 `installed` 或 `marketplace`。 ## 可选的本地 LLM 审查 确定性规则扫描器是基线。如果您已经在运行本地 OpenAI 兼容的模型服务器,则可以将 LLM 审查作为第二意见添加进来: ``` skill-audit llm add local --base-url http://127.0.0.1:11434/v1 --model llama3.1 skill-audit llm check local skill-audit scan --llm local ``` `skill-audit llm add` 会将模型配置写入 `$XDG_CONFIG_HOME/skill-audit/llms.json`,或者在未设置 `XDG_CONFIG_HOME` 时写入 `~/.config/skill-audit/llms.json`。Base URL 必须是环回 URL,例如 `127.0.0.1` 或 `localhost`;不需要云 API 密钥、托管账户或远程模型。 对于对比运行,您可以重复使用 `--llm`,传入逗号分隔的名称,或者对每个已启用的已配置本地模型使用 `--llm all`: ``` skill-audit scan --llm local --llm qwen skill-audit scan --llm local,qwen --summary skill-audit scan --llm all --html skill-audit-report.html ``` LLM 发现的结果会与确定性规则发现的结果单独标记。它们不会替代规则结果,并且模型失败、超时或无效响应不会隐藏扫描器的发现。审查负载包含技能元数据、确定性发现结果、相关文件路径,以及在明显的机密脱敏之后触发了发现结果的文件中的截断代码片段。`skill-audit` 不会发送整个主目录、不相关的文件、环境变量或已发现的机密。 详细参考: - [发现路径、对比、评分、JSON、CI 与常见问题解答](docs/REFERENCE.md) - [示例](docs/EXAMPLES.md) - [威胁模型与网络边界](docs/THREAT_MODEL.md) - [规则目录](specs/RULES.md) - [白名单维护](docs/ALLOWLIST.md) ## 在 CI 中使用 ``` npx --yes @ondrej-merkun/skill-audit@latest scan \ --json \ --output skill-audit-results.json \ --fail-on REVIEW ``` `--fail-on REVIEW` 会在遇到 REVIEW 或 FAIL 判定时以退出码 1 退出。该代码仓库还附带了一个 GitHub Action: ``` - uses: ondrej-merkun/skill-audit@v1 ``` 请参阅 [CI 参考](docs/REFERENCE.md#use-in-ci) 以了解完整的工作流。 ## 局限性 `skill-audit` 是一个本地扫描器。它不执行技能、不进行沙箱工具处理,也不证明意图。可选的本地 LLM 审查可能会遗漏问题,也可能会产生幻觉式的发现结果;确定性规则仍然是基线扫描器。该工具可能会遗漏新型越狱、运行时获取的行为、拆分字符串混淆以及技能稍后调用的服务中的风险。请将其视为快速的初级过滤器,而不是代码审查或依赖项审查的替代品。
标签:AI Agent安全, AI代码助手, Apache-2.0, CISA项目, GitHub Action, GNU通用公共许可证, IDE安全, LLM代码审查, MCP安全, MITM代理, Node.js, npm, XML注入, XSS防护, 云安全监控, 命令行工具(CLI), 大语言模型(LLM)安全, 威胁情报, 安全合规, 安全漏洞扫描, 开发者工具, 恶意代码扫描, 插件安全, 文档结构分析, 暗色界面, 本地安全审计, 网络代理, 网络安全, 自动化攻击, 隐私保护, 零日漏洞检测, 静态分析