OpenOffice存在可被执行程序的漏洞

安全研究人员发现Apache OpenOffice存在一个程序代码执行漏洞,可能导致用户设备被执行恶意程序代码。坏消息是修补程序还在测试版阶段,正式版可能要等到月底。

编号CVE-2021-33035的漏洞,是由新加坡安全厂商GovTech Singapore Cyber Security集团研究人员Eugene Lim发现,8月30日OpenOffice维护单位未在缄默期内发布修补程序后,Lim于上周HackerOne线上Hacktivity会议上披露。

研究人员是因古早的.DBF文件格式一项先天缺陷,进而发现OpenOffice这项漏洞。 .DBF是dBase数据库格式,已经存在近40年,迄今仍有许多应用程序支持,包括微软Office、LibreOffice及Apache OpenOffice。

Lim解释,DBF文件格式有个本质上的缺陷,它的一笔记录的封包大小可以由标头两种参数之一(fieldLength或fieldType)决定。如果软件工程师没注意,以其中之一配置缓冲区,又以另一个设置复制到该缓冲区的大小值,就可能造成缓冲溢出。而刚好OpenOffice的.DBF解析程序(parser)未能有效检查,可被刻意操弄参数的.DBF文件触发缓冲溢出,于是能使打开.DBF文件的OpenOffice CalC毁损。

但是OpenOffice仍然有内置保护机制,包括地址空间组态随机加载(Address space layout randomization,ASLR)及资料执行防止(Data Execution Prevention,DEP),要突破这些防护需要不符合DEP及ASLR的软件组件。

最后他在OpenOffice中找到一个用于解析XML文件的libxm12组件,以此为起点展开ROP(return-oriented programming)链攻击。ROP是一种攻击手法,可在程序激活DEP时控制程序执行流,引发堆栈缓冲区溢出,进而劫持程序控制流(control flow),以执行指令。研究人员指其设计的ROP链攻击已能突破OpenOffice的安全防护,在受害机器上执行任意指令。

图片来源_GovTech CSG

CVE-2021-33035影响Apache OpenOffice 4.1.10以前版本。但是何以Apache OpenOffice作为开源项目,未被常见扫描工具,如GitHub的LGTM找出漏洞,研究人员猜测是因为LGTM等工具主要检查OpenOffice中的Python和JavaScript程序代码,未检查漏洞所在的C程序代码所致。

图片来源_GovTech CSG

Lim在今年5月向Apache OpenOffice维护单位通报漏洞,后者已经更新了OpenOffice源码,双方预定8月30日发布稳定版OpenOffice后公布该漏洞。9月18日Apache小组仍未发布更新,研究人员则依规划公布漏洞细节。

Apache于9月20日向The Register指出,目前修补程序已在beta版阶段,项目小组预定本月内发布Apache OpenOffice 4.1.11。