💡
原文中文,约1600字,阅读约需4分钟。
📝
内容提要
最近,fastjson出现了一个漏洞,导致在解析特殊字符时发生OOM。问题在于isEOF函数未能正确判断字符读取情况,建议在isEOF中处理bp + 1 > len的情况,以避免类似问题再次发生。
🎯
关键要点
- fastjson出现了一个漏洞,导致在解析特殊字符时发生OOM。
- 问题在于isEOF函数未能正确判断字符读取情况。
- 在scanString时,读取字符时bp的值会增加,即使没有实际读取字符。
- isEOF函数未考虑到读取超出总长度的情况,导致永远返回false。
- 防御式编程的原则是不要相信其他工程师,应该考虑到所有可能的异常情况。
- 建议在isEOF中处理bp + 1 > len的情况,以避免类似问题再次发生。
❓
延伸问答
fastjson漏洞的主要问题是什么?
fastjson在解析特殊字符时出现了OOM,主要是因为isEOF函数未能正确判断字符读取情况。
isEOF函数的错误是什么?
isEOF函数未考虑bp + 1 > len的情况,导致永远返回false。
防御式编程的原则是什么?
防御式编程的原则是不要相信其他工程师,应该考虑到所有可能的异常情况。
如何修复fastjson的漏洞?
建议在isEOF中处理bp + 1 > len的情况,以避免类似问题再次发生。
为什么fastjson的isEOF函数会导致严重问题?
因为isEOF未判断读取超出总长度的情况,导致在特定输入下出现OOM。
在fastjson中,bp变量的作用是什么?
bp变量表示已读取的字符数量,但在没有实际读取字符的情况下也会增加。
➡️