snyk/agent-scan
GitHub: snyk/agent-scan
专为 AI Agent 生态设计的安全扫描器,用于发现并检测 MCP 服务器和 Agent Skills 中的 Prompt 注入、工具投毒等安全漏洞。
Stars: 1808 | Forks: 184
Snyk Agent Scan
发现并扫描您机器上的 Agent 组件,检测 Prompt 注入
和漏洞(包括 Agents、MCP 服务器、Skills)。
Agent Scan 帮助您清点所有已安装的 Agent 组件(Harnesses、MCP 服务器、Skills),并扫描常见威胁,如 Prompt 注入、敏感数据处理或隐藏在自然语言中的恶意软件 Payload。 ## 亮点 - 自动发现 MCP 配置、Agent 工具、Skills - 扫描 Claude、Cursor、Windsurf、Gemini CLI 和其他 Agents。 - 检测 MCP 服务器和 Agent Skills 中的 [15+ 种独特安全风险](docs/issue-codes.md): - MCP: [Prompt Injection](docs/issue-codes.md#E001), [Tool Poisoning](docs/issue-codes.md#E003), [Tool Shadowing](docs/issue-codes.md#E002), [Toxic Flows](docs/issue-codes.md#TF001), [Rug Pull](docs/issue-codes.md#W005) - Skills: [Prompt Injection](docs/issue-codes.md#E004), [Malware Payloads](docs/issue-codes.md#E006), [Untrusted Content](docs/issue-codes.md#W011), [Credential Handling](docs/issue-codes.md#W007), [Hardcoded Secrets](docs/issue-codes.md#W008) ## 快速开始 开始使用: 1. **在 [Snyk](https://snyk.io) 注册** 并从 [https://app.snyk.io/account](https://app.snyk.io/account) 获取 API token (API Token → KEY → click to show)。 2. **将 token 设置为环境变量**,在运行任何扫描之前: export SNYK_TOKEN=your-api-token-here 3. 确保系统上已安装 [uv](https://docs.astral.sh/uv/getting-started/installation/)。 ### 扫描 要运行对您机器的全面扫描(自动发现 Agents、MCP 服务器、Skills),请运行: ``` uvx snyk-agent-scan@latest --skills ``` 这将扫描服务器、Skills、工具、Prompts 和资源中的安全漏洞。它将自动发现各种 Agent 配置,包括 Claude Code/Desktop、Cursor、Gemini CLI 和 Windsurf。省略 `--skills` 以跳过 Skill 分析。 您也可以扫描特定的配置文件: ``` # 扫描 MCP configurations uvx snyk-agent-scan@latest ~/.vscode/mcp.json # 扫描单个 agent skill uvx snyk-agent-scan@latest --skills ~/path/to/my/SKILL.md # 扫描所有 claude skills uvx snyk-agent-scan@latest --skills ~/.claude/skills ``` #### 运行示例 [](https://asciinema.org/a/716858) ## 扫描器功能 Agent Scan 是一款安全扫描工具,用于扫描和检查您机器上 Agent 组件的供应链。它扫描常见的安全漏洞,如 Prompt 注入、Tool Poisoning、Toxic Flows 或 Agent Skills 中的漏洞。 Agent Scan 主要在两种模式下运行,可以联合或单独使用: 1. **Scan Mode**: CLI 命令 `snyk-agent-scan` 扫描当前机器上的 Agents 和 Agent 组件(如 Skills 和 MCP 服务器)。完成后,它将输出一份供用户审查的综合报告。 2. **Background Mode** (MDM, Crowdstrike). Agent Scan 定期在后台扫描机器,并将结果报告给 [Snyk Evo](https://evo.ai.snyk.io) 实例。安全团队可以使用此功能在中心位置监控全公司的 Agent 供应链。如需设置,请[联系我们](https://evo.ai.snyk.io/#contact-us)。 ## 工作原理 ### 扫描 Agent Scan 搜索您本地的 Agent 配置文件以找到 Agents、Skills 和 MCP 服务器。对于 MCP,它连接到服务器并检索工具描述。 然后它通过本地检查和调用 Agent Scan API 来验证组件。为此,Skills、Agent 应用程序、工具名称和描述会与 Snyk 共享。使用 Agent Scan 即表示您同意 Snyk 的 [Agent Scan 使用条款](./TERMS.md)。 系统会为您的扫描分配一个唯一的、持久的且匿名的 ID 以供分析。您可以使用 `--opt-out` 标志选择不发送此信息。 Agent Scan 不会存储或记录任何使用数据,即您的 MCP 工具调用的内容和结果。 ## CLI 参数 Agent Scan 提供以下命令: ``` snyk-agent-scan - Security scanner for agents, MCP servers, and skills ``` ### 通用选项 这些选项适用于所有命令: ``` --storage-file FILE Path to store scan results and scanner state (default: ~/.mcp-scan) --base-url URL Base URL for the verification server --verbose Enable detailed logging output --print-errors Show error details and tracebacks --full-toxic-flows Show all tools that could take part in toxic flow. By default only the top 3 are shown. --json Output results in JSON format instead of rich text ``` ### 命令 #### scan (默认) 扫描 MCP 配置,检查工具、Prompts 和资源中的安全漏洞。 ``` snyk-agent-scan scan [CONFIG_FILE...] ``` 选项: ``` --checks-per-server NUM Number of checks to perform on each server (default: 1) --server-timeout SECONDS Seconds to wait before timing out server connections (default: 10) --suppress-mcpserver-io BOOL Suppress stdout/stderr from MCP servers (default: True) --skills Autodetects and analyzes skills --skills PATH_TO_SKILL_MD_FILE Analyzes the specific skill --skills PATHS_TO_DIRECTORY Recursively detects and analyzes all skills in the directory ``` #### inspect 打印工具、Prompts 和资源的描述,无需验证。 ``` snyk-agent-scan inspect [CONFIG_FILE...] ``` 选项: ``` --server-timeout SECONDS Seconds to wait before timing out server connections (default: 10) --suppress-mcpserver-io BOOL Suppress stdout/stderr from MCP servers (default: True) ``` #### help 显示详细的帮助信息和示例。 ``` snyk-agent-scan help ``` ### 示例 ``` # 扫描所有已知 MCP configs snyk-agent-scan # 扫描特定 config file snyk-agent-scan ~/custom/config.json # 仅 inspect 工具而不进行验证 snyk-agent-scan inspect ``` ## 演示 此仓库包含一个易受攻击的 MCP 服务器,可以演示 Agent Scan 发现的 Model Context Protocol 安全问题。 如何演示 MCP 安全问题? 1. Clone 此仓库 2. 在克隆的 git 仓库根目录下创建一个 `mcp.json` 配置文件,内容如下: ``` { "mcpServers": { "Demo MCP Server": { "type": "stdio", "command": "uv", "args": ["run", "mcp", "run", "demoserver/server.py"], }, }, } ``` 3. 运行 Agent Scan: `uvx --python 3.13 snyk-agent-scan@latest scan --full-toxic-flows mcp.json` 注意:如果您将 `mcp.json` 配置文件路径放在其他位置,请调整 MCP 服务器配置内的 `args` 路径,以反映指向 MCP Server (`demoserver/server.py`) 的路径,以及运行 Agent Scan 的 `uvx` 命令中指向 `mcp.json` 的正确文件路径。 ## Agent Scan 暂不接受贡献 Agent Scan 目前不接受外部贡献。 我们欢迎以 GitHub Issues 的形式提出建议、Bug 报告或功能请求。 ## 开发设置 要从源代码运行 Agent Scan,请按照以下步骤操作: ``` uv run pip install -e . uv run -m src.agent_scan.cli ``` ## 将 Agent Scan 结果包含在您自己的项目/注册表中 如果您想将 Agent Scan 结果包含在您自己的项目或注册表中,请[联系我们](https://evo.ai.snyk.io/#contact-us)。我们有专为此目的设计的 API。使用标准 Agent Scan API 进行大规模扫描被视为滥用,将导致您的账户被封锁。 ## 文档 - [Scanning](docs/scanning.md) — 扫描工作原理、CLI 参数和用法示例。 - [Issue Codes](docs/issue-codes.md) — Agent Scan 检测到的所有安全问题的参考。 ## 延伸阅读 - [Introducing MCP-Scan](https://invariantlabs.ai/blog/introducing-mcp-scan) - [MCP Security Notification Tool Poisoning Attacks](https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks) - [WhatsApp MCP Exploited](https://invariantlabs.ai/blog/whatsapp-mcp-exploited) - [MCP Prompt Injection](https://simonwillison.net/2025/Apr/9/mcp-prompt-injection/) - [Toxic Flow Analysis](https://invariantlabs.ai/blog/toxic-flow-analysis) - [Skills Report](.github/reports/skills-report.pdf) ## 更新日志 参见 [CHANGELOG.md](CHANGELOG.md)。
标签:AI代理, AI安全, Chat Copilot, DNS 反向解析, MCP服务器, Python, Snyk, Tool Poisoning, 大语言模型安全, 工具影子, 工具投毒, 敏感数据泄露, 文档安全, 文档结构分析, 无后门, 机密管理, 结构化查询, 自动化安全, 逆向工具, 错误基检测, 静态代码分析