写点什么

微软 Office 代码执行漏洞分析 (CVE-2021-38646):深入 Borland 数据库引擎的漏洞挖掘

作者:qife
  • 2025-08-09
    福建
  • 本文字数:861 字

    阅读完需:约 3 分钟

微软 Office 代码执行漏洞分析(CVE-2021-38646)

引言

在发现小型 DBF 解析器和 Apache OpenOffice 中的内存破坏漏洞后,我将目标转向了微软的桌面数据库引擎。这次研究采用了基于覆盖率的黑盒模糊测试技术,结合逆向工程方法。

Windows 桌面数据库驱动简史

1990 年 Windows 3.0 发布后,应用程序对持久化存储的需求催生了 ISAM(索引顺序访问方法)技术。1992 年微软推出 ODBC 1.0,其中包含 Jet 引擎(msxbde40.dll)用于 DBF 格式支持。1996 年推出的 OLEDB API 进一步扩展了数据库访问能力。

Jet 引擎模糊测试

我使用 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。

Borland 数据库引擎历史

1980 年代 dBase 是早期开发者的重要工具,1991 年 Borland 收购其母公司。随着微软收购 FoxPro 并推出 Access,Borland 最终在竞争中败北。但其技术遗产仍存在于现代软件中。

漏洞分析

发现两类关键崩溃:


  1. 二次 EIP 覆盖:通过控制 lengthOfEachRecord 字段触发内存破坏,但无法稳定控制执行流

  2. 写原语漏洞:rep movs 指令实现任意内存写入,配合 ROP 链可执行代码

漏洞利用挑战

虽然 IDDBAS32.dll 没有 DEP/ASLR 保护,但 Office 自 2013 年起强制启用 ASLR。最终通过 ActiveX 脚本环境绕过 ASLR 保护,成功实现稳定利用。

时间线

  • 6 月 25 日:初始披露

  • 7 月 16 日:漏洞确认

  • 9 月 14 日:补丁发布

结论

这个跨越三十年的漏洞案例展示了未维护第三方组件的安全风险,也证明了覆盖率引导模糊测试在现代漏洞研究中的价值。历史遗留代码可能成为攻击者通往关键系统的秘密通道。


桌面安全研究人员应当警惕软件供应链中潜藏的"古董"组件,它们往往成为安全防御体系中最薄弱的环节。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

办公AI智能小助手
用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
微软Office代码执行漏洞分析(CVE-2021-38646):深入Borland数据库引擎的漏洞挖掘_漏洞挖掘_qife_InfoQ写作社区