首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微软Office代码执行漏洞分析(CVE-2021-38646):深入Borland数据库引擎的漏洞挖掘

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

原创
作者头像
qife122
发布2025-08-09 19:33:33
发布2025-08-09 19:33:33
1110
举报

微软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日:补丁发布

结论

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

桌面安全研究人员应当警惕软件供应链中潜藏的"古董"组件,它们往往成为安全防御体系中最薄弱的环节。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 微软Office代码执行漏洞分析(CVE-2021-38646)
    • 引言
    • Windows桌面数据库驱动简史
    • Jet引擎模糊测试
    • "幽灵崩溃"之谜
    • Borland数据库引擎历史
    • 漏洞分析
    • 漏洞利用挑战
    • 时间线
    • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档