Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅

突然有一天,老大突然在群里说,把fastjson 包升级到1.2.60,我一脸蒙蔽,听说有重大安全漏洞,就赶紧升级完提交测试了。

今天刚好有空,赶紧上全球最大的程序员同性交友网站扒拉扒拉看看具体bug,做到心里有点B数。

话不多说,上同性交友网站截图:

Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅


撸个代码试一下,实践是检验真理的唯一标准,也是找出bug的快速方法:

public class FastJsonTest {
 public static void main(String[] args) {
 String str = "{\"g\":\"\\\x";
 Object obj = JSON.parse(str);
 System.out.println(str);
 }
}

写完,运行,然后报错,一气呵成。

Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅


看更新记录,这个解决方案直接加一层判断,贼6,就去老版本这里打个断点吧:

Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅


开启找你妹(debug)模式 :

Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅


看,他来了

‘\\u001A’ 表示已经读完了也就是EOF,然后看 x1 已经是结束,x2 再次为此,继续debug,

发现执行了putChar方法,执行完sp的值+1

然后继续执行,又返回scanString方法,又开始了一遍

可怕的事情来了。。。竟然进入了死循环,sp增加到sbuf.length(512)的时候,会进入if分支,开始扩容。

然后OOM。

咦,真吓人,赶紧升级1.2.60吧。

Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅


Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅


Fastjson 1.2.60以下版本爆出重大漏洞,分析原因,看看哪里的锅


您可能还会对下面的文章感兴趣: