聚焦源代码安全,网罗国内外最新资讯!
在上一篇《微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析》中,笔者基于对Olympus e300 相机raw格式的粗浅理解,并未对 WindowsCodecsRaw和WindowsCodecs 这两个图像解码库展开深入调试,仅阐明漏洞函数部分漏洞产生的原因。在本文中,笔者将分析同一个库中的另一个漏洞(CVE-2020-17113),以期加深对WindowsCodecsRaw 库的理解。
根据MSRC 和漏洞发现者公开的信息,Windows Imaging Component 解码TIFF格式图片时,在解析原始数据 (GetNameWhiteBalances) 的过程中触发该漏洞。(TIFF格式 参见https://zh.wikipedia.org/wiki/TIFF)。本文将基于对TIFF格式的了解并结合POC格式解析展开分析,供读者参考。
0x00 漏洞验证
1. 在Win10 1903 x64系统上,使用gflags工具为图片app开启页堆,双击图片文件打开(图片默认应用为照片App)。一段时间后,App退出进程。
2. 使用Windbg附加照片App(Windbg 调试UWP方法详见微软文档),敲击g运行程序。一段时间后,进程崩溃。如下图所示:
结合访问违例的指令和内存分配的结果,可以得出如下结论:访问违例的原因是,在大小为0x10字节的内存区域中读取偏移为0x30的数据,因此它是一个越界读的漏洞。
0x01 漏洞分析
首先使用ida pro 加载崩溃dll,定位到崩溃点,分析函数代码。
函数声明如下:
__int64 __fastcall CCanonRawIm