Zikkyrat4/Verified-Taint-Chains

GitHub: Zikkyrat4/Verified-Taint-Chains

VTC 是一款 Java 静态安全分析工具,通过结合大语言模型推理与符号执行验证来高精度检测代码中的污点传播漏洞。

Stars: 1 | Forks: 0

# VTC — Verified Taint Chains Java 代码静态安全分析工具。利用 LLM 通过构建和验证数据传播链(taint chains)来检测漏洞。 ## 工作原理 分析分为 4 个阶段进行: 1. **LLM 推理** — LLM 分析代码并识别不安全数据源(sources)和危险操作点(sinks) 2. **路径搜索** — 构建数据流图,使用 A* 或 BFS 算法寻找从 sources 到 sinks 的路径 3. **验证** — 通过控制流分析(CFG)和符号执行(Z3)对找到的链进行验证 4. **解释** — 为确认的漏洞生成描述、修复建议和 CWE 分类 ### 支持的漏洞类型 - SQL Injection (CWE-89) - XSS (CWE-79) - Command Injection (CWE-78) - Path Traversal (CWE-22) - XXE (CWE-611) - SSRF (CWE-918) - Unsafe Deserialization (CWE-502) - Code Injection (CWE-94) - Open Redirect (CWE-601) ## 安装 ``` # 克隆仓库 git clone cd verified-taint-chains # 创建虚拟环境 python -m venv venv source venv/bin/activate # 安装依赖 pip install -e ".[dev]" # 复制并配置 configuration cp .env.example .env # 编辑 .env — 指定 LLM-provider 和 API-keys ``` ### 前置条件 - Python >= 3.10 - 对于 OpenAI:API 密钥(`OPENAI_API_KEY`) - 对于 Ollama:已启动加载了模型的 Ollama 服务器 ## 使用说明 ``` # 基础分析 vtc analyze code.java # 将结果保存为 JSON vtc analyze code.java -o results.json # 附带解释的详细输出 vtc analyze code.java -v # 使用 Ollama 替代 OpenAI vtc analyze code.java --llm-provider ollama --llm-model llama3.2:latest # 选择验证级别 vtc analyze code.java --verification-level both # 选择路径搜索算法 vtc analyze code.java --pathfinding-algorithm bfs ``` 完整选项列表:`vtc analyze --help` ### 真实 CVE 评估 包含真实漏洞的 fixture 集位于 `tests/fixtures/real_world/` (7 个项目,6 个 CWE 类别)。运行评估测试: ``` # 单个项目 — 结果保存在 evaluation//after.{json,md} python scripts/evaluate.py --project keycloak # 所有项目同时运行 + 汇总表格 python scripts/evaluate.py --all-projects # 比较两次运行(baseline 与 after) python scripts/evaluate.py --diff evaluation/keycloak/baseline.json \ evaluation/keycloak/after.json ``` 添加新项目 = 在以下位置创建新目录 `tests/fixtures/real_world//`,包含 `ground_truth.json` 和 .java 文件。Schema 和已覆盖的 CWE 列表请参见: [`tests/fixtures/real_world/README.md`](tests/fixtures/real_world/README.md)。 ## 配置 配置从 `.env` 文件加载。主要参数: | 变量 | 含义 | 默认值 | |-----------|----------|-------------| | `LLM_PROVIDER` | `openai` 或 `ollama` | `openai` | | `OPENAI_API_KEY` | OpenAI 的 API 密钥 | — | | `LLM_MODEL` | 模型名称 | `gpt-4-turbo` / `llama3:latest` | | `PATHFINDING_ALGORITHM` | `astar` 或 `bfs` | `astar` | | `VERIFICATION_LEVEL` | `cfg`、`symbolic` 或 `both` | `cfg` | | `MIN_CONFIDENCE` | 置信度阈值 (0.0–1.0) | `0.5` | | `MAX_PATH_LENGTH` | 最大路径长度 | `15` | 更多详情:[docs/configuration.md](docs/configuration.md) ## 项目结构 ``` src/ ├── core/ # Pydantic-модели, конфигурация ├── stage1_llm_inference/ # LLM-клиенты, парсер, промпты ├── stage2_path_discovery/ # Граф, A*, BFS, Joern ├── stage3_verification/ # CFG-верификатор, символьное выполнение ├── stage4_explanation/ # Шаблоны объяснений, генератор ├── pipeline/ # Оркестратор, CLI └── utils/ # Логирование, утилиты tests/ ├── unit/ # Модульные тесты ├── integration/ # Интеграционные тесты ├── performance/ # Тесты производительности └── fixtures/ # Тестовые Java-файлы docs/ # Документация ``` ## 开发 ``` # 运行测试 pytest # 带覆盖率的测试 pytest --cov=src # Linting ruff check src tests black --check src tests # 类型检查 mypy src ``` ## 文档 - [架构](docs/architecture.md) — 4 阶段 pipeline 说明 - [配置](docs/configuration.md) — 所有配置参数 - [使用说明](docs/usage.md) — CLI、输出格式、示例 - [测试](docs/testing.md) — 运行测试、fixture ## 许可证 MIT License
标签:AI风险缓解, Petitpotam, Z3求解器, 代码安全审计, 安全专业人员, 逆向工具, 错误基检测, 静态代码分析