【漏洞预警】Fastjson 远程代码执行漏洞预警:1.2.68–1.2.83 受影响

· 2026-07-20 20:43 · 4 阅读

猎户攻防实验室 2026-07-20 20:43 北京

Fastjson 远程代码执行漏洞预警:1.2.68–1.2.83 受影响,SafeMode 是唯一硬防御

2026 年 7 月 19 日,安全研究员 Kirill Firsov (@k_firsov) 公开披露 fastjson 1.x 末代版本(1.2.68 至 1.2.83)存在一处远程代码执行漏洞。攻击者通过 fastjson 默认 JSON 解析入口即可触发,不需要任何第三方反序列化 gadget chain(commons-collections / Spring AOP / JdbcRowSetImpl 等均不需要),未启用 SafeMode 的实例全部受影响。腾讯云安全中心已发布公开通告确认此影响范围。

一、漏洞清单

CVE

严重度

模块

影响

待分配(k_firsov 2026-07-19 披露)

🔴 Critical 9.8

com.alibaba:fastjson

parser

默认入口 RCE,无 gadget 依赖

  • • 受影响版本:fastjson 1.2.68 – 1.2.83所有未开启 SafeMode 的实例

  • • 不受影响:开启 SafeMode=true的 1.2.83 实例;fastjson 2.x

  • • 触发入口:任何使用 fastjson 解析外部 JSON 的接口(HTTP API / RPC / MQ 消费者等)

⚠️ 不要再相信"升级到 1.2.83 就安全"。1.2.83 是 fastjson 1.x 的最后一个版本,官方已停止维护 1.x 分支。setAutoTypeSupport(false)、黑名单扩充、autoTypeCheckHandler都不能防御此漏洞SafeMode 是 1.x 上唯一可靠的硬防御,长期方案必须迁移到 fastjson 2.x。

二、漏洞特征

  • • 触发难度:极低,构造合法 JSON 即可

  • • 认证要求:无需认证,任何接收外部 JSON 的接口都可能成为入口

  • • 依赖要求不需要任何第三方反序列化 gadget chain(这是本漏洞与历史 fastjson 漏洞的关键区别)

  • • 攻击效果:远程任意代码执行(命令执行、文件读写、内网横向等)

  • • JDK 版本:不受 JDK 版本影响(JDK 8 / 11 / 17 / 21 均受影响)

三、漏洞验证

以下为本地隔离环境下的 PoC 复现截图(macOS + JDK 8 + fastjson 1.2.83 默认配置):

⚠️ 截图仅用于证明漏洞真实存在并演示危害,不代表预警推荐复现。未经授权在他人的服务器上运行 PoC 属于违法行为。

截图说明

  • • 运行环境:fastjson 1.2.83 + JDK 8,未开启 SafeMode、未开启 autoType(默认配置)

  • • 调用入口:JSON.parse(payload)默认入口,无任何额外参数

  • • 验证结果:计算器弹出,标记文件写入临时目录,证明任意命令执行成功

  • • 对照实验:开启 SafeMode 后相同 payload 被完全拦截

四、排查方法

第 1 步:版本确认

# Maven 项目
find . -name "pom.xml" -exec grep -l "fastjson" {} \; \
  -exec grep -A1 "<artifactId>fastjson</artifactId>" {} \; | grep version
# Gradle 项目
grep -r "fastjson" --include="build.gradle" --include="build.gradle.kts" .
# 已部署的 jar 包
find / -name "fastjson-*.jar" 2>/dev/null
# 反编译确认(极端情况)
unzip -p fastjson-*.jar META-INF/MANIFEST.MF | grep -i version

判断标准

  • • 版本号 1.2.68 – 1.2.83未开启 SafeMode→ 🔴 高危

  • • 版本号 ≤ 1.2.67→ 同时存在其它历史漏洞,更危险

  • • 版本号 1.2.83 + 已开启 SafeMode→ 安全(仅针对当前漏洞)

  • • 版本号 fastjson 2.x→ 安全

第 2 步:定位暴露入口

# 命中任意一条 → 暴露面存在
# ① 直接调用 fastjson 解析外部 JSON(最常见)
grep -rn "JSON\.parse\s*(\|JSON\.parseObject\s*(\|JSON\.parseArray\s*(" \
  --include="*.java" . | grep -v "test/" | grep -vE "(parse|parseObject|parseArray)\s*\(\s*\""
# ② Spring/Dubbo/HSF 配置使用 fastjson 作为 HTTP/RPC 编解码
grep -rn "FastJsonHttpMessageConverter\|FastJsonConfig\|fastjson" \
  --include="*.xml" --include="*.yml" --include="*.yaml" --include="*.properties" .

第 3 步:SafeMode 是否已开启(最关键)

# JVM 启动参数检查
ps aux | grep -i "fastjson.parser.safeMode"
# 配置文件检查
grep -rn "fastjson.parser.safeMode\|setSafeMode" \
  --include="*.properties" --include="*.yml" --include="*.yaml" \
  --include="*.xml" --include="*.java" .

判断标准未发现 safeMode=true→ 视为未防护autoTypeSupport=false不算防护。

第 4 步:日志异常检查(历史攻击痕迹)

# fastjson autoType 相关异常
grep -iE "autoType is not support|safeMode not support|type not match" \
  /path/to/app/logs/*.log
# 可疑 @type 请求(WAF/网关日志)
grep -E '"@type"' /var/log/nginx/access.log* 2>/dev/null

五、修复建议

方案一:开启 SafeMode(首选,1 分钟生效,本版本唯一可靠防御)

在应用启动最早处加入:

ParserConfig.getGlobalInstance().setSafeMode(true);

或通过 JVM 启动参数(无需改代码):

java -Dfastjson.parser.safeMode=true -jar your-app.jar

副作用提示:开启 SafeMode 后所有 @type多态反序列化失效。如果你的业务依赖 @type做动态类型分发,需要先把这部分逻辑改造为显式类型映射。

方案二:迁移到 fastjson 2.x(长期方案)

<!-- pom.xml -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.53</version>
</dependency>
# Gradle
echo'implementation "com.alibaba.fastjson2:fastjson2:2.0.53"' >> build.gradle
./gradlew build
# 验证
./gradlew dependencies | grep fastjson

fastjson2 从架构层面重新设计了 autoType,默认安全。如果业务代码量大,可保留 fastjson1 兼容包过渡:

<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2-extension</artifactId>
<version>2.0.53</version>
</dependency>

方案三:自定义白名单 Handler(临时缓解,无法立即重启服务时)

注册自定义白名单 handler,只允许已知的类通过:

ParserConfig.getGlobalInstance().addAutoTypeCheckHandler((typeName, expectClass, features) -> {
if (WHITELIST.contains(typeName)) {
return TypeUtils.loadClass(typeName);
    }
returnnull;  // 返回 null 交给 fastjson 默认拒绝
});

注意:autoTypeSupport=false和黑名单扩充都不能防御此漏洞。请优先采用 SafeMode 或升级到 fastjson2。

六、参考链接

跳转微信打开