Apache OpenOffice 中的一个缓冲区溢出漏洞可让攻击者通过使用恶意文档在目标设备上执行任意代码。
该漏洞被追踪为 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 和 java script 代码,而没有检查 C++ 代码,而该漏洞就在那里。
这表明了自动化静态分析工具的重要性;如果你的工具不知道代码的存在,它就无法发现这些漏洞。
这位安全研究员在 5 月份报告了这个漏洞,Apache 已在 GitHub 上更新了 OpenOffice 的源代码,但目前仅在测试版中更新了补丁,暂时还没有在稳定版本中提供。