AI-Infra-Guard AI 基础设施安全扫描:YAML 指纹规则、2000+ CVE 漏洞库与扫描器源码解析

AI-Infra-Guard AI 基础设施安全扫描:YAML 指纹规则、2000+ CVE 漏洞库与扫描器源码解析 AI-Infra-Guard AI 基础设施安全扫描YAML 指纹规则、2000 CVE 漏洞库与扫描器源码解析【免费下载链接】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-GuardAI-Infra-Guard下称 AIG的AI 基础设施安全扫描模块面向 AI 系统中基于 Web 的组件模型服务、LLM 应用框架、Jupyter、n8n 工作流等通过 YAML 指纹识别 版本化漏洞库的方式检测已知 CVE。本文基于 AIG 官方文档与仓库源码完整讲解该模块的使用方式WebUI 与 CLI、指纹库/漏洞库管理、YAML 指纹规则语法与匹配引擎实现以及内置 100 AI 组件、2000 漏洞的覆盖范围读完后你可以直接上手扫描、编写自定义指纹规则并理解指纹匹配引擎的底层调用链。功能概述AI 基础设施安全扫描模块专为检测 AI 系统中基于 Web 的组件的已知安全漏洞而设计。其工作模式可以概括为三步指纹识别对目标 URL/IP 发起 HTTP 探测基于data/fingerprints/下的 YAML 指纹规则判定目标运行的是哪类 AI 组件如 Dify、vLLM、Ollama、Gradio版本提取对命中指纹的目标按指纹中的version规则继续请求并提取版本号漏洞匹配将版本与data/vuln/英文环境为data/vuln_en/下的漏洞模板做版本区间比对输出漏洞报告。该流程的核心源码位于 指纹解析器 与 指纹执行器指纹数据位于 data/fingerprints/漏洞数据位于 data/vuln/。核心特性全面覆盖支持识别 100 种主流 AI 组件框架覆盖 2000 已知 CVE 漏洞灵活部署支持单目标扫描、批量扫描文件导入目标及本地服务一键检测智能匹配基于 YAML 规则的指纹识别系统内置词法分析器、语法解析器与求值器准确率与性能兼顾可扩展性支持自定义指纹规则和漏洞模板适应不同环境需求在 WebUI插件管理页面可直接搜索、新增、修改指纹与漏洞修改后再次扫描即生效。快速使用指南方式一通过 WebUI 界面操作启动 AIG 后在主界面点击AI 基础设施扫描选项卡在目标输入区域填写待扫描的 URL 或 IP 地址支持单行或多行输入每行一个目标支持从 TXT 文件导入目标列表填写 IP 地址将自动扫描该 IP 下开放的所有常见端口如需检测 AI 未鉴权请选择多模态大模型推荐模型 GPT5 / Gemini Pro / Sonnet4.5点击开始扫描按钮系统将自动执行指纹识别、版本提取与漏洞检测。方式二通过 CLI 命令行扫描AIG 的 Go CLI 提供了与 WebUI 相同的原始扫描能力命令定义见 cmd/cli/cmd/scan.go。常用参数如下参数默认值说明-t, --target空目标 URL可指定多个--target xx.com --target aa.com-f, --file空包含目标 URL 的文件路径批量扫描-o, --output空输出文件路径--timeout5请求超时时间秒--proxy-url空代理服务器 URL--header空HTTP 请求头可指定多个例如--header key:value--limit200每秒最大请求数限流--fpsdata/fingerprints指纹模板文件或目录--vuldata/vuln漏洞数据库目录--list-vulfalse列出漏洞模板--check-vulfalse验证漏洞模板--localscanfalse一键本地扫描--langzh响应语言 zh/en例如对单个目标执行扫描并输出结果./aig scan --target https://target.example.com --limit 200 --timeout 10 -o report.json需要说明的是--fps指向的目录中的 YAML 文件即指纹库--vul指向的目录即漏洞库与 WebUI插件管理页面管理的是同一批文件data/fingerprints/、data/vuln/。WebServer 模式下的默认值同样在 cmd/cli/cmd/webserver.go 中写死为这两个目录。指纹库与漏洞库管理内置指纹库AIG 内置了丰富的 AI 组件指纹库当前仓库data/fingerprints/下有 100 份组件 YAML如 ollama.yaml、dify.yaml、vllm.yaml 等可通过 WebUI插件管理页面查看和管理点击界面左下角插件管理进入指纹库管理页面在指纹库管理页面可查看所有内置的 AI 组件指纹规则支持指纹搜索、新增、修改等操作。在插件管理中可以搜索指纹、对应漏洞、新增、修改等操作修改后再次扫描便会使用最新的指纹以及漏洞库。该页面背后的后端接口实现在 common/websocket/knowledge_api.go 中接口会读取data/fingerprints/下所有分类和 YAML 文件并将编辑结果以{name}.yaml的形式写回同一目录漏洞库读写则根据语言切换data/vuln与data/vuln_en目录knowledge_api.go。支持的 AI 组件及漏洞覆盖AIG 针对 AI 基础设施中的关键组件提供全面的安全检测当前支持的组件及漏洞数量如下数据随漏洞库更新变化以仓库data/vuln/实际内容为准组件类别组件名称漏洞数量风险等级模型部署与服务vllm72中gradio51高triton-inference-server41中高ollama32中高tensorrt-llm12中高fastchat9中llama-cpp9中高Xinference3低ChatRTX1低huggingface-tgi1中高kubeai1高llmstudio1低localai1中tensorzero1低LLM 应用框架openwebui87中高langflow111中mlflow79高flowise97中langchain52高open-webui44中高Dify32高LiteLLM31中Chuanhugpt27中高librechat21中anythingllm19中高ragflow12中nextchat8中qanything8中fastgpt6中new-api5中LobeChat4中crewai4严重langfuse4低chuanhuchatgpt1中helicone1中lobehub1中数据处理与分析clickhouse26高dask3低feast3低可视化与交互jupyter-server19中高jupyterlab12中jupyter-notebook2低marimo2中工作流编排n8n60中高ray12中simstudioai9中kubeflow8中n8n-mcp4中高9router3高其他 AI 组件openclaw657中高praisonai112严重pyload-ng24中astrbot14中comfyui13中crawl4ai11严重sglang15中bentoml6中pinchtab6中高kubepi5中sillytavern5中dynamo5高autogpt5中flyto24中llamafactory4低lmdeploy4低lollms4中pipecat3低agenticmail2中boxlite2中hermes2严重instructlab2低jan2低junoclaw2中langroid2严重maxkb3中mcp2中mcp sse2中paperclip2中weknora2低Clawdbot Gateway1中ComfyUI-Ace-Nodes1低ComfyUI-Bmad-Nodes1低ComfyUI-Custom-Scripts1低ComfyUI-Impact-Pack1低ComfyUI-Manager1低ComfyUI-Prompt-Preview1低agentic-flow1中ai-chatbot1中ai-code1严重ai-copilot1中ai-engine-wordpress1中blinko1低comfy_mtb1低f5-tts1中gpt-sovits1中guardrails-ai1中langbot1低lightrag2低lumiverse1低mcp-documentation-server1中mcp-pinot1中mcp-server-kubernetes1中mem01低netlicensing-mcp1中network-ai1中nvidia-trt-llm1高qnabot-on-aws1低suna1中superagi1低text-generation-webui1中upsonic1中nocobase1严重sub2api1高trigger.dev1严重AI Agent 配置安全AI-Agent-Config4高总计2000注漏洞数据库持续更新中高风险组件建议定期扫描。指纹匹配规则详解规则结构AIG 使用 YAML 格式定义指纹匹配规则主要包含以下部分info: name: 组件名称 author: 规则作者 severity: 信息级别 metadata: product: 产品名称 vendor: 供应商 http: - method: HTTP请求方法 path: 请求路径 matchers: - 匹配条件 version: - method: HTTP请求方法 path: 版本探测路径 extractor: part: 提取位置body/header group: 正则捕获组号 regex: 版本号正则与文档骨架相比源码中的完整结构体还定义了若干可选字段见 parser.goFingerPrintInfo支持example、desc、recommendation字段metadata为map[string]string其中metadata.type会写入指纹结果preload.goHttpRule支持dataPOST 请求体字段用于以 POST 方法探测的场景version规则除extractor正则提取外还支持versionrange字段当多条版本探测各自给出版本区间时引擎会对区间求交集来收敛出模糊版本号EvalFpVersion。示例Dify 指纹规则下面是仓库中真实的 data/fingerprints/dify.yaml 规则全文展示了多路径多匹配条件 双版本端点的典型写法info: name: dify author: 腾讯朱雀实验室 severity: info metadata: product: dify vendor: dify http: - method: GET path: / matchers: - bodytitleDify/title || icon97378986 - bodycontent\Dify - method: GET path: /apps matchers: - bodytitleDify/title bodydata-public-edition version: - method: GET path: /health extractor: part: header group: 1 regex: x-version:\s*(\d\.\d\.?\d*) - method: GET path: /console/api/version extractor: part: header group: 1 regex: x-version:\s*(\d\.\d\.?\d*)对照源码可以确认几个细节http数组中每条规则是或关系任一路径的任一matchers命中即认定该组件存在命中后Deduplication会对同名指纹去重preload.goversion数组中的多条探测按顺序尝试extractor.regex先加上(?i)标志编译即正则匹配本身不区分大小写再从part指定的body或header文本中按group指定捕获组取值preload.goicon匹配使用的是 favicon 的感知哈希值int32扫描器对每个响应计算 SHA256 得到hash值一并参与匹配preload.go。匹配语法说明匹配位置位置说明示例titleHTML 页面标题titleGradiobodyHTTP 响应正文bodygradio-configheaderHTTP 响应头headerX-Gradio-Version: 3.34.0icon网站 favicon 哈希值icond41d8cd98f00b204e9800998ecf8427e从源码结构看匹配引擎synax.go实际支持的左值关键字为body、header、icon、hash、version、is_internal其中hash是响应体 SHA256 值title在部分实现中作为 body 的别名出现在规则中。逻辑运算符运算符说明示例模糊包含匹配不区分大小写bodygradio精确等于匹配headerServer: Gradio!不等于匹配header!Server: Apache~正则表达式匹配body~Gradio v[0-9].[0-9].[0-9]逻辑与bodygradio headerX-Gradio-Version\|\|逻辑或bodygradio || bodyGradio()分组改变优先级(bodygradio || bodyGradio) headerX-Gradio-Version此外version关键字还支持版本比较运算符、、、用于漏洞模板中版本区间命中的判断AdvisoryEval。需要特别指出一个与文档描述有出入的实现细节求值时左右两侧文本都会先strings.ToLower再比较synax.go因此精确匹配在实际实现中同样是大小写不敏感的!的语义实现为不包含。编译与求值流程指纹规则从 YAML 到可执行对象的完整调用链如下均有源码可查YAML 反序列化InitFingerPrintFromData将 YAML 字节流解析为FingerPrint结构并对http与version两组规则分别调用compileMatchers预编译parser.go词法分析ParseTokens将每条 matcher 字符串切分为body/header/icon/hash/version关键字 token、运算符 token 与文本 tokentoken.go语法解析CheckBalance校验括号平衡后TransFormExp递归下降构建表达式树dslExp叶子→logicExp/||→bracketExp括号synax.go~的正则在解析阶段即编译并缓存运行期零编译开销约束校验compileMatchers强制要求hash类 matcher 不能与其他字段混合出现在同一 matcher 或同一请求规则中否则直接报hash matcher cannot be combined with other fields错误parser.go编写自定义规则时需要注意求值Rule.Eval以短路方式递归求值逻辑树左值为 false 时不再评估右值||左值为 true 时直接返回synax.go。版本号解析的健壮性处理指纹引擎在版本比对前会对版本号做标准化versionCheck去掉前缀vlatest归一化为999对 3.11.0rc2 这类 PEP 440 预发布号先改写为 3.11.0-2 再删除字母避免两侧数字粘连成 3.11.02。版本比较基于hashicorp/go-version库完成无法解析的版本回退为0.0.0而非直接报错保证扫描流程不因脏版本号中断。指纹执行器的工作方式指纹执行器Runner.RunFpReqspreload.go的关键行为包括并发探测以sizedwaitgroup限制并发数对每个指纹的每条http规则发起 GET/POST 请求首页缓存目标根路径GET /的响应只请求一次并缓存给所有path: /的规则复用显著降低请求量多通道匹配构造Config{Body, Header, Icon, Hash}四元组同时支持响应体、响应头、favicon 哈希、响应体哈希四种匹配通道Go 原生指纹扩展除 YAML 规则外FingerPrintFunc接口允许用 Go 代码实现自定义指纹Match/GetVersion/Name当前仓库内置了 MLflow 的原生实现CollectedFpReqs、mlfow.go用于 YAML 正则难以表达的版本探测场景去重收敛同名指纹保留版本号非空的结果Deduplication。相关行为可由单元测试验证如 preload_test.go 使用data/fingerprints/anythingllm.yaml做真实规则回归version_detection_test.go 覆盖版本探测逻辑。最佳实践建议定期扫描建议每周对 AI 基础设施进行一次全面扫描及时发现新出现的漏洞重点关注高危组件gradio、langchain、clickhouse 等高漏洞数量组件应优先处理自定义规则扩展针对企业特定的 AI 组件可添加自定义指纹规则增强检测能力。编写时遵循上文规则结构章节的 YAML 结构注意hash类 matcher 的互斥约束并保证name唯一WebUI 保存时以{name}.yaml为文件名写回data/fingerprints/结合 CI/CD 流程将安全扫描集成到 AI 应用的持续集成流程中实现安全左移。CLI 的scan子命令参数齐全限流、超时、代理、输出文件适合脚本化调用漏洞修复跟踪对扫描发现的漏洞建立跟踪机制确保及时修复。通过 AI 基础设施安全扫描模块你可以有效识别 AI 系统中潜在的安全风险为构建安全可靠的 AI 基础设施提供有力保障。【免费下载链接】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),仅供参考