poc_scout 是一个物联网固件漏洞情报工具,以 MCP server 形式供 AI agent 使用。输入固件型号名(可带组件和版本),返回相关 CVE、按危险评分排序、自动下载 PoC 到本地。实现是纯 API + 规则匹配,核心不依赖大模型。

它解决什么

AI agent 解析固件之后,缺一层"查询":这个固件有哪些已知漏洞?PoC 在哪?poc_scout 就是这一层——上游 agent 负责解析固件,它负责查漏洞、下 PoC。

1
2
3
输入: firmware_name = "D-Link DIR-850L"
     component     = "busybox 1.19.4"    # 可带版本,做受影响范围匹配
输出: 相关 CVE 列表;落盘 output/<固件>/main.json 全量清单 + <CVE编号>.json PoC 明细

核心功能

  • 多源检索:cve.org 主源 + NVD 兜底 + OSV 组件漏洞,provider 顺序可配、失败自动降级
  • 版本精化:组件带版本时(如 openssl 1.0.1f),按受影响版本范围匹配,明确不受影响的剔除、命中的加分
  • 危险评分:EPSS 野外利用概率加权 + CVSS 严重等级(NVD → cve.org → OSV 权威序,缺的并发补查)
  • PoC 自动下载:GitHub(列文件树→挑代码→下 raw)、exploit-db、社区 PoC 补充;死链如实标注
  • 供应链安全:GitHub 下载 pin 死 commit SHA,仓库后续改动不会偷换已存文件;社区 PoC 默认关闭,下载后过静态风险扫描(curl|sh 管道执行、混淆加载等),通过或进白名单才把内容嵌进输出 JSON,否则只记元数据
  • 缓存与健壮性:结果缓存按查询 hash 存 cache/,24h 内同输入不重查重下;并发下载、限速预检;Hypothesis fuzz 保证畸形输入不崩,79 个测试

用法

作为 MCP server:

1
2
3
pip install -r requirements.txt
python server.py
claude mcp add poc_scout -- python server.py

注册后 agent 直接调 search_cve_by_firmware

参数 说明
firmware_name 固件型号名;也支持 CVE 编号
component 组件名(字符串/列表,可带版本),信息增强
download_poc 下载 PoC 到本地
community_poc 额外搜 GitHub 社区 PoC(默认关,安全考量)
top_n 返回条数,0 = 全部
force_refresh 强制绕过缓存

竞品对比

同类工具定位差异明显:

工具 定位 数据源 PoC 部署
poc_scout 查询层,服务 AI agent cve.org + NVD + OSV 自动下载 + 安全校验 MCP server
cve-bin-tool 扫描二进制识别漏洞 6+ 源 不下载 CLI
cve-search 本地 CVE 库搜索 NVD + RedHat 不下载 web/API
POC-in-GitHub PoC 数据索引 GitHub 仅索引链接 数据仓库
pyExploitDb CVE↔exploit-db 映射 exploit-db 仅编号映射 Python 库

poc_scout 的差异点:少数直接下载 PoC 落盘的工具之一,且下载做了 pin SHA + 风险扫描;接入形态是 MCP server,agent 原生调用;定位查询层,不做固件二进制扫描——那交给上游 agent。

下载链接

仓库:https://github.com/kaf6rim/poc_scout

代码、测试、使用文档都在里面。有什么想法或踩到坑,欢迎提 issue。