Fastjson 1.2.83 远程代码执行漏洞–默认配置即可触发

一、漏洞背景

2026年7月19日,安全研究员 Kirill Firsov(@k_firsov)公开披露了 Fastjson 1.2.83 中的一个 gadget-free RCE(远程代码执行)漏洞。这一发现格外引人关注,因为 1.2.83 是 Fastjson 1.x 系列的最终正式版本,其 GitHub 仓库已在 2024 年 10 月归档为只读状态,官方不会再发布任何安全补丁。

图片[1]李白你好-实战攻防Fastjson 1.2.83 远程代码执行漏洞–默认配置即可触发李白你好-实战攻防李白你好

Fastjson 作为阿里巴巴开源的高性能 Java JSON 库,长期广泛应用于企业级 Java 应用中。即使 2.x 版本已推出多年,1.x 仍在大量生产环境中服役,这使得该漏洞的影响面不容小觑。

二、漏洞特点

  • 无需 Gadget:传统 Fastjson 反序列化漏洞通常依赖 classpath 中特定的 gadget 类(如 JdbcRowSetImpl 等)。本次漏洞突破了这一限制,无需任何特定 gadget 类即可完成利用。
  • 单 Payload 触发 RCE:攻击者只需构造一个精心设计的 payload,即可实现远程代码执行。在演示环境中,研究者成功获取了目标服务器的 root 权限 reverse shell。
  • 利用场景:常见于 JSON.parseObject(userInput, SomeClass.class) 或类似 API 调用场景。当应用直接处理不可信 JSON 数据时,攻击者可通过请求体注入恶意 payload。
  • 影响版本Fastjson 1.2.83(以及之前的 1.x 版本)。

与 2022 年的 CVE-2022-25845(autoType 绕过)不同,本次漏洞是 1.2.83 修复旧问题后仍残留的新绕过方式。

三、漏洞成因简析(基于公开信息)

Fastjson 的反序列化机制长期依赖黑白名单 + autoType 控制。尽管历经多次安全更新,但 1.x 系列在处理某些边缘反序列化路径时,仍存在可被利用的逻辑缺陷。此次 gadget-free 的实现,表明攻击者找到了不依赖外部类的全新利用链。

详细技术细节目前尚未完全公开,但从演示看,payload 高度精炼,绕过了现有安全模式下的多项检查。

非攻击性代码示例(安全配置参考)

1. 启用 SafeMode(推荐临时防护)

// 在应用启动时或全局配置中设置
import com.alibaba.fastjson.parser.ParserConfig;

public class FastjsonConfig {
    public static void init() {
        // 启用 SafeMode,严格限制反序列化
        ParserConfig.getGlobalInstance().setSafeMode(true);

        // 或者针对特定 ParserConfig 实例
        // ParserConfig config = new ParserConfig();
        // config.setSafeMode(true);
    }
}

2. 推荐的安全解析方式(避免直接使用 parseObject)

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

// 推荐:使用明确类型 + SafeMode
public MyDto safeParse(String jsonStr) {
    // 方式一:使用 JSONObject 过渡 + 手动映射(更安全)
    JSONObject jsonObject = JSON.parseObject(jsonStr);
    MyDto dto = jsonObject.toJavaObject(MyDto.class);
    return dto;
}

// 方式二:使用 Fastjson 2.x(推荐长期方案)

3. Maven 依赖升级示例(迁移到 2.x)

<!-- 安全版本推荐 -->
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.XX</version>  <!-- 使用最新 2.x 版本 -->
</dependency>

四、风险评估

  • 高危:可直接导致服务器被控、数据泄露、横向渗透等严重后果。
  • 广泛影响:大量遗留系统仍在使用 1.2.x 版本,尤其是在金融、电商、后台管理系统等领域。
  • 检测难度:由于无需 gadget,传统 WAF/代码扫描工具可能难以有效拦截。

五、修复与缓解方案

  1. 首选方案:迁移到 Fastjson 2.x
    2.x 版本架构重构,不受此漏洞影响。建议逐步完成升级(注意 API 兼容性)。
  2. 临时缓解:启用 SafeMode
   ParserConfig.getGlobalInstance().setSafeMode(true);

或通过配置全局开启 SafeMode。该模式会严格限制反序列化行为,是当前 1.x 版本下最有效的防护手段。

  1. 其他防护措施
  • 避免直接将用户输入传入 parseObject 等危险 API。
  • 使用白名单严格限制可反序列化的类。
  • 加强 WAF 规则,监控异常 JSON 结构。
  • 定期进行依赖扫描(使用 Dependabot、Snyk 等工具)。

六、总结与建议

Fastjson 1.2.83 的 gadget-free RCE 再次提醒我们:即使是“最终版本”,安全风险也可能长期潜伏。遗留系统升级之路虽难,但刻不容缓。

行动建议

  • 立即在生产环境中检查 Fastjson 版本。
  • 优先启用 SafeMode 作为过渡。
  • 制定 1.x → 2.x 迁移计划。
  • 关注 Kirill Firsov 及主流安全社区的后续披露,及时获取更多技术细节。

安全从来不是一劳永逸,保持警惕、快速响应才是最佳实践。

参考:https://github.com/ThanatosXingYu/2026FastjsonPoC

https://github.com/dinosn/fastjson-jsontype-rce-lab

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容