Google研究人员上周披露位于Windows一个与字体渲染相关的组件漏洞,可导致远程攻击者在Windows机器上执行任意程序代码。
这项漏洞是由Google研究人员Dominik Röttsches及Google Project Zero研究人员Mateusz Jurczyk合作发现,位于Windows的字体组件Directwrite中的漏洞。他们去年11月向微软安全回应中心通报,微软已在今年2月9日的安全更新中进行修补。而在满90天后,Google也于上周公布漏洞细节。
Google指出,DirectWrite为渲染高品质文本的Windows API,而如果需要显示高品质的网页文本,除了字体本身外,应用程序也需支持,才能在Windows机器上显示精美的字体。目前主要桌面程序,包括Chrome、Edge及Firefox浏览器都支持Windows Directwrite作为字体栅格化(rasterizer)引擎。这些浏览器将网页字体渲染为字(glyph)时,会将网页字体的二进制资料送到DirectWrite以完成渲染的处理。
Google研究人员发现,DirectWrite功能函数DWrite!fsg_ExecuteGlyph的内存毁损漏洞,编号CVE-2021-24093,可在DirectWrite在加载和栅格化包含恶意TrueType字体时触发。细部而言,大幅缩小TrueType字体的maxp字段值,就会造成从堆积内存分配到的缓冲区太小,导致缓冲溢出。Google研究人员指出,只要远程攻击者诱使用户连到能下载并显示恶意TrueType字体的网页时,即可造成内存毁损,而成功于Windows机器上执行任意程序代码。
CVE-2021-24093漏洞风险指数达到8.8,属于高度风险,受影响产品包括Windows 10 1607、1803、1809、1909、2004、到20H2的Windows 10及Windows Server 2016、2019、1909、2004、20H2等。
Project Zero同时公布了一个包含恶意TrueType字体的HTML档作为概念验证攻击,证明可以在一台安全修补完备的Windows 10 1909机器上的各种浏览器环境下,引发内存毁损。
Google去年10月也修补一个Chrome浏览器内的Freetype字体零时差漏洞CVE-2020-15999,可和Windows核心内的另一漏洞CVE-2020-17087串联起来,用于沙箱逃逸(sandbox escape)攻击。