【Java代码审计】反序列化漏洞篇

【Java代码审计】反序列化漏洞篇

  • 1.反序列化漏洞概述
    • 概述
    • 反序列化过程详解
  • 2.反序列化漏洞产生的必要条件
  • 3.反序列化漏洞检测方案
    • 代码审计
    • 白盒检测
    • 黑盒检测
    • RASP检测
    • 攻击检测
  • ️4.普通反序列化漏洞
  • 5.XMLDecoder反序列化漏洞
  • 6.Java 反序列化漏洞修复
  • 7.Java反序列化漏洞审计关键词

1.反序列化漏洞概述

概述

发送方必须将要发送的 Java 对象序列化为字节流,接收方则需要将字节流再反序列化,还原得到 Java 对象,才能实现正常通信。当攻击者输入精心构造的字节流被反序列化为恶意对象时,就会造成一系列的安全问题。

在 Java 原生的API 中,序列化的过程由 ObjectOutputStream 类的 writeObject() 方法实现,反序列化过程由 ObjectInputStream 类的 readObject() 方法实现。将字节流还原成对象的过程都可以称作反序列化,例如,JSON 串或 XML 串还原成对象的过程也是反序列化的过程。同理,将对象转化成 JSON 串或 XML 串的过程也是序列化的过程

反序列化过程详解

Java程序中类ObjectInputStream的readObject方法被用来将数据流反序列化为对象,如果流中的对象是class,则它的ObjectStreamClass描述符会被读取,并返回相应的class对象,ObjectStreamClass包含了类的名称及serialVersionUID

如果类描述符是动态代理类,则调用resolveProxyClass方法来获取本地类。如果不是

你可能感兴趣的:(#,代码审计,java,开发语言,安全)