Snyk Agent Scan
扫描 AI 代理组件(MCP 服务器、技能)中的提示注入和漏洞
证据显示:默认交互式扫描要求用户对每个stdio MCP服务器明确同意(y/n),并显示命令和参数;提供--dangerously-run-mcp-servers标志但明确警告仅在受信任环境使用;文档说明扫描会执行MCP配置中的命令,并建议在沙箱中运行;数据流透明性:文档说明技能、代理应用、工具名称和描述会与Snyk共享,但声明不存储或记录使用数据;敏感数据处理:检测硬编码密钥和凭据处理问题,但未说明如何处理扫描中发现的敏感数据;依赖安全:pyproject.toml中固定了rich版本,并覆盖了多个传递依赖的安全修复,但未提供依赖漏洞扫描证据;外部影响:扫描会执行MCP服务器命令,可能产生外部影响,但通过用户同意和警告进行控制;回滚:未提供扫描后回滚或撤销机制;来源归属:发布者未验证,但文档提供了GPG签名验证步骤。扣分原因:回滚机制缺失,数据流透明性部分(未说明API调用细节),敏感数据处理部分(未说明扫描后数据处置)。
证据显示:README和文档描述一致,CLI参数和命令定义清晰;依赖在pyproject.toml中列出,但未提供依赖可用性保证;失败消息:文档提到错误处理(如user_declined错误),但未提供详细的失败消息示例。扣分原因:依赖可用性未验证,失败消息细节不足。
证据显示:明确列出支持的代理和操作系统矩阵,以及检测范围;能力边界:文档说明哪些代理和范围被扫描,哪些不支持;触发精度:CLI参数允许指定配置文件、目录或技能,并提供--no-skills等选项;环境适配:支持多种操作系统和Python版本,提供uvx和二进制两种运行方式。扣分原因:能力边界部分未完全覆盖所有代理的细节,触发精度部分未说明所有可能的触发条件。
证据显示:信息架构清晰,有README、docs目录、CHANGELOG;安装说明详细,包括uvx和二进制方式;命名稳定性:CLI输出标记为实验性,可能变化;示例和FAQ:提供多个示例和演示;已知限制:文档提到某些代理的特定限制(如Amp项目范围技能未扫描);许可证:Apache-2.0,LICENSE文件存在;版本和变更日志:有CHANGELOG.md,版本号在pyproject.toml中;维护责任:文档说明不接受外部贡献,但欢迎issue。扣分原因:命名稳定性因实验性输出而扣分,维护责任部分未明确更新路径。
证据显示:输出可用性:提供JSON和富文本输出,文档说明JSON schema;边际价值:提供安全扫描功能,检测多种风险,有技术报告;成本效益:需要Snyk API token,可能涉及成本,但未提供定价信息。扣分原因:成本效益部分未提供具体成本信息,输出可用性部分未提供输出示例。
证据显示:声明可追溯性:README和文档详细描述功能,但未提供具体测试结果;跨来源佐证:提供技术报告和博客链接,但未提供独立验证;事实与推断分离:文档区分了功能描述和警告,但未明确区分事实和推断。扣分原因:声明可追溯性部分未提供测试证据,跨来源佐证部分未提供独立验证。
- 扫描MCP配置会执行其中的命令,存在安全风险,务必在沙箱中运行并仔细审查同意提示。
- CLI输出为实验性,可能随时变化,不建议依赖特定字段。
- 发布者身份未验证,使用前应验证二进制签名和校验和。
这个 Agent 能做什么,适合哪些场景?
Snyk Agent Scan 是一个命令行工具,自动发现并扫描本机安装的 AI 代理组件,包括 MCP 服务器和技能,以检测常见安全威胁如提示注入、工具投毒和恶意负载。它支持多种代理(Claude Code、Cursor、Windsurf 等)和多种操作系统(macOS、Linux、Windows)。该工具提供两种模式:CLI 扫描和后台 MDM 模式,可定期扫描并上报到 Snyk Evo 平台。需要 Snyk API 令牌,且有安全警告:扫描 MCP 配置会执行其中定义的命令。CLI 输出为实验性,可能变更。
Agent Scan 自动发现本机的代理配置(如 Claude Code、Cursor、Windsurf、Gemini CLI 等),读取 MCP 配置文件(如 mcp.json、.vscode/mcp.json),连接 stdio MCP 服务器获取工具描述,并扫描技能文件(如 SKILL.md)。它执行本地检查并调用 Agent Scan API 进行验证,检测 15+ 种风险,包括提示注入(E001)、工具投毒(E001)、工具遮蔽(E002)、有毒流程(ToxicFlows)、恶意负载(E006)等。输出默认提供富文本报告,也可用 --json 输出 JSON。命令包括 scan、inspect 和 help,支持 --no-skills、--dangerously-run-mcp-servers 等选项。
- 安全团队在 CI/CD 流水线中扫描 MCP 配置,确保无提示注入风险
- 开发者在本地快速扫描 ~/.claude/skills 目录,发现技能中的恶意负载
- macOS 用户扫描整个系统的代理组件,获得设备级清单
- 企业在 MDM 后台模式下持续监控公司范围内的代理供应链,上报到 Snyk Evo
- 在沙箱环境中评估第三方 MCP 配置,避免执行恶意命令
- 安全研究员分析特定 MCP 配置文件,检查工具投毒和有毒流程
这个 Agent 有哪些优点和局限?
- 自动发现多种代理(Claude Code、Cursor、Windsurf 等)和技能
- 检测 15+ 种特定风险,如提示注入、工具投毒、恶意负载
- 支持 macOS、Linux、Windows 多平台
- 提供 MDM 后台模式,便于企业集中监控
- 提供 GitHub Releases 独立二进制,附带签名校验
- 需要 Snyk API 令牌,依赖 Snyk 服务进行验证
- 扫描 MCP 配置会执行其中命令,存在安全风险,需在沙箱中运行
- CLI 输出为实验性,不稳定,不适合生产依赖
- 不支持外部贡献,仅通过 GitHub issues 反馈
- 大规模调用 API 可能被视为滥用,导致账号被封
如何安装或部署这个 Agent?
- 注册 Snyk 并获取 API 令牌(https://app.snyk.io/account)。2. 安装 uv(https://docs.astral.sh/uv/getting-started/installation/)。3. 设置环境变量 SNYK_TOKEN。4. 直接运行
uvx snyk-agent-scan@latest,或从 GitHub Releases 下载独立二进制。
如何使用这个 Agent?
运行 uvx snyk-agent-scan@latest 扫描整个机器。也可指定路径:uvx snyk-agent-scan@latest ~/.vscode/mcp.json 扫描单个配置,uvx snyk-agent-scan@latest ~/my/SKILL.md 扫描单个技能,uvx snyk-agent-scan@latest ~/.claude/skills 扫描目录。交互式运行时会提示是否启动每个 MCP 服务器;非交互环境需使用 --dangerously-run-mcp-servers。可加 --json 输出 JSON。
这个 Agent 与同类方案有什么区别?
该工具由 Snyk 提供,与 Invariant Labs 的 MCP-Scan 相关,但本文档未明确提及竞争产品。