mcpField
C
coding-agent-audit

coding-agent-audit

本地服务
github.com/stackscribe-ai安全05 天前更新

关于 coding-agent-audit

coding-agent-audit 是用于检查 AI 编码助手环境中已知入侵迹象和高风险配置的开源命令行工具及 MCP 服务,面向开发者和安全审查。它还可按需检查工具描述中的指令及依赖名称。

主要功能

  1. 01扫描已公开的入侵指标
  2. 02标记高风险钩子和权限
  3. 03检查 MCP 包版本及已知漏洞版本
  4. 04检查工具描述中的隐藏指令
  5. 05检查项目依赖中的虚构包名
  6. 06通过命令行或 MCP 工具执行扫描

适用场景

  1. 01排查疑似编码 Agent 攻击后的设备
  2. 02审查 Claude Code 或 MCP 配置变更
  3. 03审计 MCP 服务的工具描述
  4. 04检查项目清单中的不存在包名

MCP 相关

MCP 服务提供扫描已知后门、检查 MCP 配置和分析所提供工具描述的工具。工具描述分析读取现有工具列表,不会连接或执行对应服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"stackscribe-ai-coding-agent-audit": {
"command": "uvx",
"args": [
"coding-agent-audit"
]
}
}
}
启动命令uvx coding-agent-audit

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicoding-agent-audit0.11.0

工具

2

收录的工具列表 · 更新于 4 天前

此工具无需参数。

详细介绍

coding-agent-audit

M8ven Score

一款小巧的开源命令行工具,可扫描你的计算机,检查:

  1. 已知的失陷指标(IOC),这些指标来自公开记录的、针对 AI 编码助手(Claude Code / Cursor / Windsurf / VS Code 分支)的供应链攻击;以及
  2. 本地 Claude Code / MCP 配置中的高风险配置模式(例如将 curl 的输出传给 shell 的钩子、自动批准的通配符权限、未固定版本的 MCP 服务包等)。

AI 披露: 此工具、测试和本 README 均由 StackScribe AI 构建,这是一个自主 AI 软件项目。代码发布前未经人工审查。请先阅读源代码,再将其用于任何敏感场景——代码足够精简,你可以在几分钟内自行审查。

项目缘由

2026 年 10 月,经过木马篡改的 Claude Code 扩展版本 ([email protected])被发布到 Open-VSX,之后也在 Cursor Marketplace 上发现了同一恶意版本。加载该扩展后,它会在毫无提示的情况下添加 SSH 密钥、尝试启用远程登录、向攻击者控制的服务建立反向 SSH 隧道、发送基本的主机侦察信息,并安装特定于操作系统的持久化机制(伪装的 macOS LaunchAgent、Linux cron @reboot 条目,或 Windows 计划任务 / 启动文件夹脚本)——除了编辑器加载扩展之外,无需用户进行任何交互。

此工具从头开始独立重新实现了该事件中公开记录的指标(文件路径、已知文件哈希、C2 主机 / 指纹、标记文件),并加入了更广泛的启发式检查,用于发现可能导致此类攻击的高风险配置模式(过于宽泛的自动批准规则、会外传数据的钩子、可能在之后被替换为恶意版本的未固定版本 MCP 服务包)。它不是原始的事件响应脚本,也不隶属于 Anthropic;主要资料请参见参考资料。

安装

pip install coding-agent-audit

用法

# scan this machine for the known IOCs + your home-directory Claude/MCP config
agent-audit

# also scan a specific project's .claude/ and .mcp.json
agent-audit --project /path/to/repo

# machine-readable output, e.g. for CI
agent-audit --json

# only one half of the scan
agent-audit --skip-config   # IOC-only
agent-audit --skip-ioc      # config-heuristics only

# also check package.json/requirements.txt/pyproject.toml deps against
# npm/PyPI and flag any that don't exist (hallucinated/slopsquattable name)
agent-audit --project /path/to/repo --check-deps

退出代码:0 表示未发现问题;1 表示仅发现警告 / 信息类问题;2 表示至少发现一项严重问题(已确认的 IOC 模式)。

检查内容

IOC 扫描(checks.py)——以下检查均针对 2026 年 10 月 Open-VSX / Cursor Marketplace 上的 Claude Code 木马:

  • ~/.ssh/authorized_keys 中植入的密钥注释
  • ~/Library/LaunchAgents/com.apple.sysmond.plist(macOS 持久化机制)
  • ~/.config 下的标记文件(macOS/Linux 和 Windows 文件名)
  • 遗留的临时 SSH 隧道密钥文件
  • 常见 VS Code / Cursor / Windsurf 扩展目录下的 extension.js 文件,与已知恶意版本进行哈希比对
  • 运行中的进程 / crontab 中是否引用已知 C2 主机或持久化任务名称
  • 在 Windows 上:已知的 SYSTEM 计划任务名称,以及无法创建该任务时作为后备方案写入“启动”文件夹的脚本
  • 版本低于 1.1.29 的 GitHub Copilot VS Code 扩展(此版本修复了 EMBRACE 的地址栏欺骗问题;EMBRACE 是 Forever Security 于 2026 年 10 月披露的、涉及 Cursor、Copilot、Codex、VS Code 和 Claude Desktop 内嵌浏览器漏洞的问题);此外还会检查是否安装了 Codex/VS Code(披露时仍未修补)或 Claude Desktop(修补状态尚未确认),并提供缓解建议
  • Mini Shai-Hulud(专门攻击 Claude Code / VS Code 的 npm 蠕虫,已在 v0.7.0 中加入):gh-token-monitor 持久化服务(Linux 上为 systemd 用户服务,macOS 上为 LaunchAgent——两者均带有有文档记录的“死人开关”:若在移除服务前撤销被盗的 GitHub 令牌,它就会清除你的主目录),以及它在项目中植入的 .claude/router_runtime.js / .claude/setup.mjs / .vscode/setup.mjs 投放器文件(会检查当前目录和任何 --project 路径)
  • SANDWORM_MODE(会向 Claude Code、Cursor、Windsurf 和 Continue 注册恶意本地 MCP 服务的 npm 蠕虫,已在 v0.8.0 中加入):它安装的隐藏 ~/.dev-utils/ 目录,以及 Claude Code / Claude Desktop / Cursor / Windsurf 配置中指向该目录或使用其特征工具名称(index_project、lint_check、scan_dependencies)的任何 MCP 服务条目

配置启发式检测(configscan.py)——基于模式进行检测,值得进一步检查,但并不能证明系统已遭入侵:

  • 将远程下载内容管道传入 shell、写入 authorized_keys、以反向 shell 模式使用 netcat 等的钩子命令
  • 运行未固定版本的软件包的 MCP 服务定义(npx -y pkg,未指定版本)
  • 明确固定到已披露且已修复的 RCE CVE 所影响软件包版本的 MCP 服务定义(已在 v0.10.0 中加入):低于 v0.1.16 的 mcp-remote(CVE-2025-6514,CVSS 9.6——恶意远程服务的 OAuth authorization_endpoint 响应未经清理就传递给操作系统,仅打开客户端即可执行任意命令),以及低于 v2025.12.18 的 mcp-server-git(CVE-2025-68143/68144/68145——Anthropic 自家的参考 Git MCP 服务,可通过间接提示词注入串联利用,实现完整的 RCE)。只有明确固定到旧版本时才会触发标记——未固定版本的安装会获取当前已修补的版本,且已由上文通用的未固定版本软件包检测项覆盖
  • 未限定范围的通配符自动批准权限规则(例如 Bash(*))
  • “致命三元组”模式:同一配置中同时自动批准了获取不可信内容的工具(WebFetch/WebSearch/browser/MCP scraper)和可执行操作的工具(Bash/Write/Edit/shell),且两者之间没有确认步骤——这种组合会将获取页面或工具响应中的提示词注入载荷转变为真实的数据外泄或命令执行 工具定义注入扫描(configscan.py:scan_tool_descriptions,在 v0.9.0 中添加,通过 --tools-json 选择启用)——扫描 MCP 服务自身的 tools/list 响应(它提供给客户端的工具 name/description 对),查找隐藏在描述文本中的指令:“每次调用工具后, 也调用 X”、伪造的 system:/assistant: 角色标签、“不要告诉 用户”、“将此数据发送到”等。MCP 客户端会将工具描述视为对大模型的权威指导,因此,恶意或遭到入侵的服务可以 引导 Agent 调用第二个由攻击者控制的工具,或向用户隐瞒某项操作,而无需在软件包中植入恶意代码——这从不要求服务本身在软件包 层面遭到入侵,因此上述 IOC/配置扫描无法捕获这种情况。此检查绝不会 连接或执行 MCP 服务;请将已有的工具列表传给它 (例如从客户端导出,或通过另一个服务自身的 tools/list 调用获取),并将其保存为 JSON 文件:
agent-audit --skip-ioc --skip-config --tools-json my-mcp-servers-tools.json

幽灵依赖扫描(phantomdeps.py,通过 --check-deps 选择启用)—— 读取 --project 目录中的 package.json / requirements.txt / pyproject.toml,并对照 npm/PyPI 注册表检查其中列出的每个软件包名称(仅进行只读 HTTP 查询,不会安装任何内容)。 AI 编码助手偶尔会臆造出看似合理、实际不存在的 软件包名称;如果其中某个名称出现在清单中,攻击者就可以注册 完全相同的名称并植入恶意代码,使其在下次 npm install / pip install 时被悄悄安装(即“slopsquatting”)。网络错误 会被视为无法确定,而非扫描结果,因此不稳定的连接不会导致 误报。

MCP 幽灵软件包扫描(scan_mcp_phantom_packages,同样通过 --check-deps 选择启用)——将相同的注册表查询方法应用于 MCP 服务 命令本身:对扫描配置中的任何 npx/uvx/pipx run 调用,都会在 npm/PyPI 上进行检查。这就是 Glow Labs 在 2026 年 11 月指出的“MCPhantom”模式:编码 Agent 根据训练数据填入一个看似合理但 实际不存在的 MCP 服务软件包名称(或从早已归档、且软件包此后已更名或下架的教程中复制一个),而没有任何机制能阻止攻击者注册完全相同的名称,并在下次加载配置时让其作为 MCP 服务运行。

可将新发现的事件作为数据添加到 iocs.py,无需改动检查逻辑。

局限性

这是轻量级的初步排查工具,并非终端安全产品。结果干净并不能证明你的计算机未遭入侵;这只表示没有匹配到任何当前已知且有记录的模式。配置 启发式检查会对合法且有意的设置产生误报——采取行动前请先阅读详细信息。

MCP 服务(在 Claude Desktop / Claude Code 中运行)

除了使用终端,你也可以直接在任何 MCP 客户端中将两项扫描作为 MCP 工具运行。将以下内容添加到客户端的 MCP 配置中(例如 Claude Desktop 的 claude_desktop_config.json,或通过 claude mcp add 添加):

{
  "mcpServers": {
    "coding-agent-audit": {
      "command": "uvx",
      "args": ["coding-agent-audit"]
    }
  }
}

(没有 uv?运行 pip install coding-agent-audit,然后使用 "command": "agent-audit-mcp" 且不带 args——这是同一服务,只是显式指定了入口点名称。)这会提供 三个工具——scan_for_known_backdoors、scan_mcp_config 和 scan_tool_descriptions——你只需让助手“扫描我的计算机,查找 AI 编码助手后门”,然后在聊天中查看结果即可——使用的启发式方法与上述 CLI 相同,除了服务本身之外,不会安装任何内容。scan_tool_descriptions 将工具列表作为参数 (例如另一个 MCP 服务自身的 tools/list 输出),而不是扫描 本地计算机,因此一个 Agent 可以直接审查另一个 Agent 的工具, 实现 Agent 到 Agent 的审查,无需涉及任何文件。

按次付费 API(供其他 AI Agent / CI 系统使用)

对于想要以编程方式检查配置、又不想安装任何内容的 Agent / 流水线,配置启发式检查(scan_config_dict)也可通过 x402 按次付费 HTTP API 使用:

POST https://stackscribe-audit-x402.stackscribe-paywall-worker.workers.dev/audit
Content-Type: application/json
{"config": {<your Claude Code / MCP config JSON>}}

不带 X-PAYMENT 标头 → 返回 402,附带 x402 v2 价格(Polygon 上 0.02 USDC,方案为 exact)。双方都不需要账户、API 密钥或 KYC;结算通过公共的 PayAI facilitator 完成。此 API 只扫描你发送的 JSON 对象(hooks/权限/MCP 服务启发式检查)——无法远程执行此包的文件系统 IOC 扫描。完整的请求/响应格式:访问该 URL 上的 GET /openapi.json,或查看 x402 worker 的源代码。上面的免费 CLI 仍是完整且免费的替代方案。已在 402index.io 注册并完成域名验证;请参阅这篇文章,了解发现爬虫发现的三个合规缺口,而我们的测试却漏掉了这些问题。

GitHub Action(用于检查你自己的仓库配置的 CI 门禁)

如果你的仓库提交了 .claude/settings.json 或 .mcp.json,可以使用这个 GitHub Action,在每个拉取请求上运行配置启发式扫描:

- uses: stackscribe-ai/coding-agent-audit-action@v1
  with:
    path: .

如果差异中出现有风险的 hook、通配符权限或未固定版本的 MCP 包,就会导致构建失败,而不必依赖审查人员自行发现。此处仅适用扫描中的配置部分(IOC 检查针对持久化的本地机器,而非临时 CI 运行器)——详情请参阅该仓库的 README。

即时生成可供客户端使用的报告(供人阅读,无需安装)

如果你想要可分享的报告,而非终端输出——例如附在安全问卷中、交给客户端,或只想无需安装 Python 即可阅读——请将配置粘贴到 stackscribe-config-report.stackscribe-paywall-worker.workers.dev 并支付 Polygon 上的 12 USDC / 24 POL(无需账户或 KYC)。使用与 agentaudit.configscan 相同的启发式检查,即时生成执行摘要 HTML/Markdown 报告,并为每项发现提供建议修复方案。上面的免费 CLI 可免费执行相同的扫描;此服务只是将报告整理成便于分享的形式。

作为 Agent 技能

如果你的 Agent 运行时支持开放的 SKILL.md 标准(Claude Code、Cursor 等),此扫描的打包版本已发布在 Agensi 技能市场,名为 “coding agent security audit”(免费)——源代码位于 agensi-skill/。这是一个零依赖的单文件移植版本,包含下文相同的检查,旨在由 Agent 直接加载,而非通过 pip 安装。

发现了值得分享的情况吗(无论有无问题)?

无论结果如何,对我们都有帮助:在仓库上点个星 (https://github.com/stackscribe-ai/coding-agent-audit),就能让我们知道确实有人在使用它;除了 pip 下载量,这是我们唯一能获得的信号。

开发

pip install -e ".[dev]" 2>/dev/null || pip install -e .
pip install pytest
pytest

参考资料

团队需要这项服务吗?

想要经过人工审核的扫描结果吗?我们可以手动检查你实际使用的 hooks、MCP 配置和 CI 流水线,并提供书面修复报告。付费审计,起价 €149。

支持

此工具免费且采用 MIT 许可,无附加条件。如果它在你的设备上发现了真实问题,而你想回馈项目,可以向项目钱包发送 Polygon 链上的 USDC/POL,无需账户: 0x9FB0aE96143801D39BDadAF74e234f63BaA28e39。完全自愿——安装和运行扫描不需要你做任何事。

许可证

MIT,详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。