CVE-2018-8423:Jet数据库引擎漏洞利用
字数 1897 2025-08-27 12:33:42
Jet数据库引擎漏洞CVE-2018-8423分析与利用教学文档
漏洞概述
CVE-2018-8423是微软Jet Database Engine中的一个严重漏洞,于2018年9月被发现,10月由微软发布补丁。该漏洞影响许多使用Jet Database Engine的微软应用程序,包括Access等。
漏洞性质
- 类型:越界写漏洞
- 影响组件:msrd3x40.dll
- 触发方式:通过恶意构造的Jet数据库文件
- 利用结果:可能导致任意代码执行、权限提升或恶意软件下载
漏洞影响范围
所有使用Jet Database Engine (msrd3x40.dll)的应用程序都可能受到影响,包括但不限于:
- Microsoft Access
- 使用ADODB connection对象的应用程序
- 使用OLE DB API访问数据的应用程序
漏洞技术分析
漏洞触发机制
漏洞存在于msrd3x40!TblPage::CreateIndexes函数中,当处理恶意构造的Jet数据库文件时,会导致越界写操作。
关键漏洞点
-
索引值验证缺失:
- 程序未对Jet数据库文件中的索引值进行有效性验证
- 攻击者可构造超大的索引值(如0x00002300)
-
内存计算错误:
- 程序使用公式
[edx+ecx*4+574h]计算内存位置 - 当ecx(索引值)过大时,会导致越界访问
- 程序使用公式
-
写操作失控:
- 程序尝试将索引名称写入计算出的内存位置
- 由于位置无效,导致访问违规崩溃
漏洞利用流程
- 攻击者创建恶意JS文件和Jet数据库文件
- 受害者通过wscript.exe执行JS文件
- JS文件使用ADODB connection访问恶意Jet数据库
- 漏洞DLL处理恶意索引时触发越界写
- 导致程序崩溃或可能执行任意代码
Jet数据库文件结构分析
基本结构
Jet数据库文件以页(page)形式组织,主要包含:
-
Header Page:
- 包含文件相关信息
- 使用固定密钥(0x6b39dac7)的RC4加密126字节
-
Table Page:
- 包含表定义数据
- 重要字段:
- Index Count:索引数量
- Real Index Count:实际索引数量
恶意文件构造关键
攻击者通过修改以下字段构造恶意文件:
- 设置异常大的Index值(如0x00230000)
- 保持正常的Index Count(如2个index)
- 包含有效的索引名称(如"ParentIdName")
调试分析过程
关键函数调用链
msrd3x40!operator new- 分配内存msrd3x40!Index::Restore- 恢复索引- 将索引值复制到
index地址+24h
- 将索引值复制到
msrd3x40!NamedObject::Rename- 复制索引名称- 将名称复制到
index地址+40h
- 将名称复制到
崩溃点分析
崩溃发生在尝试执行以下操作时:
mov [edx+ecx*4+574h], esi
其中:
- edx:指向内存的指针
- ecx:来自恶意文件的超大索引值(0x00002300)
- esi:包含索引名称"ParentIdName"的指针
漏洞利用开发
所需材料
-
PoC文件:
- poc.js:JavaScript文件,使用ADODB连接恶意数据库
- group1:恶意构造的Jet数据库文件
-
利用环境:
- 受影响的Jet Database Engine版本
- wscript.exe或其他使用msrd3x40.dll的应用程序
利用步骤
-
构造恶意Jet数据库文件:
- 设置异常大的索引值
- 保持文件结构其他部分合法
-
创建JS加载器:
// poc.js示例代码 var conn = new ActiveXObject("ADODB.Connection"); var rs = new ActiveXObject("ADODB.Recordset"); conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=group1"); rs.Open("SELECT * FROM table", conn); -
诱骗用户执行:
- 通过社会工程学手段让用户运行poc.js
- 可能通过邮件附件、恶意网站等方式传播
防护措施
官方补丁
微软已发布相关补丁:
- CVE-2018-8423补丁
- 注意:初始补丁引入了CVE-2019-0576漏洞,需确保安装最新补丁
缓解措施
- 应用所有微软安全更新
- 限制不受信任的Jet数据库文件执行
- 禁用不必要的脚本执行
- 使用应用白名单机制
研究与参考资源
-
Jet数据库文件结构分析:
-
微软安全公告:
-
原始分析报告:
总结
CVE-2018-8423展示了即使成熟如Jet Database Engine的组件也可能存在严重的逻辑漏洞。该漏洞的核心问题在于缺乏对用户输入(索引值)的充分验证,导致越界写操作。通过深入分析Jet数据库文件结构和漏洞触发机制,安全研究人员可以更好地理解此类漏洞的成因和利用方式,从而开发更有效的防护措施。