该漏洞被追踪为 CVE-2021-33035,由 GovTech Singapore Cyber Security Group 的安全研究员 Eugene Lim 发现,该漏洞影响到 OpenOffice 4.1.10 之前的所有版本,目前仅有 4.1.11 测试版中部署了相关补丁。考虑到 OpenOffice 已有数亿次的下载,这意味着在全球范围内目前有众多用户受到该漏洞的影响,OpenOffice 最后一次正式更新是在今年 5 月。
安全研究员 Eugene Lim 表示,该问题是在研究解析 .dbf 文件格式的软件中的潜在安全漏洞时所发现的。
OpenOffice 上的问题是一个缓冲区溢出,它的存在基本上是因为 DBF 文件的缓冲区大小是由 header 中的 fieldLength 或 fieldType 决定的。因此,如果在分配缓冲区时信任其中一个,而在复制到该缓冲区时信任另一个,就可能引发溢出。
但是,由于 OpenOffice 有诸如 ASLR 和 DEP 等保护措施,对于一个返回导向编程(ROP)链来说,也需要绕过这些保护。
不过,通过研究人员的进一步的分析显示,OpenOffice 套件中的 libxml2 模块在编译时没有使用 DEP 或 ASLR 保护,研究人员最终能够使用一个特制的 .dbf 文件来利用这个漏洞。
OpenOffice 是一个开源的应用程序,这意味着它可能被许多代码分析器和安全研究人员扫描过,但这个问题此前一直没有被发现。之所以这么久都没有发现该漏洞,Eugene Lim 表示,这是因为 LGTM 等扫描器通常只查找分析套件中的 Python 和 JavaScript 代码,而没有检查 C++ 代码,而该漏洞就在那里。
这表明了自动化静态分析 工具 的重要性;如果你的工具不知道代码的存在,它就无法发现这些漏洞。
这位安全研究员在 5 月份报告了这个漏洞,Apache 已在 GitHub 上更新了 OpenOffice 的源代码,但目前仅在测试版中更新了补丁,暂时还没有在稳定版本中提供。