360沙箱云捕获的 Windows 平台新漏洞案例分析
近日,360混天零实验室(360 HuntingZero Lab)通过360沙箱云“高级威胁狩猎平台”发现了一个影响 Windows 系统平台的新漏洞。漏洞通过包含此漏洞的文件实现触发条件。在对漏洞文件进行分析后,我们确认这是一个尚未被厂商修复的新漏洞,及时向微软公司提交了这个漏洞的详细信息。在对我们的答复中,微软确认了这个漏洞,但表示由于只能基于此漏洞进行有限的越界读操作,因此他们不会对此漏洞进行立即修复和应对。根据漏洞披露原则,我们在这里分享此漏洞的相关细节,供读者们研究。
漏洞成因
包含此漏洞的文件是一个“pptx”格式的幻灯片文档文件。通过Microsoft Office PowerPoint 软件的最新版本打开此文件,并点击播放时,将会导致此漏洞的触发,漏洞触发点位于 Windows 操作系统的WINMM.DLL 系统模块文件中。这个系统模块文件是 MCI API 动态库,负责提供媒体控制接口,用于控制连接到计算机的多媒体外部设备。
据分析,此漏洞是由于 pptx 文件中内嵌的一个波形声音文件引起的。波形声音文件(WAV)是一种数字音频文件格式,用于在计算机系统中存储和播放音频。WAV 文件格式基于 RIFF 规范,包含一个文件头(用于描述文件的格式和元数据)和一个音频数据块(其中包含实际的数字音频数据)。文件头通常包含文件的大小、采样率、声道数、位深度等信息,可以帮助播放设备正确地解码音频数据。以下是典型的波形声音文件格式:
文件头中的 Subchunk2Size 字段表示音频数据大小,也称为数据子块大小(Data Subchunk),表示音频数据部分的字节数,作用是确保在解码播放音频时,能够正确地读取和处理音频数据。通过 Subchunk2Size,解码器可以知道需要读取多少字节的音频数据,并确定如何解释这些数据。
PowerPoint允许用户设置幻灯片页面的切换效果,并为切换效果添加对应的音效。用户可以将波形声音(WAV)文件设置为切换效果的音效,在播放幻灯片时,当播放到设置了切换效果和音效的页面,PowerPoint 将会同时播放切换效果和音效。
在 WINMM.DLL 系统模块文件中提供了名为 sndPlaySoundW/A 的导出函数。根据微软 MSDN 网站上的描述,sndPlaySound 函数播放由文件名、注册表中的条目或 WIN.INI 文件指定的波形声音。此函数的参数 LPCTSTR lpszSound 用于指定要播放的声音的字符串,此参数可以是注册表中的条目或 WIN.INI中的标识系统声音的条目,也可以是波形声音文件的名称。
播放切换效果的音效时,PowerPoint 进程的核心模块ppcore 会调用 winmm!sndPlaySoundW 函数,并将波形声音文件的文件名传递给此函数,来实现切换音效的播放。在此函数调用期间会创建新的线程,并将线程起始地址设置为 winmm!mciwindow 函数的地址。
在新的线程中,mciwindow 函数创建播放声音的MCI 窗口,监听并分发窗口消息。这种类型的窗口的自定义消息处理函数被设定为在 winmm 模块中定义的mmWndProc 函数,用于处理发送至关联的 MCI 窗口对象的自定义消息。
在处理自定义消息时,函数通过调用 soundLoadMemory 函数从内存块中加载目标 WAV 文件资源。在加载时,此函数调用 winmm!soundInitWavHdr 函数来初始化类型为 WAVEHDR 的数据结构体。
在 winmm!soundInitWavHdr 函数中,对目标 WAV 文件的文件头和音频数据块进行解析。Subchunk2ID 和Subchunk2Size 会被预先放置在一个WaveChunkData 类型的结构体对象中,然后函数根据Subchunk2Size 指定的音频数据大小对音频数据进行读取和解析。
在这个触发漏洞的 WAV 文件中,包含错误的Subchunk2Size 值。实际文件的大小是 0xd47699,它所占的内存块大小是 0xd476a1。
但 Subchunk2Size 指定的大小是 0x011d6004,远大于文件本身的大小。因此在函数中对文件的音频数据块中的内容进行解析时,造成越界数据访问,访问了原本不应访问的内存区域,导致触发漏洞。
在这个案例中,此漏洞在 PowerPoint 进程解析一个“pptx”文件时触发,但其本身是 Windows 操作系统的 WINMM.DLL 系统模块文件中的漏洞,因此所有调用 WINMM.DLL 相关接口的应用程序都有可能触发此漏洞。在互联网中,笔者就发现了其他软件平台(如电子邮件软件)在解析文件中的 WAV 文件时导致了和这个案例中类似的漏洞触发情况。
关于我们
关于实验室
360混天零实验室(360 HuntingZero Lab)负责威胁自动化检测和云沙箱技术研究,专注于通过自动化监测手段高效发现高级威胁攻击;依托于 360 安全大数据,多次发现和监测到在野漏洞利用、高级威胁攻击、大规模网络挂马等危害网络安全的攻击事件,多次率先捕获在野利用“零日漏洞”的网络攻击并获得厂商致谢,在野漏洞攻击的发现能力处于国内外领先地位,为上亿用户上网安全提供安全能力保障。
关于沙箱云
360沙箱云是 360 数字安全集团推出的在线高级威胁分析平台,对提交的文件、URL,经过静态检测、动态分析等多层次分析的流程,触发揭示高级攻防、漏洞利用、检测逃避等行为活动,对检测样本进行恶意定性,弥补使用规则查杀的局限性,通过静态特征和行为分析发现未知、高级威胁。
如果您和您的企业对威胁监测和高级威胁狩猎有迫切的需求,您可以立即采购沙箱云在线提供的 SaaS 订阅服务,灵活选购,即时生效,为您和您的企业构筑 24 小时在线的威胁检测体系。
请发送邮件以获取详情:📧ata-contact@360.cn
关于狩猎平台
依托于360沙箱云的威胁分析能力,360沙箱云高级威胁狩猎平台构筑海量样本运营体系,聚焦于威胁情报生产和高级威胁发现,形成高级威胁鉴定、“零日漏洞”捕获、情报输出的解决方案,帮助安全分析师聚焦需关注的安全告警,为企业形成专属的威胁情报生产能力,形成威胁管理闭环,让威胁无所遁形。