JarAnalyzer:Java安全审计的瑞士军刀

admin 2026-03-26 15:40:25 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: JarAnalyzer是一款用于Java安全审计的GUI工具,它集成了反编译、方法调用分析和漏洞搜索等功能。其核心能力包括构建方法调用关系数据库以支持正向/反向搜索、基于DFS算法的调用链分析以及污点分析验证。此外,它还具备SCA分析、信息泄露检查、Gadget分析等多种安全功能,并支持通过MCP协议接入AI工作流。该工具完全开源免费,可显著提升Java应用的代码审计效率。 综合评分: 95 文章分类: 代码审计,WEB安全,恶意软件,安全工具,应用安全


cover_image

Jar Analyzer:Java 安全审计的瑞士军刀

原创

攻防路 攻防路

攻防录

2026年3月22日 06:01 美国

#

项目地址:https://github.com/jar-analyzer/jar-analyzer

JAR 包分析这件事,做 Java 安全的人都绕不开。反编译看代码、搜方法调用、追调用链、找危险函数——每次都要在 IDEA、JD-GUI、codeql 之间来回切换,效率很低。

Jar Analyzer 把这些需求全塞进了一个 GUI 工具里。拖进去一堆 JAR,直接点点鼠标就能完成大部分代码审计工作。截至 2026 年 3 月,这个项目在 GitHub 已经有约 2k star,连续更新 5 年,发布了 59 个版本,完全开源免费。


它能做什么

先说最直接的——你手里有一堆 JAR 包,想快速搞清楚里面的代码结构和潜在风险。Jar Analyzer 覆盖的场景非常广:

基础分析能力

  • 支持 Jar/War/Classes 三种输入格式,支持多文件批量加载,也能处理嵌套的 FatJar
  • 内置 Fernflower 改进版反编译引擎,双击即可查看反编译代码
  • 使用 JavaParser 精确定位方法位置,类似 IDEA 的代码跳转体验
  • 黑白名单过滤,构建数据库和搜索都支持按类名/包名过滤

方法调用分析

这是 Jar Analyzer 的看家本领:

  • 构建方法调用关系数据库,可以正向搜”谁调了这个方法”,也可以反向搜”这个方法调了谁”
  • 支持精确搜索和模糊搜索
  • 基于 DFS(深度优先搜索)算法的调用链分析,能自动追踪从 source 到 sink 的完整路径
  • 5.7 版本之后加入了模拟 JVM 的污点分析,可以验证 DFS 推导出来的调用链是否真的可达

Jar Analyzer 暗色主题界面,左侧文件树+右侧功能面板

安全分析功能

| 功能 | 说明 | | — | — | | 漏洞调用搜索 | 一键搜索 JNDI、Runtime.exec、readObject、SpEL.getValue 等常见危险调用 | | SCA 分析 | 匹配 Log4j2、Fastjson 47/68/80 等已知漏洞版本 | | 信息泄露检查 | 检测 IP 地址、手机号、邮箱、API Key、JWT、数据库连接串等敏感信息 | | Gadget 分析 | 辅助筛选符合条件的反序列化 Gadget 链 | | 应急响应 | 一键提取序列化数据中的恶意 class、一键反编译 BCEL 代码 |


工作原理

Jar Analyzer 的底层引擎用 ASM 框架解析字节码,用 SQLite 做数据持久化。

加载 JAR 的时候,引擎遍历所有 .class 文件,解析出每个类的方法签名、字段信息、继承关系,以及每个方法内部的 invoke 指令(invokevirtual、invokestatic、invokeinterface 等),再把这些调用关系存进数据库。这一步就是”构建数据库”,你在 GUI 上点 Start 按钮触发的就是这个过程。

数据库建好之后,所有的搜索和分析操作其实都是 SQL 查询。方法定义搜索、方法引用搜索、字符串搜索(基于 LDC 指令),底层都是数据库操作。

DFS 调用链分析是整个工具最有价值的部分。它的逻辑是这样的:

  1. 你指定一个 source(起点,比如 Spring Controller 的入口方法)和一个 sink(终点,比如 Runtime.exec
  2. 引擎从 sink 出发,通过方法调用关系做反向 DFS 搜索
  3. 找到从某个 source 到 sink 的所有可达路径,按调用链长度排序输出

5.7 版本以后还加了污点分析验证。因为 DFS 只看调用关系,不管参数是否真的传递到了危险位置。污点分析会模拟 JVM 栈帧,追踪参数在方法调用链中的流动,验证这条链是不是真的”通”的。

DFS 漏洞链分析 + 反编译代码联动

SpEL 表达式搜索是另一个亮点。传统搜索只能按类名、方法名这些固定字段搜。表达式搜索基于 Spring Expression Language,支持多条件组合。举个例子,搜 CVE-2023-21939 对应的漏洞模式:

#method
    .startWith("set")
    .paramsNum(1)
    .isStatic(false)
    .isPublic(true)
    .paramTypeMap(0,"java.lang.String")
    .isSubClassOf("java.awt.Component")

这段表达式的意思是:找到所有以 set 开头、只有一个 String 参数、非静态、公开的方法,且所在类是 java.awt.Component 的子类。用普通搜索你根本没法表达这种复合条件。

SpEL 表达式搜索功能


安装和使用

Jar Analyzer 提供开箱即用的发布包,不需要自己编译。

  1. 前往 Release 页面下载最新版本:https://github.com/jar-analyzer/jar-analyzer/releases/latest
  2. 解压后运行启动脚本(Windows 双击 bat,macOS/Linux 执行 sh)
  3. 在 GUI 右上角选择要分析的 JAR 文件或目录
  4. 配置黑白名单(可选),点击 Start 按钮开始构建数据库
  5. 等进度条走完,就可以开始搜索和分析了

注意几个点:

  • 分析大量 JAR 时,临时目录和数据库文件可能会很大,确保磁盘空间充足
  • 表达式搜索如果跑得慢,可能是默认内存不够,修改启动脚本里的 -Xms 参数,比如:
set "java_args=-XX:+UseG1GC -Xms2g -XX:MaxGCPauseMillis=200 %other_args%"
  • 支持 10 种 UI 主题,启动时用 -t 参数切换:
java -jar jar-analyzer.jar gui -t win-classic

实战场景

场景一:从 JAR 包里找危险调用

你拿到一个 Java 应用的所有依赖 JAR,想快速扫一遍有没有 Runtime.execProcessBuilder.startreadObject 这些常见的危险调用。

直接在 GUI 里切到漏洞搜索面板,按风险等级筛选,点一下就出结果。每个结果会精确到类名和方法名,双击直接跳到反编译代码。

Java 漏洞一键搜索面板

场景二:追一条完整的漏洞利用链

比如你在审计一个 Spring Boot 应用,想知道从 Controller 入口到 Runtime.exec 有没有可达路径。

  1. 在 chains 面板里配置好 Source(Spring Controller)和 Sink(Runtime.exec)
  2. 设好最大深度(建议 10 左右)
  3. 勾选”污点分析验证”
  4. 点”分析”

工具会列出所有可达路径,右侧显示污点分析的详细过程——参数是怎么从第一个方法一路传到最后的 exec 调用的。

场景三:排查信息泄露

用信息泄露检查功能,一键扫描 JAR 包中硬编码的 AK/SK、数据库密码、API Key、JWT 密钥等。支持 Base64 编码检测,结果按类型分类展示。

信息泄露检查功能

场景四:接入 AI 工作流

5.10 版本之后,Jar Analyzer 支持 MCP(Model Context Protocol)。你可以把它接到 Claude、Cursor 这些 AI 工具里,让 AI 直接调用 Jar Analyzer 的分析能力。

另外也支持 n8n 工作流平台,把 JAR 分析集成到 CI/CD 流水线里,实现自动化的安全扫描。

MCP 文档:https://github.com/jar-analyzer/jar-analyzer/blob/master/mcp-doc/README.md

项目地址:https://github.com/jar-analyzer/jar-analyzer

官方文档:https://docs.qq.com/doc/DV3pKbG9GS0pJS0tk

欢迎关注“攻防录”✨


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:攻防录 攻防路 攻防路《Jar Analyzer:Java 安全审计的瑞士军刀》

评论:0   参与:  0