Detect-DefenseLab GitHub avatar

fastjson2-2.0.61-rce-detection

Detect-DefenseLab

本仓库完整复现了Fastjson2(≤2.0.62)因FNV-1a哈希碰撞绕过AutoType白名单导致的RCE漏洞,涵盖根因剖析、修复diff解读、利用链构造及五层防御体系。

Stars

5

7 天增长

暂无数据

Fork 数

3

开放 Issue

0

开源协议

暂无数据

最近更新

2026-07-27

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

该漏洞影响所有Fastjson2 ≤2.0.62版本,且默认配置(无需开启SupportAutoType)即可利用,危害极大;研究不仅深入剖析了哈希碰撞这一新型攻击面,还提供了经VM实测、零误报的五层防护方案(WAF、Suricata、RASP、HIDS、eBPF),具有极高的实践参考价值。

适合谁使用

  • 研究Java反序列化漏洞的安全研究人员
  • 生产环境中使用Fastjson2的Java开发者
  • 负责应用防御的运维和安全工程师
  • 评估从Fastjson 1.x迁移到2.x的软件架构师

典型使用场景

  • 学习FNV-1a哈希碰撞绕过白名单的根因与AutoType绕过机制
  • 评估自身Fastjson2版本是否受影响,并升级至2.0.63
  • 部署WAF规则、Suricata签名、RASP钩子和eBPF监控以阻断利用
  • 对比1.x与2.x漏洞演进,统一评估防护策略

项目优势

  • 根因分析详细,包含伪代码和哈希碰撞原理说明
  • 完整的利用链构造工具(C/Python碰撞求解器)和可复现的Docker靶场
  • 五层防御体系(WAF、IDS、RASP、HIDS、eBPF)均经VM测试,零误报
  • 与Fastjson 1.x研究脉络深度对比,揭示了‘升级到2.x’作为唯一结论的脆弱性

使用前须知

  • PoC未公开,所有组件仅供研究者于隔离环境使用
  • 修复版本2.0.63已发布,升级是唯一根治方案,防御措施仅为缓解
  • 需自行搭建Docker环境才能复现靶场

README 快速开始

Fastjson2 全版本 RCE 漏洞研究(PR #7695)

研究背景:本目录承接 ../fastjson-1.2.83-rce-detection 中对 Fastjson 1.x 反序列化 RCE 漏洞的研究脉络, 对 Fastjson2 于 2026-07-27 披露、影响全版本(≤ 2.0.62)的 AutoType 绕过 RCE 漏洞做完整复现式研究。

本仓库聚焦:根因剖析 → 修复 diff 解读 → 与 1.x 的代际对比 → 详细 EXP 构造 → 检测与防御。 提供本地研究用漏洞靶场与利用脚本(平行复刻 1.x 的 lab/ 脉络),所有组件仅在研究者自有环境运行。


0. 一句话结论

Fastjson2 在 SupportAutoType 默认关闭 的情况下,仍会对泛型对象元素(Object.class 等)的 @type 做白名单校验。该校验对 @type 字符串逐字符计算增量 FNV-1a 哈希,并在「某前缀哈希命中白名单哈希」时 直接按完整字符串 loadClass,却不校验该前缀文本是否真的等于白名单类名

攻击者据此构造 FNV-1a 选择前缀碰撞(chosen-prefix collision),使一个形如 jar:http://... 的 URL 串的前缀 哈希命中内建白名单,从而让该 URL 串进入应用上下文类加载器(ClassLoader),触发远程类加载 → RCE

修复版本:Fastjson2 2.0.63(修复合入 PR #7695)。受影响:所有 ≤ 2.0.62 且未启用 SafeMode 的 Fastjson2 用法。


1. 漏洞摘要

内容
披露时间2026-07-27(微信公众号文章 + GitHub PR #7695)
组件com.alibaba:fastjson2
受影响版本≤ 2.0.62(含 1.x 迁移建议中推荐的「升级到 fastjson2」用法)
修复版本2.0.63(PR #7695)
漏洞类型反序列化 AutoType 白名单绕过 → 远程类加载 → 任意代码执行
根因增量 FNV-1a 哈希匹配白名单后缺少文本等价校验,可被哈希碰撞绕过
默认配置可利用(无需开启 SupportAutoType,默认关闭即中招)
JDK 版本全版本(与 JDK 版本无关,区别于 1.x 的 JDK 11.0.1 限制)
必要条件应用将不可信 JSON 反序列化为 Object/JSONObject/泛型(最常见用法)
PoC 公开否(原文声明未公开)

⚠️ 关键反讽:1.x 研究结论中「升级到 fastjson2(架构重构,不受此漏洞影响)」正是本漏洞的触发面。 因此 1.x 与 2.x 的防护策略需要重新统一评估


2. 与 1.x 研究的脉络关系

../fastjson-1.2.83-rce-detection 的完整研究脉络(README → 研究日志 → 根因 → 编码 diff → 验证 → 防御)已证明:

  • 1.x 的绕过机制是 @JSONType 资源探测 → LaunchedURLClassLoaderjar: URL 远程 defineClass
  • 1.x 把「升级到 fastjson2」作为根因级修复建议(见 1.x README 【最终结论】)。

本研究的增量贡献在于:fastjson2 用「FNV-1a 哈希白名单」替换了 1.x 的「字符串类名白/黑名单」, 本意是性能优化(避免存完整类名、用 64 位哈希做 O(log n) 二分匹配),但引入了哈希语义不可信这一全新攻击面。 即:1.x 的问题是「名单可被绕过」,2.x 的问题是「哈希碰撞使名单本身失效」。

详细代际对比见 docs/detection/COMPARISON_1X_2X.md


3. 根因(极简版)

ObjectReaderProvider.checkAutoType 的伪代码(修复前):

long hash = MAGIC_HASH_CODE;                 // FNV-1a offset basis
for (int i = 0; i = 0) {
        clazz = loadClass(typeName);          // ★ 用【完整 typeName】去加载类!
        ...                                    //   此时完全没有校验 typeName[0..i] 文本 == 白名单类名
    }
}
  • acceptHashCodes = 内建「基本安全类型」白名单(includeBasic)的 FNV-1a 哈希数组(排序后二分)。
  • 命中条件是哈希值相等,而非字符串相等
  • FNV-1a 是非密码学哈希,64 位空间下可通过「追加约 8~12 字节自由字符」在可行计算量内构造出

项目描述

fastjson2 (≤ 2.0.61) autoType RCE 检测防御体系 — 五层 × 六产品纵深防御,覆盖完整攻击链,VM 端到端验证通过

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

oversecured
oversecured GitHub avatar

Samsung_Vulnerabilities

Oversecured discloses a report of 176 vulnerabilities discovered in Samsung preinstalled apps between 2022 and 2025, with 140 detailed, all fixed in collaboration with Samsung.

Java
310
wxxsfxyzm
wxxsfxyzm GitHub avatar

MiuiBackGestureHook

An LSPosed module that hooks MIUI SystemUI back gestures using modern Xposed API 102 for research and customization.

Java
86
SangLuoCN
SangLuoCN GitHub avatar

OneStep4

OneStep4.0 is a multi-window desktop container for Android that requires root or system-level privileges, enabling a main window with several side windows for efficient app multitasking.

Java
84