在发现小型DBF解析器和Apache OpenOffice中的内存破坏漏洞后,我将目标转向了微软的桌面数据库引擎。这次研究采用了基于覆盖率的黑盒模糊测试技术,结合逆向工程方法。
1990年Windows 3.0发布后,应用程序对持久化存储的需求催生了ISAM(索引顺序访问方法)技术。1992年微软推出ODBC 1.0,其中包含Jet引擎(msxbde40.dll)用于DBF格式支持。1996年推出的OLEDB API进一步扩展了数据库访问能力。
我使用WinAFL对Microsoft Jet OLEDB Provider进行模糊测试,构建了基于CDataSource和CCommand类的测试工具链。由于环境兼容性问题,最终转向测试Microsoft Access数据库引擎(acecore.dll)及其xBASE ISAM组件(acexbe.dll)。
模糊测试过程中出现了奇怪的间歇性崩溃现象,最终发现是安装的某办公软件自带Borland数据库引擎(BDE)导致。逆向分析显示acexbe.dll会检查注册表项Software\\Borland\\Database Engine
,若存在则加载IDAPI32.DLL。
1980年代dBase是早期开发者的重要工具,1991年Borland收购其母公司。随着微软收购FoxPro并推出Access,Borland最终在竞争中败北。但其技术遗产仍存在于现代软件中。
发现两类关键崩溃:
虽然IDDBAS32.dll没有DEP/ASLR保护,但Office自2013年起强制启用ASLR。最终通过ActiveX脚本环境绕过ASLR保护,成功实现稳定利用。
这个跨越三十年的漏洞案例展示了未维护第三方组件的安全风险,也证明了覆盖率引导模糊测试在现代漏洞研究中的价值。历史遗留代码可能成为攻击者通往关键系统的秘密通道。
桌面安全研究人员应当警惕软件供应链中潜藏的"古董"组件,它们往往成为安全防御体系中最薄弱的环节。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。