背景fastjson号称要做最好的json解析库,但是上半年连续搜收到两份安全部的漏洞警告,很尴尬,因此对fastjson漏洞做了一个简单的研究。本文会分析2017年的远程执行漏洞和2019年上半爆出的0day漏洞。
在 1.2.24 版本的 Fastjson 出现了一个反序列化的漏洞,fastjson 在解析 json 的过程中,支持使用 autoType 来实例化某一个具体的类,并调用该类的 set/get 方法来访问属性。
本次 Apache Log4j 远程代码执行漏洞,是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。
fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解析库,通常被用于将Java Bean和JSON 字符串之间进行转换。前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。
这个问题似乎很容易回答:JavaScript Object Notation,直译就是 JavaScript 对象表示。即便使用文档约束,也依然要多多检查各种例外情况。如果读者还遇到了其他的坑,也欢迎补充。
场景六:在使用 JSON 对象的过程中,有时我们需要对 JSON 对象的值有排序的效果,如果这个 JSON 对象是包裹于数组中,则可以通过 sort 来排序,但排序的属性需是 number 或 number 的字符串类型。
胖先生之所以要替换掉Jackson最主要的原因是Jackson在处理对象之前的循环嵌套关系时不便,并且感觉FastJson的功能更强大,符合中国国情,上纲上线了!疑问:什么是对象间的循环嵌套?比如A有一个List<B>,B对象里又有一个A对象.
本文记录作者升级到 JDK 11 后遇到的 FastJSON 序列化问题,以及详细的排查过程。升级到JDK 11后,类加载顺序有所改动,同名的类在多个jar中,导致实际加载的类不一样,因此序列化的结果不一样。