从fastjson漏洞谈防御式编程

从fastjson漏洞谈防御式编程

💡 原文中文,约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变量表示已读取的字符数量,但在没有实际读取字符的情况下也会增加。

➡️

继续阅读