AI-Infra-Guard 案例解析:AI 基础设施 CVE 扫描与 CI/CD、DevSecOps 集成实战
【免费下载链接】AI-Infra-GuardA full-stack AI Red Teaming platform securing AI ecosystems via Agent Scan, Skills Scan, MCP scan, AI Infra scan and LLM jailbreak evaluation.项目地址: https://gitcode.com/GitHub_Trending/ai/AI-Infra-Guard
本文基于 AI-Infra-Guard(A.I.G)开源仓库中的案例文档展开,重点讲清两件事:一是 A.I.G 的AI Infra Scan能力如何对 vLLM、ComfyUI、Ollama、Triton Inference Server、Ray 等 AI 框架组件进行指纹识别与 CVE 漏洞检测,并给出其"指纹模板 → 版本提取 → 漏洞规则匹配"的完整实现链路;二是如何在 CI/CD 流水线、DevSecOps 平台和 Git 代码评审三个典型场景中把 A.I.G 接入现有业务管线,实现自动化安全测试。读完后,你将能够理解 AI 基础设施 CVE 扫描的底层机制,并能按照文中的集成模式在自己的环境中落地安全门禁。
一、内部 AI 基础设施漏洞扫描:案例背景
A.I.G 案例文档指出的第一个典型落地场景是企业内部 AI 基础设施的漏洞自查。企业的 AI 平台通常由 vLLM、Ollama、ComfyUI、Triton Inference Server、Ray 等开源组件拼装而成,这些组件自身的历史 CVE 往往被忽视。A.I.G 的AI Infra Scan功能正是为此设计:它连接到正在运行的 AI 服务网络地址(注意:扫描对象是运行中的服务,而不是 GitHub 仓库或源码路径),先识别服务指纹,再提取版本,最后匹配内置漏洞库给出 CVE 风险结论。
从仓库 README 的功能矩阵看,AI infra vulnerability scan声称支持"精准识别 100 余种 AI 框架组件、覆盖 2000+ 已知 CVE",并明确列出 Ollama、ComfyUI、vLLM、n8n、Triton Inference Server 等框架——这与案例文档中列举的组件清单相互印证。
1.1 漏洞库结构:每条 CVE 是一个 YAML 规则文件
漏洞数据集中在 data/vuln/ 目录,按组件名分目录存放,例如 data/vuln/vllm/、data/vuln/comfyui/、data/vuln/triton-inference-server/、data/vuln/ray/。仓库同时提供中英文两套漏洞描述目录(data/vuln/与 data/vuln_en/),可通过参数选择语言输出。
以 vLLM 的 CVE-2024-11040.yaml 为例,一条漏洞规则的完整结构如下:
info: name: vllm # 必须与指纹模板的 name 对应,用于关联匹配 cve: CVE-2024-11040 summary: vllm-project vllm版本0.5.2.2易受拒绝服务攻击。 details: | 此漏洞影响"POST /v1/completions"和"POST /v1/embeddings"端点。 ... cvss: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H severity: HIGH security_advise: | 1. 升级到vllm-project vllm版本0.5.2.3或更高版本。 2. 为"POST /v1/embeddings"端点实施输入验证以防止无效输入。 rule: version < "0.5.2.3" # 版本判定 DSL,指纹识别到版本后执行 references: - https://nvd.nist.gov/vuln/detail/CVE-2024-11040rule字段是该规则的核心:它是一条版本判定表达式,在扫描器提取到目标服务版本后才参与求值。
1.2 源码实现:AdvisoryEngine 如何加载与匹配漏洞
漏洞引擎的实现在 pkg/vulstruct/advisory.go:
LoadFromDirectory(dir):递归扫描目录下的.yaml文件并逐条解析,构成本地漏洞库。规则结构体与解析逻辑定义在 pkg/vulstruct/scanner.go 的VersionVul中——每条规则包含Info(CVE、摘要、CVSS、严重级、修复建议、引用链接)和Rule(版本 DSL 表达式),RuleCompile字段保存编译后的可执行规则;LoadFromHost(host, lang):从 A.I.G 的 Web 服务接口GET /api/v1/knowledge/vulnerabilities?page=1&size=9999&lang={lang}远程拉取漏洞库,并支持中英文语言切换,这正是"漏洞库可持续更新"的实现路径;GetAdvisories(packageName, version, isInternal):匹配逻辑为——先按指纹名(FingerPrintName)过滤出该组件的全部规则,若拿到了具体版本且规则非空,则调用编译后的RuleCompile.AdvisoryEval(...)对版本 DSL 求值;求值命中的 CVE 才会出现在最终结果中。
1.3 指纹模板:CVE 检测的前提
版本判定必须建立在"先认出这是什么组件、再读出版本号"之上。指纹模板位于 data/fingerprints/,每个组件一个 YAML。以 data/fingerprints/vllm.yaml 为例:
info: name: vllm author: 腾讯朱雀实验室 http: - method: GET path: '/version' matchers: - body="{\"version\":\"" # 识别 vLLM 服务的探测规则 - method: GET path: '/v1/models' matchers: - header="uvicorn" && body="\"object\"" && body="\"data\"" version: - method: GET path: '/version' extractor: part: body group: 1 regex: '{"version":"(\d+\.\d+\.?\d+?)' # 版本号提取正则即http段负责识别(匹配请求/响应特征),version段负责用正则提取版本号。其他组件同理,例如 data/fingerprints/ollama.yaml 通过body="Ollama is running"识别服务、从/api/version提取版本;data/fingerprints/triton.yaml 则通过/v2响应中同时出现"name"、"extensions"和"triton"来识别 Triton Inference Server;Ray 对应 data/fingerprints/ray.yaml,ComfyUI 则有多份模板位于 data/fingerprints/comfyui/。
1.4 扫描执行链:Runner 如何把三者串起来
整体执行器在 common/runner/runner.go。Runner结构体持有指纹引擎(fpEngine *preload.Runner)与漏洞引擎(advEngine *vulstruct.AdvisoryEngine),初始化顺序为:
initStorage()/processTargets():准备混合存储(hybrid map,用于缓存与并发协调)并解析目标列表;initFingerprints():加载指纹模板(支持本地目录或远程加载);initVulnerabilityDB():构建 AdvisoryEngine,加载本地或远程漏洞库;- 运行时对每个目标并发执行指纹探测与版本提取,命中的组件再调用
GetAdvisories完成 CVE 匹配。
每条扫描结果由 common/runner/result.go 中的HttpResult承载,字段包含url、HTTP 状态码、响应时间、fingerprints(指纹命中结果)和advisories(命中的 CVE 列表,即VersionVul结构),支持JSON()序列化输出——这个 JSON 输出正是后续 CI/CD 与 DevSecOps 集成时机器可消费的数据格式。
从源码结构看,整个检测过程是纯黑盒的:不依赖目标机器上的 agent,只要网络可达即可识别并给出 CVE 结论,这也是它能直接嵌入流水线"构建/部署前探测"环节的底层原因。
二、集成场景一:CI/CD 流水线中的安全门禁
案例文档给出的第一个集成场景是:A.I.G 可作为 CI/CD 管线中的安全门禁,在代码提交、构建或部署阶段自动触发扫描,只有通过安全检查的应用才能进入下一阶段。文档给出的示例集成点为:在 MCP Server 构建之后、部署之前,调用 A.I.G 的 API 进行安全检测。
结合仓库实际能力,这个场景可以拆成两条落线路径:
- MCP Server 资产:仓库内 mcp-scan/ 提供独立的
mcp-scanCLI(README 说明其可通过pip install安装、支持从源码和远程 URL 两种方式扫描 MCP Server),可在流水线"构建完成、部署前"的 stage 中以独立命令运行,扫描失败即中断流水线; - 运行中的 AI 基础设施服务:对已部署的 AI 服务(如 vLLM/Ollama 实例),通过 A.I.G 的任务创建 API 发起
AI Infra Scan任务(README 说明其提供覆盖 AI infra scan、MCP Server Scan、Jailbreak Evaluation 的任务创建 API),以 JSON 结果中的advisories字段是否为空作为门禁判断条件。
流水线中的典型做法是:将 A.I.G 返回的 JSON 结果(HttpResult序列化格式)写入流水线制品,advisories非空则标记该构建为"安全不通过",阻止部署。由于漏洞库与指纹库可通过远程接口更新(见LoadFromHost),门禁规则不需要随流水线镜像重新构建。
三、集成场景二:DevSecOps 平台的安全态势汇聚
第二个场景是把 A.I.G 接入 DevSecOps 平台,将各类风险扫描结果汇聚为统一安全看板,提供全面的安全态势感知。文档给出的集成点是:通过 API 或报告导出功能,把 A.I.G 的扫描报告导入 DevSecOps 平台。
落到实现层面,可利用的对接面包括:
- 结构化 JSON 输出:如前所述,扫描结果天然可序列化为 JSON(
HttpResult.JSON()),包含指纹与 CVE 明细,可直接对接 DevSecOps 平台的数据接入通道; - 漏洞知识接口:A.I.G Web 服务暴露
GET /api/v1/knowledge/vulnerabilities漏洞库查询接口(见 pkg/vulstruct/advisory.go),DevSecOps 侧可定期同步漏洞库元数据,用于在平台内展示"组件 → 已知 CVE"的关联视图; - 多类扫描结果的汇聚:A.I.G 除 AI Infra Scan 外还提供 MCP Server & Agent Skills 扫描(覆盖 14 大类安全风险)、Agent Scan 等能力,DevSecOps 看板可把不同扫描类型的结果按资产维度归并,形成统一态势视图。
四、集成场景三:Git 代码安全评审
第三个场景是 A.I.G 与代码仓库集成:在 Pull Request / Merge Request 事件时自动触发安全扫描,并将结果直接展示在代码评审界面。文档给出的集成点是:配置 webhook,在 PR/MR 事件触发 A.I.G 扫描,并把状态检查结果回写到代码仓库。
实现模式上,这与通用 CI 集成一致:
- 代码仓库(Git 平台)在 PR/MR 事件上发出 webhook;
- 接收端(可以是 CI 系统或轻量中转服务)根据事件类型调用 A.I.G 对应能力——针对 MCP Server / Agent Skills 类代码资产,可调用 MCP/Skill 扫描能力(仓库内 mcp-scan/、skill-scan/ 均提供可独立运行的 CLI 与 Python 包,便于在流水线或 webhook 处理器中直接执行);
- 扫描完成后,将通过/失败状态以状态检查(status check / commit status)形式回写到代码仓库,评审人即可在 PR 界面看到安全扫描结论。
五、如何在仓库中自行验证
如果你想复现案例文档描述的检测能力并核实其实现,可按以下路径逐层查看:
| 验证目标 | 路径 |
|---|---|
扫描入口(CLIscan子命令) | cmd/cli/cmd/scan.go |
| 扫描执行器与初始化链 | common/runner/runner.go |
| 结果结构(JSON 输出) | common/runner/result.go |
| 漏洞规则解析(Rule DSL) | pkg/vulstruct/scanner.go |
| 漏洞引擎(本地/远程加载、匹配) | pkg/vulstruct/advisory.go |
| 组件指纹与版本提取模板 | data/fingerprints/vllm.yaml、data/fingerprints/ollama.yaml |
| 组件 CVE 规则库 | data/vuln/(如 data/vuln/vllm/CVE-2024-11040.yaml) |
需要注意的是适用前提:AI Infra Scan面向的是可网络访问的运行中服务,且检测结论受限于当前指纹库与漏洞库的覆盖范围;README 中的组件数与 CVE 规则数(146 个 AI 组件、2000+ 规则)来自其 v4.6.0 版本的更新说明,实际以当前仓库data/fingerprints/与data/vuln/目录内容为准。
六、小结
案例文档给出的是一条清晰的使用路径:先用AI Infra Scan对内部 AI 基础设施(vLLM、ComfyUI、Ollama、Triton、Ray 等)完成 CVE 自查,再把 A.I.G 以"API/报告"为接口嵌入 CI/CD 门禁、DevSecOps 汇聚看板和 Git 评审三个自动化环节。从仓库源码看,这一路径的可行性建立在三个已实现的机制之上:声明式的 YAML 指纹/漏洞规则(data/fingerprints、data/vuln)、可本地/远程加载的AdvisoryEngine匹配引擎(pkg/vulstruct),以及可并发执行、输出结构化 JSON 的Runner(common/runner)。理解这三层,也就理解了 A.I.G 能够作为安全基础设施被持续调度的原因。
【免费下载链接】AI-Infra-GuardA full-stack AI Red Teaming platform securing AI ecosystems via Agent Scan, Skills Scan, MCP scan, AI Infra scan and LLM jailbreak evaluation.项目地址: https://gitcode.com/GitHub_Trending/ai/AI-Infra-Guard
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考