icon for mcp server

JavaSinkTracer

STDIO

基于函数级污点分析的Java漏洞审计工具

JavaSinkTracer_MCP

基于函数级污点分析的 Java 源代码漏洞审计工具JavaSinkTracer,通过 Model Context Protocol (MCP) 为 AI 助手提供安全分析能力。

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 配置 Claude Desktop

编辑配置文件并添加 MCP 服务器配置:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{ "mcpServers": { "javasinktracer": { "command": "python", "args": [ "/path/to/JavaSinkTracer/mcp_server.py" ], "description": "Java源代码漏洞审计工具 - 基于函数级污点分析" } } }

注意:将 /path/to/JavaSinkTracer 替换为实际的项目路径。

3. 重启 Claude Desktop

配置完成后重启 Claude Desktop,MCP 工具将自动加载。

视频演示

https://www.bilibili.com/video/BV1XrxDz1EvF

核心功能

漏洞扫描

从危险函数(Sink)反向追踪到外部入口(Source),自动发现潜在的安全漏洞链路。

调用图分析

构建完整的 Java 项目函数调用关系图,支持跨文件、跨类的调用追踪。

智能分析

基于函数级污点分析,有效规避变量级追踪在复杂场景(线程、反射、回调)下的断链问题。

代码提取

自动提取漏洞链路上每个函数的完整源代码,便于人工或 AI 深入分析。

可用工具

工具名称功能说明
build_callgraph构建项目调用关系图
find_vulnerabilities扫描安全漏洞
analyze_vulnerability_chain分析漏洞调用链源代码
extract_method_code提取指定方法源代码
list_sink_rules查看漏洞规则配置
get_project_statistics获取项目统计信息

使用示例

示例 1:全面漏洞扫描

请帮我扫描 /path/to/java-project 项目的安全漏洞

AI 会自动:

  1. 构建调用关系图
  2. 扫描所有类型的漏洞
  3. 分析并报告发现的问题

示例 2:针对性检测

检查项目中是否存在 SQL 注入和命令执行漏洞

AI 会扫描特定类型的漏洞(SQLI、RCE)。

示例 3:深入分析

这个漏洞链路是真实漏洞吗?请分析调用链的源代码

AI 会提取完整的调用链代码并进行分析。

支持的漏洞类型

  • RCE - 远程代码执行 (CWE-78)
  • SQLI - SQL 注入 (CWE-89)
  • XXE - XML 外部实体注入 (CWE-611)
  • SSRF - 服务端请求伪造 (CWE-918)
  • PATH_TRAVERSAL - 路径穿越 (CWE-22)
  • DESERIALIZE - 反序列化漏洞 (CWE-502)
  • XPATH_INJECTION - XPath 注入 (CWE-643)
  • TEMPLATE_INJECTION - 模板注入 (CWE-94)
  • JNDI_INJECTION - JNDI 注入 (CWE-74)
  • REFLECTION_INJECTION - 反射注入 (CWE-470)
  • LOG_INJECTION - 日志注入 (CWE-117)
  • CRYPTO_WEAKNESS - 加密算法弱点 (CWE-327)

支持的框架

  • Spring Boot / Spring MVC
  • MyBatis / Hibernate / JPA
  • Fastjson / Jackson / Gson
  • OkHttp / Apache HttpClient
  • Freemarker / Velocity / Thymeleaf
  • Log4j / SLF4J

工作原理

函数级污点分析

不同于传统 SAST 工具的"变量级"污点分析,本工具采用"函数级"污点分析:

  • 优势:有效规避线程调用、监听回调、反射调用等场景的断链问题
  • 权衡:可能产生误报,需要结合 AI 或人工进一步分析确认

分析流程

  1. 解析 Java 源代码,构建 AST
  2. 提取所有类和方法信息
  3. 构建函数调用关系图
  4. 从 Sink 点(危险函数)反向追踪
  5. 识别到达 Source 点(外部入口)的调用链
  6. 过滤无参数的函数(排除不可控变量)
  7. 提取调用链上所有函数的源代码

配置说明

规则文件

规则配置文件位于 Rules/rules.json,包含:

  • sink_rules: 危险函数规则(如 Runtime.exec
  • source_rules: 外部输入源(如 HttpServletRequest.getParameter
  • sanitizer_rules: 净化函数(如 StringEscapeUtils.escapeHtml

自定义规则

可以根据实际需求编辑 rules.json 添加新的 Sink、Source 或 Sanitizer 规则:

{ "sink_rules": [ { "sink_name": "CUSTOM_VULN", "sink_desc": "自定义漏洞类型", "severity_level": "High", "cwe": "CWE-XXX", "sinks": [ "com.example.DangerousClass:dangerousMethod" ] } ] }

性能优化

缓存机制

  • 首次分析项目时构建 AST 和调用图
  • 后续调用自动复用缓存,大幅提升速度
  • 缓存 key:project_path:rules_path

轻量级模式

find_vulnerabilities 工具默认使用轻量级模式:

  • 仅返回漏洞链路信息
  • 不立即提取源代码
  • 需要时使用 analyze_vulnerability_chain 获取详细代码

常见问题

工具未加载?

  1. 检查配置文件中的路径是否正确
  2. 确认已安装所有 Python 依赖
  3. 查看 Claude Desktop 的开发者工具日志

分析速度慢?

  • 大型项目首次分析需要时间构建 AST
  • 使用缓存后速度会显著提升
  • 可先调用 build_callgraph 预热缓存

结果有误报?

  • 函数级污点分析会产生一定误报
  • 使用 analyze_vulnerability_chain 查看源代码
  • 结合 AI 分析或人工确认漏洞真实性

扩展开发

添加新的 MCP 工具

编辑 mcp_server.py

@app.list_tools() async def list_tools() -> list[Tool]: return [ Tool( name="your_tool", description="工具描述", inputSchema={...} ) ] @app.call_tool() async def call_tool(name: str, arguments: Any): if name == "your_tool": # 实现你的工具逻辑 pass

相关资源

  • 详细使用指南: 查看 MCP_GUIDE.md
  • 原理说明: 查看 README.md
  • 优化日志: 查看 UPGRADE_SUMMARY.md

致谢

JavaSinkTracer开发者 Tr0e

声明

本项目仅供学习与研究使用,请勿用于商业或非法用途。因使用本项目产生的任何后果由使用者自行承担。

MCP Now 重磅来袭,抢先一步体验