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

admin 2026-07-22 06:17:00 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 2026年7月19日,安全研究员披露Fastjson1.x版本(1.2.68至1.2.83)存在远程代码执行漏洞,无需第三方反序列化gadgetchain,未开启SafeMode的实例全部受影响。修复建议为立即开启SafeMode或迁移至Fastjson2.x,autoTypeSupport=false等传统防御措施无效。 综合评分: 88 文章分类: 漏洞预警,漏洞分析,应急响应,WEB安全,应用安全


cover_image

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

猎户攻防实验室

2026年7月20日 20:43 北京

在小说阅读器读本章

去阅读

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" {} \; \
&nbsp; -exec&nbsp;grep -A1&nbsp;"<artifactId>fastjson</artifactId>"&nbsp;{} \; | grep version

# Gradle 项目
grep -r&nbsp;"fastjson"&nbsp;--include="build.gradle"&nbsp;--include="build.gradle.kts"&nbsp;.

# 已部署的 jar 包
find / -name&nbsp;"fastjson-*.jar"&nbsp;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&nbsp;"JSON\.parse\s*(\|JSON\.parseObject\s*(\|JSON\.parseArray\s*("&nbsp;\
&nbsp; --include="*.java"&nbsp;. | grep -v&nbsp;"test/"&nbsp;| grep -vE&nbsp;"(parse|parseObject|parseArray)\s*\(\s*\""

# ② Spring/Dubbo/HSF 配置使用 fastjson 作为 HTTP/RPC 编解码
grep -rn&nbsp;"FastJsonHttpMessageConverter\|FastJsonConfig\|fastjson"&nbsp;\
&nbsp; --include="*.xml"&nbsp;--include="*.yml"&nbsp;--include="*.yaml"&nbsp;--include="*.properties"&nbsp;.

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

# JVM 启动参数检查
ps aux | grep -i&nbsp;"fastjson.parser.safeMode"

# 配置文件检查
grep -rn&nbsp;"fastjson.parser.safeMode\|setSafeMode"&nbsp;\
&nbsp; --include="*.properties"&nbsp;--include="*.yml"&nbsp;--include="*.yaml"&nbsp;\
&nbsp; --include="*.xml"&nbsp;--include="*.java"&nbsp;.

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

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

# fastjson autoType 相关异常
grep -iE&nbsp;"autoType is not support|safeMode not support|type not match"&nbsp;\
&nbsp; /path/to/app/logs/*.log

# 可疑 @type 请求(WAF/网关日志)
grep -E&nbsp;'"@type"'&nbsp;/var/log/nginx/access.log* 2>/dev/null

五、修复建议

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

在应用启动最早处加入:

ParserConfig.getGlobalInstance().setSafeMode(true);

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

java -Dfastjson.parser.safeMode=true&nbsp;-jar your-app.jar

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

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

<!-- pom.xml -->
<dependency>
&nbsp; &nbsp;&nbsp;<groupId>com.alibaba.fastjson2</groupId>
&nbsp; &nbsp;&nbsp;<artifactId>fastjson2</artifactId>
&nbsp; &nbsp;&nbsp;<version>2.0.53</version>
</dependency>
# Gradle
echo&nbsp;'implementation "com.alibaba.fastjson2:fastjson2:2.0.53"'&nbsp;>> build.gradle
./gradlew build

# 验证
./gradlew dependencies | grep fastjson

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

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

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

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

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

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

六、参考链接

  • • 腾讯云安全通告 2375https://cloud.tencent.com/announce/detail/2375
  • • 原漏洞披露推文 – Kirill Firsov (@k_firsov)https://x.com/k_firsov/status/2078872293745570032
  • • fastjson GitHub 仓库
  • • fastjson2 GitHub 仓库

免责声明:

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

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

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

本文转载自:猎户攻防实验室 《【漏洞预警】Fastjson 远程代码执行漏洞预警:1.2.68–1.2.83 受影响》

评论:0   参与:  0