本地漏洞研究流水线发布:14B代码模型驱动自动化漏洞挖掘

导语:安全研究人员于近日发布了一套完全本地化的漏洞研究流水线(local-vuln-research-pipeline)。该系统以14B参数代码专用模型Qwen2.5-Coder为核心,通过代码图谱与LLM混合架构,对目标代码进行穷举式source-to-sink路径枚举,已在Linux Kernel、VSCode等大型项目上完成验证。


一、项目概述

该流水线名为local-vuln-research-pipeline,托管于GitHub(theteatoast/local-vuln-research-pipeline),核心设计理念是”完全本地化+穷举覆盖”——不依赖任何云端API,所有分析均在本地硬件完成。

与传统静态分析工具不同,该系统将LLM仅用于可利用性推理,而非漏洞发现。代码图谱构建、路径枚举等核心步骤均为确定性执行,确保分析结果可复现、无遗漏。

核心架构

流水线采用代码图谱 + LLM混合架构,分析流程如下:

  1. 指纹识别 + SBOM生成:对目标仓库进行完整文件清单构建
  2. 依赖漏洞扫描:对接NVD数据库,结合EPSS/KEV排名筛选高危依赖
  3. 静态分析:调用Semgrep扫描,同时构建完整调用图谱
  4. 威胁建模 + CVE目录:注入产品相关历史CVE,为LLM提供上下文
  5. 路径枚举:穷举所有source-to-sink路径,进行过程间污点追踪
  6. 逐路径LLM分析:验证每条路径的真实可利用性
  7. 盲区覆盖:对未被路径覆盖的源文件逐一进行LLM代码审查
  8. 攻击链合成:通过networkx传递闭包构建多步攻击路径
  9. 报告输出:生成包含根因、利用路径和修复建议的完整报告
漏洞研究流水线架构图

二、支持能力

支持的编程语言与框架

该系统通过tree-sitter解析9种语言的正则回退,覆盖如下主流技术栈:

  • C/C++/Rust:内存安全问题(缓冲区溢出、use-after-free等)
  • TypeScript/JavaScript:XSS、SSRF、 prototype pollution、SSTI
  • Python:Flask/Django/Express路由安全、ORM注入、认证绕过
  • Java:Spring Boot注解安全、SpEL注入、反序列化漏洞
  • Go:HTTP路由、goroutine竞态条件

可检测漏洞类型

流水线可检测的漏洞类型覆盖主流攻击向量,包括但不限于:各类注入漏洞(命令注入、SQL注入、路径注入、SSRF、SSTI)、反序列化漏洞、身份认证与访问控制绕过、硬编码凭证、竞态条件(TOCTOU)、XXE、LDAP注入、XPath注入、弱加密与弱随机数使用等。


三、测试配置与性能

根据项目文档,推荐硬件配置如下:

  • GPU:RTX 4070 Ti SUPER(16GB VRAM)
  • CPU:Ryzen 7 7700(8C/16T)
  • 内存:32GB DDR5 6000MHz
  • 模型:Qwen2.5-Coder-14B-Abliterated Q4_K_M(14B密集参数,8.6GB)
  • Draft模型:Qwen2.5-Coder-0.5B-Q4_K_M(约400MB),用于推测解码
  • 推理速度:25-35 tok/s基础,启用推测解码后可达35-50 tok/s
  • 上下文窗口:32K tokens

推理服务基于llama.cpp构建,支持jinja模板、flash attention和Q4 KV cache。NVD数据更新需申请API Key,完整下载约45分钟(36万+ CVE记录)。


四、使用方法

项目依赖Python环境,安装步骤如下:

# 安装llama.cpp
winget install llama.cpp  # Windows
brew install llama.cpp    # macOS / Linux

# 安装Python依赖
pip install -r requirements.txt
pip install huggingface_hub

# 下载主模型(14B)
huggingface-cli download bartowski/Qwen2.5-Coder-14B-Instruct-abliterated-GGUF 
  Qwen2.5-Coder-14B-Instruct-abliterated-Q4_K_M.gguf --local-dir models/

# 下载Draft模型(0.5B)
huggingface-cli download bartowski/Qwen2.5-Coder-0.5B-Instruct-abliterated-GGUF 
  Qwen2.5-Coder-0.5B-Instruct-abliterated-Q4_K_M.gguf --local-dir models/

# 启动推理服务
python start_server.py

# 更新CVE数据库(首次运行)
export NVD_API_KEY="your-key-here"
python -m src.main update-cve

# 启动漏洞审计
python run_audit.py /path/to/target-repo
# 断点续扫
python run_audit.py /path/to/target-repo --resume

五、局限性

项目文档明确列出了静态分析固有的局限性:

  • C函数指针:通过函数指针的动态调用无法精确定位目标,仅作保守标记
  • C++/Java/C#虚表:通过vtable的虚调用采用保守解析策略
  • 反射调用:标记为可疑,具体严重程度依赖上下文判定
  • C宏:AST解析器不展开宏,宏内漏洞可能漏报
  • 汇编代码:不在分析范围内
  • 跨翻译单元内联(C语言):调用图谱中将显示为独立函数

对于上述边界情况,系统会将不确定性上报至LLM进行判断,而非直接给出假阴性结果。


六、总结

local-vuln-research-pipeline代表了本地化AI驱动代码审计的一个重要方向——通过穷举式路径枚举确保覆盖无死角,同时以LLM处理语义理解层面的可利用性判断。相比纯动态分析或纯规则匹配的传统方案,其代码图谱 + LLM混合架构在召回率与精确度之间取得了更好的平衡。

对于拥有充足本地算力的安全团队、甲方SRC或大型企业内部安全团队,该工具提供了在不依赖外部云服务的前提下,对大型代码仓库进行系统性漏洞挖掘的可能性。

项目地址:https://github.com/theteatoast/local-vuln-research-pipeline

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容