微软:“白屏死机”不算漏洞
近日,CyberArk安全研究员Eviatar Gerzi发现Windows终端和基于Chrome的网页浏览器上存在多个高危DoS(拒绝服务)漏洞。
Gerzi在2003年的一个通过修改窗口标题执行代码的旧安全公告(https://marc.info/?l=bugtraq&m=104612710031920&q=p3)尝试了各种潜在的滥用途径,并发现了一种在PuTTY上诱导快速窗口标题更改的方法。
这种非典型的攻击方式导致测试设备进入一种被称为“白屏死机”的状态,除了鼠标光标外,屏幕上所有的应用程序界面都冻结了(失去响应)。
研究人员对存在类似漏洞的本地应用程序的实施攻击后,导致程序调用过多的操作系统内核,系统立即进入白屏死机状态。
被滥用的函数是“SetWindowText”,可用于更改指定窗口标题栏的文本。
需要注意的是,这个简单的攻击技巧可以导致大量“无辜”应用程序也一并被拖入白屏死机状态,而摆脱白屏死机状态的唯一方法是重新启动计算机。
研究人员还发现,“SetWindowText”并不是唯一导致白屏死机的手段,在其中一个案例中,研究人员测试了MobaXterm终端,令我惊讶的是它没有使用SetWindowText函数来更改窗口标题,而是使用了一个名为GdipDrawString的函数。
在这种情况下,有趣的是GdipDrawString并没有像SetWindowText那样导致整个计算机失去响应。它只影响了最终崩溃的应用程序。
Gerzi确认以下Windows终端受到白屏死机漏洞的影响:
- PuTTY–CVE-2021-33500(冻结整个计算机),已在0.75版中修复
- MobaXterm–CVE-2021-28847(仅冻结应用程序),已在21.0预览版3中修复
- MinTTY(和Cygwin)–CVE-2021-28848(冻结整个计算机),已在3.4.6版中修复
- Git–使用MinTTY,已在2.30.1版中修复
- ZOC–CVE-2021-32198(仅冻结应用程序),无修复
- XSHELL–CVE-2021-42095(冻结整个计算机),在版本7.0.0.76中修复
主流浏览器未能幸免
意识到几乎所有的GUI图形界面应用程序都使用SetWindowText函数,研究人员尝试了针对Chrome等流行的网络浏览器的攻击。
研究人员创建了一个HTML文件,该文件会导致标题在无限循环中快速变化,从而迫使浏览器冻结。
结果Edge、Torch、Maxthon、Opera和Vivaldi等所有基于Chromium的主流浏览器,全部中招,失去响应,而Firefox和Internet Explorer虽然没有瘫痪,但性能也受到了影响。
由于现代浏览器都是基于沙盒技术,因此滥用SetWindowText函数并不会影响到底层操作系统,让整个系统白屏死机。但是,当研究者尝试在虚拟机内进行浏览器攻击时,会出现资源耗尽问题,导致虚拟化系统显示“蓝屏死机”。
厂商回应:不是漏洞
研究人员指出,除了实验已经验证的Windows终端模拟器和主流浏览器以外,任何使用SetWindowText或GdipDrawString函数的应用程序都可能受此攻击影响。
有些应用例外,例如Slack。像Slack这样的应用程序在函数调用上具有速率限制器,因此它们能够抵御这种DoS攻击。
Gerzi联系了受影响的供应商并收到以下回复:
- Google:DoS问题被视为滥用或稳定性问题,而不是安全漏洞。注意:该问题在Mac上未观察到,但在Linux上观察到。我们再次审查了这个问题。我们无法在最新版本的WS16.1.2build-17966106和Chrome92.0.4515.131中重现崩溃。我们认为您观察到的行为可能取决于所使用的chrome版本,因为我们没有看到任何蓝屏死机问题。因此,我们认为这不是漏洞。
- Vivaldi:这是Windows10的设计局限;它不限制应用程序内存的使用,并且在RAM用完时仅使用页面文件(虚拟内存)。这导致响应较慢,因为此时必须从磁盘读取。
- 微软:我们的团队能够重现此问题,但它不符合我们通过立即安全更新提供服务的标准。虽然这构成了导致拒绝服务攻击的条件,但这只能在本地触发并且是资源耗尽的结果。攻击者将无法触发任何其他易受攻击的条件或检索对系统的其他攻击有益的信息。我们将关闭此案例,但我们已向我们的开发团队报告了该错误,他们可能会考虑在未来的Windows版本中解决此问题。
虽然谷歌和微软都否认白屏死机是漏洞,但是安全研究人员指出,可以通过在远程服务器上创建恶意文件并从在存在漏洞的终端中打开来远程触发攻击。