微软产品里的‘小惊喜’:两个有趣漏洞浅析
字数 1802 2025-08-18 11:36:57
微软产品漏洞分析:CVE-2023-36563与CVE-2023-24955技术解析
漏洞概述
微软近期发布的安全补丁中,两个漏洞特别值得关注:
- CVE-2023-36563 - Microsoft WordPad信息泄露漏洞
- CVE-2023-24955 - Microsoft SharePoint Server远程代码执行漏洞
本教学文档将重点分析CVE-2023-36563的技术细节。
漏洞分析技术方法
补丁差异分析(BinDiff)
- 工具组合:IDA Pro + BinDiff
- 分析目标:比较补丁前后的二进制文件差异
- 样本信息:
- 补丁前MD5: bd05d1b9fba2f5f**b6fbb59d3a78d84
- 补丁后MD5: e46d2a1e4836b**d00eeccc0e1db0f52
关键函数发现
-
LoadImageResource函数:
- 与图像解析相关
- 在预览图像时触发断点
-
新增函数:
QueryConvertOLELinkCallback- 通过ChatGPT 4.0辅助分析其功能
OLE技术背景
OLE基础
- 全称:Object Linking and Embedding
- 功能:允许将对象和文件嵌入到Windows上的其他文件中
- 示例:将mspaint创建的画图对象嵌入到RTF文件中
OLE相关漏洞历史
- 近年来微软已修复多个OLE高风险漏洞
- 著名案例:CVE-2022-30190
- 通过OLE组件攻击
- 创建包含恶意OLE对象链接的MS Office文档
- 即使受保护模式下且宏禁用也能执行代码
- 利用MSDT(Microsoft Windows支持诊断工具)执行命令
补丁分析细节
ole32.dll的修改
补丁后的ole32.dll新增了五个函数:
CheckOLELinkConversionRegistrySettingFindStringInMultiStringIsAppExcludedFromOLELinkConversionRegistrySettingOleConvertOLESTREAMToIStorage2OleConvertOLESTREAMToIStorageEx2
关键函数分析
OleConvertOLESTREAMToIStorage2和OleConvertOLESTREAMToIStorageEx2:- 新增了参数有效性检查
- 防止无效或恶意的内存访问
- 漏洞触发点:
LinkedObject
历史漏洞对比(CVE-2017-11882)
- winword.exe加载RTF文件并解析
- 调用
ole32!OleConvertOLESTREAMToIStorage - 内部调用
ole32!wConvertOLESTREAMTOIStorage - 将OLE 1对象转换为OLE 2结构化存储对象
ole32!GenericObjectToIStorage通过剪切板传送给EquEdt32.exe处理
漏洞利用构造
利用原理
构造恶意OLE对象,触发LinkedObject中的不安全转换机制,导致Windows强制进行NTLM身份验证。
NTLM相关背景
- 微软计划在Insider版本中逐步用Kerberos替代NTLM
- Kerberos优势:
- 更强的安全保障
- 避免NTLM易受中间人攻击和重放攻击的弱点
具体构造步骤
- 使用oletools解析RTF文件
- 观察
FormatID值为0x2(表示LinkedObject类型) - 设置
TopicName字段指向链接文件的UNC路径(SMB目标) - 删除
NativeDataSize和NativeData的chunk(LinkedObject结构不包含这些)
利用限制
- 会触发MotW(Mark of the Web)警告框
- 但NTLM身份验证已在显示警告前发起
防御建议
- 补丁管理:及时安装微软安全更新
- 安全意识:
- 对不明文件保持警惕
- 注意各种文档处理软件的警告提示
- 技术措施:
- 保持杀毒软件更新
- 实施最小权限原则
- 架构调整:
- 考虑迁移到Kerberos认证
- 监控和限制SMB协议的使用
总结
- OLE技术历史悠久但风险持续存在
- 文档处理软件是常见攻击媒介
- 补丁分析是理解漏洞的有效方法
- 用户和管理员需同时关注技术防御和意识提升