漏洞标题: Fastjson <=1.2.59 版本 拒绝服务 漏洞
漏洞描述:
该漏洞会导致java进程的占用内存迅速涨到JVM允许的最大值(-Xmx参数默认为1/4物理内存大小)
,并且CPU飙升。该漏洞并不能直接打挂java进程,但是可能由于java进程占用内存过大,导致被系
统的OOM Killer杀掉。
有关OOM
Java的OutOfMemoryError是JVM内部的异常,是一个可捕获异常,并不会直接导致java进程被Kill
掉,顶多线程挂掉。Linux下当应用程序内存超出内存上限时,会触发OOM Killer机制以保持系统空
间正常运行,哪个进程被点名Kill是通过linux/mm/oom_kill.c中oom_badness进行算分选择的,并
且可以通过设定oom_adj 来调节其被Kill的可能性。
所以,java默认最大1/4物理内存占用,不太容易造成系统的OOM的(当然你系统里其他的进程是吃内
存怪当我没说)。
但是很多关于java OOM异常的解决文章中建议将最大值改为不超过物理内存的80%,此时就有可能造
成内存占用过多,导致被系统Kill掉。
影响版本:
Fastjson <=1.2.59
漏洞危害:
对应用造成拒绝服务或者java进程结束
修复建议:
升级fastjsonn版本到最新版
https://search.maven.org/remote_content?g=com.alibaba&a=fastjson&v=LATEST
官方diff:
https://github.com/alibaba/fastjson/commit/995845170527221ca0293cf290e33a7d6cb
scanString针对JSON中x字符的处理,加入了判断后两个字符是否为hex字符,不为hex字符,直接退出。
此漏洞只会影响服务器的稳定性(java进程内存占用飙升导致OOM Killer杀掉),不会影响服务器的数据安全与服务器权限被黑客接管等危险行为 fastjson 1.2.60 发布,修复导致 DoS 的问题