Skip to main content
Glama

JavaSinkTracer MCP

by Zacarx
UPGRADE_SUMMARY.md10.4 kB
# JavaSinkTracer 升级总结 ## 完成的改进 ### 1. 污点规则库优化 (Rules/rules.json) #### 新增漏洞类型 (6种) - **XPATH_INJECTION** (CWE-643) - XPath注入 - **CRYPTO_WEAKNESS** (CWE-327) - 加密算法弱点 - **TEMPLATE_INJECTION** (CWE-94) - 模板注入 - **LOG_INJECTION** (CWE-117) - 日志注入 - **JNDI_INJECTION** (CWE-74) - JNDI注入 (Critical级别) - **REFLECTION_INJECTION** (CWE-470) - 反射注入 #### 增强现有规则 每个规则都添加了: - **CWE编号映射** - 便于与安全标准对接 - **更多Sink点** - 覆盖更多框架和库 - RCE: 从8个扩展到21个 - 反序列化: 从9个扩展到20个 - SSRF: 从12个扩展到26个 - SQL注入: 从13个扩展到30个 - XSS: 从8个扩展到16个 - 路径遍历: 从8个扩展到29个 - 其他类型也有显著增强 #### 新增规则类型 - **Source规则** - 定义外部输入源 - HTTP参数、请求头、Cookie - Spring注解参数 - **Sanitizer规则** - 定义净化函数 - 编码转义函数 - 验证函数 #### 支持的框架和库 - Spring Boot / Spring MVC / Spring WebFlux - MyBatis / Hibernate / JPA / jOOQ - Fastjson / Fastjson2 / Jackson / Gson - OkHttp / Apache HttpClient / Retrofit - Freemarker / Velocity / Thymeleaf - Log4j / SLF4J - SnakeYAML / XStream - JEXL / OGNL / Groovy / BeanShell - 更多... --- ### 2. MCP服务器开发 #### 创建的文件 1. **mcp_server.py** - MCP服务器主程序 2. **mcp_config.json** - Claude Desktop配置示例 3. **MCP_GUIDE.md** - 完整使用指南 #### 提供的6个MCP工具 | 工具名称 | 功能描述 | 主要用途 | |---------|---------|---------| | `build_callgraph` | 构建函数调用关系图 | 预分析、了解项目结构 | | `find_vulnerabilities` | 扫描安全漏洞 | 发现潜在漏洞链路 | | `analyze_vulnerability_chain` | 分析漏洞链源代码 | 深入分析特定漏洞 | | `extract_method_code` | 提取方法源代码 | 获取单个函数代码 | | `list_sink_rules` | 列出Sink规则 | 了解支持的漏洞类型 | | `get_project_statistics` | 获取项目统计 | 了解项目规模 | #### MCP架构优势 **模块化设计** - 每个工具职责单一清晰 - 易于维护和扩展 **AI可组合调用** ``` AI可以智能地: 1. 先调用 build_callgraph 构建基础 2. 再调用 find_vulnerabilities 扫描 3. 针对发现的漏洞调用 analyze_vulnerability_chain 4. 最后生成综合分析报告 ``` **增量分析** - 缓存机制避免重复构建AST - 可以只扫描特定漏洞类型 - 灵活控制分析深度 **交互式审计** - AI根据结果动态决策 - 可以针对性深入分析 - 支持多轮对话式审计 --- ## 使用方式 ### 方式1: 传统命令行 (不变) ```bash python JavaSinkTracer.py -p /path/to/java-project -o Result ``` ### 方式2: MCP服务器 (新增) #### 安装 ```bash pip install -r requirements.txt ``` #### 配置Claude Desktop 编辑配置文件添加: ```json { "mcpServers": { "javasinktracer": { "command": "python", "args": ["/path/to/JavaSinkTracer/mcp_server.py"] } } } ``` #### 使用示例 **场景1: 全面扫描** ``` 请帮我全面审计 /path/to/java-project 项目的安全漏洞 ``` AI会自动调用多个工具完成分析。 **场景2: 针对性扫描** ``` 检查项目中是否存在SQL注入和RCE漏洞 ``` AI会调用 `find_vulnerabilities(sink_types=["SQLI", "RCE"])` **场景3: 深入分析** ``` 这个RCE漏洞链看起来可疑,帮我分析源代码判断是否为误报 ``` AI会提取源代码并分析。 --- ## 技术实现细节 ### 1. 规则扩展原理 原有规则: ```json { "sink_name": "RCE", "sinks": ["Runtime:exec", ...] } ``` 优化后: ```json { "sink_name": "RCE", "cwe": "CWE-78", // 新增:CWE映射 "sinks": [ // 扩展:更多sink点 "Runtime:exec", "ProcessBuilder:start", "ScriptEngine:eval", "GroovyShell:evaluate", "OGNL:getValue", // ... 更多 ] } ``` ### 2. MCP工具链设计 ``` ┌─────────────────┐ │ AI (Claude) │ └────────┬────────┘ │ ┌────────▼────────┐ │ MCP Protocol │ └────────┬────────┘ │ ┌───────────────────┼───────────────────┐ │ │ │ ┌────▼─────┐ ┌─────▼──────┐ ┌─────▼──────┐ │ build │ │ find │ │ analyze │ │callgraph │ │vulnerabili-│ │ chain │ │ │ │ ties │ │ │ └────┬─────┘ └─────┬──────┘ └─────┬──────┘ │ │ │ └──────────────────┼───────────────────┘ │ ┌────────▼─────────┐ │ JavaSinkTracer │ │ Core Engine │ └──────────────────┘ ``` ### 3. 缓存机制 ```python # 首次调用 build_callgraph analyzer = JavaSinkTracer(project_path, rules_path) analyzer.build_ast() # 耗时操作 cache[key] = analyzer # 后续调用复用缓存 analyzer = cache[key] # 快速获取 vulnerabilities = analyzer.find_taint_paths() ``` --- ## 对比分析 ### 传统方式 vs MCP方式 | 特性 | 传统命令行 | MCP工具 | |-----|----------|---------| | 运行方式 | 一次性全量扫描 | 可增量、可针对性扫描 | | 结果分析 | 人工阅读报告 | AI辅助分析 | | 误报处理 | 需要逐个检查代码 | AI自动提取代码分析 | | 交互性 | 无 | 支持多轮对话 | | 灵活性 | 固定流程 | 灵活组合工具 | | 学习曲线 | 需要理解工具和规则 | 自然语言交互 | ### 示例对比 **传统方式:** ```bash $ python JavaSinkTracer.py -p /path/to/project # 等待扫描完成 # 打开HTML报告 # 人工分析100个疑似漏洞 # 逐个查看源代码 # 判断真伪 ``` **MCP方式:** ``` 用户: 帮我审计这个项目,重点关注高危漏洞 AI自动: 1. 构建调用图 2. 扫描漏洞(只关注High/Critical) 3. 对每个漏洞提取源代码 4. 分析污点传播是否真实 5. 生成分析报告: - 10个真实漏洞(附源代码和修复建议) - 15个疑似漏洞(需人工确认) - 75个误报(已自动过滤) ``` --- ## 规则库统计 ### 漏洞类型覆盖 | 类别 | 原版 | 优化后 | 增长 | |-----|------|--------|------| | RCE | 8 | 21 | +162% | | 反序列化 | 9 | 20 | +122% | | SSRF | 12 | 26 | +117% | | SQL注入 | 13 | 30 | +131% | | XSS | 8 | 16 | +100% | | 路径遍历 | 8 | 29 | +263% | | LDAP注入 | 4 | 7 | +75% | | XXE | 5 | 12 | +140% | | URL重定向 | 3 | 5 | +67% | | **新增类型** | 0 | 6 | - | | **总计** | 70 | 172 | +146% | ### 新增规则详情 **Source规则 (新增)** - 9个HTTP请求相关源 - 5个Spring注解相关源 **Sanitizer规则 (新增)** - 6个编码转义函数 - 3个验证函数 --- ## 使用建议 ### 何时使用传统方式 - CI/CD自动化扫描 - 定期安全审计 - 生成正式报告 ### 何时使用MCP方式 - 日常开发中快速检查 - 深入分析特定漏洞 - 学习和研究漏洞模式 - 需要AI辅助分析误报 ### 最佳实践 1. **初次扫描**: 使用传统方式全量扫描 2. **结果分析**: 使用MCP让AI帮助过滤误报 3. **深入研究**: 使用MCP工具提取和分析代码 4. **持续监控**: CI/CD集成传统方式 --- ## 扩展方向 ### 短期可扩展 1. **添加新Sink规则** - 编辑rules.json 2. **自定义MCP工具** - 扩展mcp_server.py 3. **集成到IDE** - 作为插件使用 ### 长期可扩展 1. **变量级污点分析** - 结合AI分析变量流 2. **自动修复建议** - 生成patch 3. **漏洞优先级评分** - CVSS评分 4. **多语言支持** - Python、PHP等 --- ## 文件清单 ### 新增文件 ``` JavaSinkTracer/ ├── mcp_server.py # MCP服务器主程序 (新) ├── mcp_config.json # Claude Desktop配置示例 (新) ├── MCP_GUIDE.md # MCP使用指南 (新) └── UPGRADE_SUMMARY.md # 升级总结 (本文件) ``` ### 修改文件 ``` JavaSinkTracer/ ├── Rules/rules.json # 优化后的规则库 (改) └── requirements.txt # 添加mcp依赖 (改) ``` ### 原有文件 (不变) ``` JavaSinkTracer/ ├── JavaSinkTracer.py # 主程序 ├── JavaCodeExtract.py # 代码提取 ├── AutoVulReport.py # 报告生成 └── README.md # 原说明文档 ``` --- ## 快速开始 ### 1分钟快速体验MCP ```bash # 1. 安装依赖 cd /Users/mac/Desktop/JavaSinkTracer pip install -r requirements.txt # 2. 配置Claude Desktop # 编辑 ~/Library/Application Support/Claude/claude_desktop_config.json { "mcpServers": { "javasinktracer": { "command": "python", "args": ["/Users/mac/Desktop/JavaSinkTracer/mcp_server.py"] } } } # 3. 重启Claude Desktop # 4. 在Claude中测试 # 输入: "列出所有支持的漏洞检测类型" # Claude会自动调用 list_sink_rules 工具 ``` --- ## 总结 ✅ **任务1完成**: 污点规则库从70个规则扩展到172个,新增6种漏洞类型,添加CWE映射、Source和Sanitizer规则 ✅ **任务2完成**: 成功将功能拆分为6个MCP工具,支持AI调用,实现模块化、交互式、智能化的代码审计 🎯 **核心价值**: - **更全面**: 规则覆盖更多框架和漏洞类型 - **更智能**: AI辅助分析,减少人工工作量 - **更灵活**: 模块化工具可灵活组合使用 - **更高效**: 缓存机制+增量分析提升性能 🚀 **下一步**: - 在实际项目中测试新规则的效果 - 根据反馈持续优化规则和工具 - 探索AI辅助自动修复漏洞

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zacarx/JavaSinkTracer_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server