AI-Infra-Guard指纹识别技术深度解析:如何精准识别100+AI框架服务

AI-Infra-Guard指纹识别技术深度解析:如何精准识别100+AI框架服务 AI-Infra-Guard指纹识别技术深度解析如何精准识别100AI框架服务【免费下载链接】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 基础设施安全领域指纹识别是一切漏洞扫描的第一步——只有先搞清楚对面跑的是什么框架、什么版本才能精准匹配已知漏洞。AI-Infra-Guard 内置了一套覆盖140 款 AI 框架与服务的指纹识别引擎能在数秒内判断目标是否为 Dify、Ollama、vLLM、LangFlow、ComfyUI 等常见 AI 基础设施并尽可能推断其版本范围。本文将拆解这套 AI 基础设施指纹识别引擎的工作原理帮你理解它是如何做到又快又准的。为什么 AI 指纹识别如此重要 传统 Web 指纹主要识别 CMS、中间件而 AI 基础设施生态更加碎片化模型推理网关vLLM、SGLang、RAG 平台Dify、FastGPT、Agent 框架LangFlow、CrewAI、MCP 服务……一旦识别失败后续的漏洞规则就无从谈起。AI-Infra-Guard 的指纹引擎解决了三个关键问题覆盖广规则库覆盖 100 主流 AI 框架从本地模型运行器到企业级推理平台判得准多维度证据链响应体、响应头、图标、页面哈希避免单一特征误判能推版本不仅识别是什么还能推断是什么版本区间为漏洞利用条件判断提供依据整体架构数据、解析、执行三层协作整个指纹识别模块位于 common/fingerprints/ 目录采用清晰的三层设计层次位置职责规则数据层data/fingerprints/143 个 YAML 指纹规则文件每个框架一份规则解析层common/fingerprints/parser/将 YAML 中的匹配表达式编译为可执行 DSL匹配执行层common/fingerprints/preload/并发发送探测请求、评估规则、提取版本这种规则与引擎分离的设计带来一个巨大好处新增一个框架的指纹只需要新增一个 YAML 文件无需改动任何 Go 代码。140 指纹规则库每个框架一份 YAML打开 data/fingerprints/ 目录你会看到按产品命名的 YAML 文件ollama.yaml、dify.yaml、vllm.yaml、langflow.yaml……几乎涵盖了整个 AI 基础设施生态还包括 MCP 服务、AI 网关Kong、Envoy、Cloudflare等周边组件。以 data/fingerprints/ollama.yaml 为例一份规则由三部分组成info指纹基本信息名称、作者、严重级别、厂商元数据http识别规则——向哪些路径发什么请求、命中什么特征version版本探测规则——如何从响应中抽取版本号以 data/fingerprints/dify.yaml 为例它的识别规则是GET /的响应体包含titleDify/title或者favicon 图标哈希等于97378986。注意这里用的是或逻辑——两个证据任一命中即可识别显著提高了召回率。自定义 DSL像写表达式一样写匹配规则指纹规则中最灵活的部分是 matchers 表达式。解析层 common/fingerprints/parser/ 实现了一个小型 DSL 引擎见 parser/token.go支持四类关键字与多种运算符匹配目标body响应体、header响应头、iconfavicon 图标哈希、hash整个响应的 SHA256 摘要比较运算符包含、完全相等、!不等、~正则匹配逻辑组合与、||或、()括号这意味着你可以写出bodytitleDify/title bodydata-public-edition这样精确的多重条件也可以像 Ollama 规则那样简单到bodyOllama is running。表达式在加载时就被 InitFingerPrintFromData 编译成可执行的 DSL 对象扫描时只做快速求值性能开销极小。版本识别从精确抽取到区间推断识别出框架只是第一步版本信息才能决定漏洞是否成立。引擎支持两种版本探测方式① 精确抽取对特定接口发请求用正则从响应中提取版本号。例如 Dify 会请求/health和/console/api/version两个接口用正则x-version:\s*(\d\.\d\.?\d*)从响应头中抓取版本号。② 模糊区间推断有些服务不公开版本号但不同版本的行为存在差异。此时可以在规则中写多个探测路径 版本区间引擎会求取所有命中区间的交集推断出一个合理的版本范围。区间解析逻辑实现于 common/fingerprints/preload/version_range.go支持、及数学区间记法如[1.0, 2.0]。Favicon 识别用视觉指纹兜底很多 AI 平台响应体千篇一律但网站图标favicon却很少改动。AI-Infra-Guard 利用了这一点扫描器解析首页 HTML找到link relicon声明的图标地址兜底尝试/favicon.ico见 common/utils/favicon.go下载图标后计算其哈希值见 common/runner/runner.go匹配时与规则中的icon97378986这类条件比对图标哈希识别不依赖页面内容即使框架被反代、响应被改写也能以图认人是提升识别成功率的重要兜底手段。扫描执行并发探测 智能去重执行引擎 common/fingerprints/preload/preload.go 中的RunFpReqs函数负责驱动整个识别流程首页缓存所有针对GET /的规则共享同一次首页请求避免重复流量并发探测每个指纹规则独立并发执行默认 10 并发互不阻塞多规则短路同一指纹的多个 http 规则任一命中即认定识别成功智能去重同一框架若同时命中多条规则保留带版本号的结果见Deduplication方法识别结果框架名 版本 类型随后交给漏洞规则库进行 CVE 匹配最终生成扫描报告。如上图所示一次 AI 基础设施扫描中引擎成功识别出目标为ComfyUI 0.2.12并立即匹配到该版本已知漏洞生成带修复建议的扫描报告——这正是指纹识别价值的完整体现。如何扩展自定义指纹的两条路径如果你的目标框架不在规则库中扩展方式很简单推荐方式零代码在 data/fingerprints/ 新增一个 YAML 文件参照 data/fingerprints/ollama.yaml 的结构编写 info / http / version 三部分即可深度定制Go 代码实现 FingerPrintFunc 接口提供Match与GetVersion两个方法即可编写基于复杂交互逻辑的指纹识别器。现有的 Mlflow 指纹common/fingerprints/preload/mlflow.go就是采用这种方式实现的总结AI-Infra-Guard 的指纹识别技术可以归纳为一套数据驱动的规则引擎规则即文件143 份 YAML 覆盖 100 AI 框架新增指纹零代码⚡多维证据响应体、响应头、图标哈希、页面摘要四种维度自由组合版本推理正则精确抽取 区间交集推断双管齐下开放扩展DSL 表达式 Go 接口双通道定制指纹识别是 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),仅供参考