Java漏洞在白盒审计中的技巧——反序列化篇(Fastjson)

💡 原文中文,约5800字,阅读约需14分钟。
📝

内容提要

Fastjson反序列化漏洞源于AutoType机制,攻击者可通过恶意JSON加载危险类,导致任意代码执行。此漏洞存在于1.2.24及之前版本,后续版本已加强安全防护。修复措施包括升级到安全版本、关闭AutoType和使用安全模式。审计时需关注危险方法调用及AutoType配置。

🎯

关键要点

  • Fastjson反序列化漏洞源于AutoType机制,攻击者可通过恶意JSON加载危险类,导致任意代码执行。
  • 漏洞存在于1.2.24及之前版本,后续版本已加强安全防护。
  • 修复措施包括升级到安全版本、关闭AutoType和使用安全模式。
  • 审计时需关注危险方法调用及AutoType配置。
  • 攻击者通过@type指定恶意类,利用JSON.parseObject()触发漏洞。
  • 构造恶意JSON时需包含恶意类的字节码和相关属性。
  • 审计Fastjson代码时需关注危险方法调用和AutoType相关配置。
  • 基础修复措施包括升级到安全版本、关闭AutoType和使用安全模式。
  • 安全编码规范要求反序列化时指定具体类型,避免反序列化接口或抽象类。
  • 实际攻击中需构造利用链,常见的有JdbcRowSetImpl和TemplatesImpl。
  • Fastjson反序列化漏洞的核心在于AutoType机制和危险类的链式调用。
  • 在审计时需关注JSON.parseObject()未指定具体类型的情况和黑名单覆盖范围。

延伸问答

Fastjson反序列化漏洞的主要原因是什么?

Fastjson反序列化漏洞主要源于AutoType机制,攻击者可以通过恶意JSON加载危险类,从而导致任意代码执行。

如何修复Fastjson反序列化漏洞?

修复措施包括升级到安全版本(1.2.83及以上)、关闭AutoType支持和使用安全模式。

在审计Fastjson代码时需要关注哪些关键点?

审计时需关注危险方法调用、AutoType配置及未指定具体类型的JSON.parseObject()调用。

Fastjson反序列化漏洞的攻击步骤是什么?

攻击步骤包括构造恶意JSON、编译恶意类、发送恶意HTTP请求并触发JSON.parseObject()解析。

Fastjson的AutoType机制是如何工作的?

AutoType机制通过@type标识类名,反序列化时尝试实例化指定的类,可能导致加载恶意类。

Fastjson反序列化漏洞的影响有哪些?

该漏洞可能导致任意代码执行,攻击者可以利用它进行远程代码执行等恶意操作。

➡️

继续阅读