文章总结: 2026年7月19日,安全研究员披露Fastjson1.x版本(1.2.68至1.2.83)存在远程代码执行漏洞,无需第三方反序列化gadgetchain,未开启SafeMode的实例全部受影响。修复建议为立即开启SafeMode或迁移至Fastjson2.x,autoTypeSupport=false等传统防御措施无效。 综合评分: 88 文章分类: 漏洞预警,漏洞分析,应急响应,WEB安全,应用安全
【漏洞预警】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" {} \; \
-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);
}
return null; // 返回 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 受影响》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论