背景fastjson号称要做最好的json解析库,但是上半年连续搜收到两份安全部的漏洞警告,很尴尬,因此对fastjson漏洞做了一个简单的研究。本文会分析2017年的远程执行漏洞和2019年上半爆出的0day漏洞。
本文记录作者升级到 JDK 11 后遇到的 FastJSON 序列化问题,以及详细的排查过程。升级到JDK 11后,类加载顺序有所改动,同名的类在多个jar中,导致实际加载的类不一样,因此序列化的结果不一样。
fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解析库,通常被用于将Java Bean和JSON 字符串之间进行转换。前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。
在 1.2.24 版本的 Fastjson 出现了一个反序列化的漏洞,fastjson 在解析 json 的过程中,支持使用 autoType 来实例化某一个具体的类,并调用该类的 set/get 方法来访问属性。
本次 Apache Log4j 远程代码执行漏洞,是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。