【Java那些事】fastjson的0day漏洞涉及知识点

fastjson是较为常用的一个用户处理json数据的jar包,之前系统因为安全问题对fastjson升级,在此记录fastjson出现的漏洞原理。

com.alibaba.fastjson.parser.JSONLexerBase#scanString中,当传入json字符串时,fastjson会按位获取json字符串,当识别到字符串为x为开头时,会默认获取后两位字符,并将后两位字符与x拼接将其变成完整的十六进制字符来处理。当json字符串是以x结尾时,由于fastjson并未对其进行校验,将导致其继续尝试获取后两位的字符。也就是说会直接获取到u001A也就是EOF;当fastjson再次向后进行解析时,会不断重复获取EOF,并将其写到内存中,直到触发oom错误【当字符串中包含x转义字符时可能引发OOM】

OOM:OutOfMemory  内存溢出

EOF:EndOfFile

EOI:EndOfInput

字符串或者文本等的解析结尾为\n001A

 

你可能感兴趣的:(Java)