← 返回信息流
Agent SkillLINUX DO · AI·2 小时前

AgentScan:挖掘AI Agent暴露面,补全红队资产扫描盲区

原标题:AI Agent 暴露面:红队可能漏掉的一层资产

速览

随着MCP、A2A及本地LLM服务在公网和内网的广泛部署,传统扫描器难以识别其深层语义风险。开源工具AgentScan通过只读探测和协议解析,精准识别MCP工具调用、A2A Agent Card及各类LLM推理框架。该工具帮助红队和安全团队发现未授权的高权限入口,补全了AI资产管理的扫描盲区。

AI 深度解读

背景

随着大语言模型(LLM)和 AI Agent 在企业内部的快速普及,传统的网络安全边界正在发生深刻变化。研发、数据团队、运维甚至安全团队都在广泛部署本地或内网的 AI 服务,如 Ollama、vLLM、MCP Server 等。然而,这些服务往往被视为“实验性”或“内部工具”,导致其权限配置宽松、认证机制缺失,且极少被纳入传统的 CMDB(配置管理数据库)和安全扫描体系中。

作者在使用 MCP(Model Context Protocol)、A2A(Agent-to-Agent)以及本地 LLM 服务的过程中发现,许多 AI Agent 相关服务已经暴露在公网或内网中。传统的安全扫描工具通常只能识别出“这是一个 HTTP 端口”,却无法深入理解其背后的语义——即该服务是否连接了高权限工具、是否暴露了推理算力、是否具备横向移动的能力。这种“语义盲区”使得红队可能遗漏一层关键的攻击面,而蓝队则面临资产治理的真空。

核心内容

作者开发了一款名为 AgentScan 的开源 Go 语言命令行工具,旨在专门识别和评估 AI Agent 的暴露面。该工具不依赖传统的端口扫描逻辑,而是通过语义探测来揭示服务背后的真实风险。

1. 为什么传统扫描器失效?

传统资产发现仅能回答“哪个端口开着,跑的是什么服务”。但在 AI 时代,一个看似普通的 Web API 背后可能隐藏着巨大的风险:

  • MCP Server:可能暴露文件读写、Shell 执行、数据库查询、代码仓库访问甚至 CI/CD 控制等高权限工具调用能力。
  • LLM 推理 API:如 Ollama 或 vLLM,可能暴露未受保护的推理算力,甚至泄露内部使用的模型和敏感数据。
  • A2A Agent Card:作为 Agent 之间的“名片”,可能包含私网地址、测试环境入口和未授权的接口信息。

2. 三类典型的暴露面分析

MCP Server (Model Context Protocol)

MCP 旨在让 LLM 能够调用外部工具。开发者在本地调试或内网部署时,常忽略认证配置。一旦服务通过端口映射或反向代理暴露,便成为高危入口。

  • 风险等级:取决于挂载的工具。
    • 挂载 filesystem:可能导致敏感文件读取。
    • 挂载 shell:直接导致命令执行(RCE)。
    • 挂载数据库工具:可直接查询业务数据。
  • 现状:通过 Quake 等测绘平台粗略检索 app:"Model Context Protocol",可发现数万个公网样本,证明其已非纯内网玩具。

A2A Agent Card

A2A 协议允许 Agent 之间互相识别和协作。其标准路径通常位于 /.well-known/agent-card.json/.well-known/agent.json

  • 价值:不适合用于海量公网测绘,但在已知资产授权评估中极具价值。
  • 利用方式:通过探测这些路径,获取 Agent 的 skills、provider、endpoint 等信息,进而发现私网地址、JSON-RPC 端点或内部测试环境,为后续横向移动提供线索。

LLM 推理 API

Ollama、vLLM、SGLang、llama.cpp 等框架因启动简单、默认配置宽松而广泛存在。

  • 风险:公网暴露导致算力被滥用;内网暴露则涉及数据流向失控和模型资产泄露。
  • 识别逻辑:由于框架众多且端口不固定,AgentScan 采用“先端口拉取,后只读接口确认”的策略。
    • GET /api/tags (Ollama):返回已加载模型列表。
    • GET /v1/models (vLLM/OpenAI 兼容层):返回模型 ID 和类型。
    • GET /health / GET /info:验证服务存活及版本信息。
  • 安全性:AgentScan 内置 25 个推理框架的识别模板,仅使用 GET 请求进行只读探测,避免对目标造成干扰。

3. AgentScan 的工作流程与能力

AgentScan 的设计思路是“先存活发现,后语义识别”,以符合实际安全评估流程:

  1. 资产发现:使用 fscan 等工具拉取网段内的存活端口。
    fscan -h 192.168.1.0/24 -o fscan.txt
    
  2. 格式转换:将结果整理为 targets.txt,格式为 IP:Port
  3. 语义识别:调用 AgentScan 进行深度探测。
    agentscan scan -f targets.txt --skip-port-scan -o results.json
    

主要功能模块:

  • MCP 探测:支持 Streamable HTTP 和 HTTP+SSE Legacy 协议,解析协议字段和工具信息。
  • A2A 探测:抓取 Agent Card,解析 skills、provider、endpoint,检查未授权调用面。
  • LLM API 识别:通过 YAML 模板识别 25 个推理框架。
  • 报告生成:输出 JSON 数据并自动生成 HTML 报告,便于红队复盘和蓝队整改。

验证结果: 作者在随机抽取的 50 个样本中验证了 AgentScan 的有效性:

  • 识别出 15 个无鉴权的 MCP 服务,暴露 116 个可用工具。
  • 发现 1 个 A2A 服务。
  • 发现 9 个无鉴权的 LLM 平台,泄露 154 个模型信息。

关键要点

  • 语义盲区风险:传统扫描器无法识别 AI 服务背后的“工具调用能力”和“数据流向”,导致高权限入口被忽视。
  • MCP 的高危性:MCP Server 若挂载 Shell、数据库或文件系统工具且无认证,等同于直接暴露系统控制权或核心数据。
  • A2A 的横向价值:A2A Agent Card 是内网探测的“地图”,通过解析其中的 Endpoint 和 Skills,可发现隐藏的内部服务和测试环境。
  • LLM 资产治理缺失:Ollama、vLLM 等推理服务常处于 CMDB 盲区,认证薄弱,既是算力黑洞,也是数据泄露源。
  • AgentScan 的核心逻辑:采用“只读探测”原则,通过特定的 API 接口(如 /api/tags, /v1/models)而非执行推理请求来识别框架,确保评估过程的安全性和非侵入性。
  • 实战工作流:推荐结合 fscan 进行端口发现,再使用 AgentScan 进行语义识别,形成从“端口”到“服务语义”的完整评估闭环。

意义与影响

对红队(攻击方): AI Agent 暴露面提供了一层全新的、往往防御薄弱的入口。通过识别无鉴权的 MCP 或 LLM API,红队可以绕过传统的 WAF 和主机防护,直接利用 AI 工具链进行数据窃取、命令执行或横向移动。A2A 协议的存在甚至可能成为内网横向移动的跳板。

对蓝队(防守方):

  • 资产治理紧迫性:AI 服务正在成为企业新的基础设施,必须纳入统一的资产管理和安全扫描体系。
  • 最小权限原则:需严格审查 MCP 挂载的工具权限,避免将高权限工具(如 Shell、DB)直接暴露给未认证的 LLM 接口。
  • 认证与网络隔离:所有 AI 服务接口必须强制实施认证,并严格限制网络访问范围,避免将调试环境或内网服务意外暴露至公网。

对开源社区: AgentScan 的开源填补了 AI 安全评估工具在“语义层”的空白。它不仅是一个扫描器,更是一个行业标准的参考实现,推动了 MCP、A2A 等新兴协议的安全规范制定。

查看原文 →linux.do