我们很高兴能推出一系列技术分析博客,重点介绍利用我们的先进威胁检测技术识别和修复的各种常见漏洞和暴露 (CVE)。所有研究均由参加 2023 年 9 月启动的OPSWAT 网络安全奖学金计划的研究生完成。
在本博客中,我们将解释 Google Chrome 浏览器 CVE-2019-13720 以及企业如何抵御 CVE-2019-13720 利用攻击。
什么是 Google Chrome 浏览器?
谷歌 Chrome 浏览器是谷歌公司开发的一款跨平台网络浏览器,于 2008 年 9 月 2 日正式发布。它的开发是谷歌努力创造更好、更现代化浏览器的一部分。当时它提供了许多新功能,包括标签浏览、隐私模式和与谷歌服务同步。自发布以来,它已成为全球最受欢迎的网络浏览器之一。据估计,截至 2021 年,谷歌 Chrome 浏览器的用户数量约为 32 亿。
由于 Google Chrome 浏览器广受欢迎,它已成为研究和攻击的焦点,吸引着道德黑客和恶意黑客。在 Google Chrome 浏览器中发现的常见漏洞包括拒绝服务(DoS)、信息泄露和远程代码执行等。关于远程代码执行漏洞,Google Chrome 浏览器存在两种类型:沙箱逃逸和非逃逸。
什么是 CVE-2019-13720?
CVE-2019-13720是Google Chrome浏览器78.0.3904.87版本之前的WebAudio中的一个免费使用(UAF)漏洞,远程攻击者可通过伪造的HTML页面利用堆破坏。当受害者访问恶意网页或在存在漏洞的 Google Chrome 浏览器上打开伪造的 HTML 页面时,恶意代码就会在受害者的端点上执行。此 CVE 由 Anton Ivanov 和 Alexey Kulaev 于 2019 年首次报告。
从技术角度看,由于 Qt WebEngine 音频组件中的渲染线程和音频线程之间存在竞赛条件,可利用此漏洞执行 WebAssembly shell 代码,导致受害者的设备被入侵。解决此问题的方法是所有 Qt WebEngine 用户更新到最新版本。
攻击阶段
攻击者创建一个带有恶意 HTML 的特殊 URL,并向受害者发送带有该链接的网络钓鱼电子邮件。当受害者打开电子邮件并点击链接时,恶意代码就会被执行,并允许攻击者接管受影响的系统。有关在 HTML 文档中出现的远程代码策略的详细信息,请参阅此处。
什么是自由使用(UAF)和堆喷射漏洞?
UAF 漏洞是一种安全漏洞,当程序在释放内存后继续使用内存时就会出现这种漏洞。这会导致各种不良后果,包括数据损坏、任意代码执行和系统崩溃。
堆喷射是一种有效载荷传输技术,需要在整个堆的不同位置写入多个字节。这包括向内存堆注入精心制作的有效载荷(即有害数据),确保执行流跳转到喷洒的内存而不是应用程序的原始代码。这种攻击的目的通常是获取对 EIP 注册表的控制权。
什么是 WebAssembly?
WebAssembly 通常缩写为 Wasm,是一种新的二进制指令格式,可作为 C/C++ 等高级语言的可移植编译目标,使其能够在网络浏览器的 JavaScript 引擎中以接近原生的速度运行。
然而,由于 WebAssembly 可以从 C/C++ 等非内存安全语言编译,因此常见的编码漏洞(如缓冲区溢出或格式字符串漏洞)可能会被引入交叉编译的 WebAssembly 二进制文件中。这种在 WebAssembly 模块中包含漏洞的可能性增加了当代网络应用程序的攻击面。
什么是竞赛条件漏洞?
当多个进程或线程试图同时访问一个共享资源时,就会出现软件中的竞赛条件漏洞,由于访问时间的不同而导致不可预测的结果或运行中断。当程序出现竞赛条件漏洞时,可能会导致应用程序崩溃、数据损坏、结果不正确或不一致等各种问题。攻击者可利用此漏洞获取未经授权的访问、泄漏信息、提升权限或导致系统崩溃。
TOCTTOU 漏洞被归类为竞赛条件漏洞,它利用了检查和使用资源之间的时间差。
CVE-2019-13720 如何工作?
为了利用这个漏洞,研究人员在 HTML 文件中附加了 JavaScript 代码。当用户启动 HTML 文件时,脚本会创建两个处理相同缓冲区数据的线程(主线程和音频线程),试图找到泄漏的地址。然后,利用 ReverbConvolverStage 中 temporary_buffer_object 的泄漏地址来获取 IIRFilterNode(与 Convolver 共享同一个超级页面)中 feedforward_array 的指针。随后,研究人员尝试获取第二个触发器 UAF 中的前馈数组指针。
WebAssembly 处理 shell 代码的执行。为了能够执行 shell 代码,研究人员尝试释放 IIRFilter 并写入 GCPreventer,直到获得对新分配位置的控制权,而不需要喷射。最后,研究人员将 shellcode 写入内存中的即时 (JIT) 区域。因此,一旦文件阅读器出现错误事件,WebAssembly 模块就会执行 shell 代码。
要执行与此漏洞相关的 shell 代码,用户必须在有漏洞的 Chrome 浏览器版本中禁用沙箱。
当 shell 代码执行时,它会自动打开受害者设备上的记事本服务。
修复方法
MetaDefender Endpoint由OPSWAT 设计的端点安全解决方案 MetaDefender Endpoint 可帮助用户检测并防御系统受到这些攻击。用户禁用隐私Sandbox 功能(--no-sandbox)后,MetaDefender Endpoint 可以检测 CVE 并应用最新的 Google Chrome 浏览器补丁。之后,用户可以手动将 Google Chrome 浏览器更新到最新版本,或者激活Patch Management 选项卡下的 "自动更新 "功能,让OPSWAT MetaDefender Endpoint 在新补丁可用时自动更新浏览器。
为防止接触恶意代码,用户应使用电子邮件过滤工具来检测网络钓鱼攻击,并避免点击电子邮件中的未知 URL。
MetaDefender Endpoint 主要产品功能和优势
- 审查并修复有风险的应用程序。可在MetaDefender Endpoint UI 中查看存在漏洞或过时的应用程序。
- 检查操作系统是否正确配置了反恶意软件保护。
- 确保遵守组织安全标准。
- 硬盘加密保证。
- 操作系统补丁验证。
- 在端点上进行恶意软件扫描和发布无恶意软件公告的多种选项。
参考资料
- https://nvd.nist.gov/vuln/detail/CVE-2019-13720
- https://bugs.chromium.org/p/chromium/issues/detail?id=1019226
- https://www.w3.org/TR/webaudio/
- https://security.gentoo.org/glsa/202004-04
- https://www.cve.org/CVERecord?id=CVE-2019-13720
- https://packetstormsecurity.com/files/167066/Google-Chrome-78.0.3904.70-Remote-Code-Execution.html
- https://devopedia.org/race-condition-software
- https://webassembly.org/
- https://www.researchgate.net/figure/WebAssembly-high-level-architecture_fig1_360232889
- https://www.researchgate.net/publication/331990070_Native_Web_Audio_API_Plugins
- https://whitehat.vn/threads/gioi-thieu-ky-thuat-khai-thac-exploit-heap-spray.5056/
- https://www.opswat.com/