人工智能黑客--黑客如何在网络攻击中使用人工智能

立即阅读
我们利用人工智能进行网站翻译,虽然我们力求准确,但不一定总是 100%精确。感谢您的理解。

全面分析 CVE-2024-6778:Chrome 浏览器 DevTools 中的竞态条件漏洞

OPSWAT
分享此贴

全球有数十亿台设备安装了网络浏览器,这使它们成为网络犯罪分子的主要目标。由于主要网络浏览器拥有庞大的用户群,一个漏洞就可能造成深远的影响。保持浏览器更新对于抵御不断变化的威胁至关重要。  

为了说明网络浏览器漏洞的严重性,我们的研究人员对 CVE-2024-6778 进行了广泛分析,这是基于 Chromium 的浏览器中的一个漏洞,尤其影响 Chrome DevTools。本博客详细分析了该漏洞的技术方面、潜在影响和缓解策略。  

两名研究人员因 CVE-2024-6778 Chrome DevTools 漏洞而受到表彰,并显示了所属大学

CVE-2024-6778 的背景

CVE-2024-6778 是在 Chrome DevTools 中发现的一个竞赛条件漏洞。攻击者可通过恶意浏览器扩展向有权限的浏览器页面注入恶意 HTML 或 JavaScript。根据 NVD(国家漏洞数据库),该漏洞被评为高度严重漏洞,CVSS 得分为 8.8。  

该漏洞的严重性评级很高,因为它有可能导致远程代码执行,从而危及系统、破坏机密性并降低可用性。  

显示 CVE-2024-6778 Chrome DevTools 漏洞详情和 CVSS 高度严重性分数的用户界面截图

Chromium 安全性概述

要深入了解 CVE-2024-6778 的影响,就必须了解 Chromium 安全模型的关键方面。Chromium 是 Google Chrome、Microsoft Edge、Opera 和 Brave 等浏览器的开源基础。它采用多进程模式,每个标签页(也称为渲染器)和各种浏览器组件都在独立进程中运行,通过限制潜在漏洞的范围来提高稳定性和安全性。 

Chromium 安全性的一个基本要素是其沙箱机制,它限制呈现器进程直接访问系统资源。相反,所有交互都通过 IPC(进程间通信)通道进行管理,以确保只执行授权操作。  

并非 Chromium 中的所有组件都受完全沙盒限制。chrome://settings、chrome://downloads 等 WebUI 页面在呈现器进程中呈现,但在运行时受到部分沙盒限制。该进程允许它们访问通常无法通过网络访问的浏览器 API。

Chrome 浏览器策略设置 UI 显示策略名称、值和状态,与 CVE-2024-6778 Chrome DevTools 漏洞有关

例如,chrome://policy页面在企业环境中发挥着重要作用,因为它使管理员和用户能够配置和执行浏览器安全策略。在 Windows 系统中,这些策略也是通过组策略来管理的。  

由于chrome://policy可以直接与操作系统交互,因此成为攻击者的重要目标。由于 CVE-2024-6778 漏洞利用了 Chrome DevTools 中的竞赛条件,攻击者可以向这些页面注入恶意代码,从而带来严重的安全风险。  

CVE-2024-6778 的技术分析

发现

在 Chrome 浏览器企业版 117 中引入的测试功能中发现了此漏洞。该功能可通过chrome://policy/test页面进行策略测试。由于有关该功能的官方文档有限,我们的研究人员对 Chromium 源代码进行了彻底检查,并辅以 CVE 作者的见解,以全面了解该功能的实现并识别相关的安全漏洞。

政策管理组件 

OPSWAT 研究员的源代码分析表明,在 chrome://policy/test,使用 政策信息 接口,并在 WebUI 和浏览器进程之间通过 策略测试浏览器代理 班级该班 政策信息 结构定义如下  

用于显示 CVE-2024-6778 Chrome DevTools 漏洞中策略管理组件的 PolicyInfo 的 TypeScript 接口

通过进一步检查负责处理这些政策的类别,确定了一种名为 应用测试策略.该方法利用了私人API、 设置本地测试策略动态应用策略列表。

显示与 CVE-2024-6778 Chrome DevTools 漏洞相关的策略管理逻辑的代码片段

为了深入了解如何通过该API处理策略请求,研究人员分析了 处理设置本地测试策略 方法中的 保单处理程序 类: 

显示与 CVE-2024-6778 Chrome DevTools 漏洞相关的策略管理逻辑的代码片段

"(《世界人权宣言》) 处理设置本地测试策略 方法从提供的参数中检索策略数据,并获取指向 本地测试策略提供程序 实例。然后,在指示当前用户配置文件使用该提供程序之前,它会验证该提供程序是否存在。  

这种核查被认为是不够的,因为它只能确保 本地测试提供程序 为非空,才会应用这些策略。创建和初始化 本地测试提供程序创建允许 方法:  

Chrome 浏览器中 LocalTestPolicyProvider 的 C++ 代码,与 CVE-2024-6778 Chrome DevTools 漏洞策略管理有关

创建允许 方法的返回值完全取决于 是否启用政策测试 功能。该功能可确定 本地测试策略提供程序 实例是根据用户偏好和浏览器的发布通道组合创建的: 

C++ 代码检查策略测试状态,与策略管理中的 CVE-2024-6778 Chrome DevTools 漏洞有关

因为 前置服务 每次 IsPolicyTestingEnabled() 被调用时,第一个条件将被绕过,使启用决定完全依赖于浏览器的释放通道。

在非品牌 Chromium 版本中,发布通道默认为 通道::未知.根据函数的逻辑、 通道::未知Channel::DEFAULT,默认启用策略测试功能。代码流分析表明,私有API 设置本地测试策略 可通过 WebUI 调用,在没有任何访问限制的情况下应用策略。 

剥削

通过识别和利用这一专用API,攻击者可以通过 WebUI 任意应用策略,从而操纵以下设置 已启用浏览器切换器, BrowserSwitcherUrlList, 替代浏览器路径替代浏览器参数 来执行命令。例如,通过设置 替代浏览器路径 到 powershell 和 替代浏览器参数["计算"]当访问特定 URL 时,可以执行任意 shell 命令。

通过专用API应用任意恶意用户策略

为了演示如何使用私人 设置本地测试策略 在前面的分析中确定的API ,下面的 JavaScript 代码是一个用于设置 允许恐龙复活节彩蛋 政策,并通过 网络用户界面 通过调用 设置本地测试策略:

JavaScript 代码通过专用API 设置 Chrome 浏览器策略,说明 CVE-2024-6778 Chrome DevTools 漏洞

该策略可成功应用于禁用 允许恐龙复活节彩蛋 设置。

Chrome DevTools 通过专用API 显示策略更改,说明 CVE-2024-6778 Chrome DevTools 漏洞

为扩大影响,攻击者可将目标锁定为 浏览器切换器 政策:

显示浏览器切换器策略的 JSON 配置,与 CVE-2024-6778 Chrome DevTools 漏洞和私人API 滥用有关

如果 URL 符合某些条件,该策略可使浏览器调用另一个浏览器路径。可以通过配置该路径指向系统可执行文件来执行操作系统命令,从而利用该策略。下面的 JavaScript 代码演示了这种方法:

利用 CVE-2024-6778 Chrome DevTools 漏洞的 JavaScript 代码可通过专用API设置恶意用户策略

该脚本执行以下任务 

  • 启用 浏览器切换器 feature for example.com 
  • 设置 powerShell 的替代浏览器路径 
  • 执行 煅烧 只要访问指定的 URL。
显示 Chrome 浏览器策略、DevTools 代码和计算器应用程序的 UI,说明 CVE-2024-6778 Chrome 浏览器 DevTools 漏洞

模拟恶意 Chrome 浏览器扩展

识别允许应用策略的私有API 为攻击者引入了一个重要的攻击载体。要有效利用这一漏洞,攻击者需要开发一个恶意 Chrome 扩展,使用 Chrome DevToolsAPI 来执行恶意 JavaScript 代码。  

为了展示潜在的实际影响,我们的研究人员模拟了一个场景,即在易受攻击的浏览器上安装恶意Chrome扩展,并利用该扩展执行攻击。  

不过,通过扩展执行 DevToolsAPI 遇到一些必须绕过的难题。首先,DevToolsAPI 只有在 DevTools 打开并主动检查网站时才能运行。其次,DevToolsAPI 不允许在 Web 用户界面(WebUI)上执行代码。这一限制有助于在开发和检查过程中维护 WebUI 的安全性和完整性。

通过重载API显示 Javascript 执行迹象

进一步分析发现,chrome.devtools.inspectedWindow.reload函数缺乏验证功能,无法确认是否允许扩展在被检查页面上运行脚本。它的唯一防御级别是 devtools 扩展服务器,一旦被检查页面的 URL 发生变化,它就会阻止访问。  

通过重载API显示针对 CVE-2024-6778 Chrome DevTools 漏洞的 inspectedWindow.reload() 行为的流程图

About:blank 页面继承了打开它们的页面的权限和来源。这意味着,从 WebUI 信号重定向时在 about:blank 上执行代码的能力是一个潜在漏洞。

通过重载API在 WebUI 上执行代码

中的竞赛条件 chrome.devtools.inspectedWindow.reload() 该漏洞允许在 Chrome 浏览器的 WebUI 页面(如 chrome://policy)上执行代码,而这些页面通常是受保护的。该漏洞利用了重载API 在页面转换期间注入 JavaScript 的功能。具体操作如下

  • 目标 WebUI:在标签页中打开 WebUI 页面(例如,chrome://policy)并附加 DevTools。
  • 注入脚本:API 带有 injectedScript 参数,以便在重载期间运行任意 JavaScript。
  • 利用竞赛条件:当重新加载在 WebUI 的安全机制完全初始化之前触发时,就会出现竞赛条件,从而允许注入的脚本执行。

在从 about:blank 页面导航到 chrome://policy 的情况下:  

显示 CVE-2024-6778 Chrome DevTools 漏洞的示意图(通过重载API 和导航过程中的原点设置

由于验证的只是 URL 而不是页面的来源,因此在导航后会有一段短暂的时间,来源反映新页面,而 URL 保持不变。

如果 chrome.devtools.inspectedWindow.reload 在此窗口中调用,可能会无意中在目标页面上执行 JavaScript。

提高比赛条件下的可靠性

由于对时间的依赖,利用竞赛条件本质上是不可靠的。此外,快速重载或畸形脚本也会导致页面崩溃。提高可靠性的一种新方法是故意诱导页面崩溃,因为通过 DevTools 发出的命令通常会在崩溃时取消,但 Page.reload 映射到 chrome.devtools.inspectedWindow.reload() 被列入白名单,并在页面重新加载后执行。

处理 Chrome DevTools 中待处理信息的 C++ 代码,与 CVE-2024-6778 Chrome DevTools 漏洞竞赛条件有关

下面是一个通过推送后续命令使页面崩溃的工作流程模型:  

CVE-2024-6778 Chrome DevTools 漏洞改进竞赛条件可靠性过程示意图

内容脚本中的调试器语句可能引发崩溃

连续两次使用调试器会扰乱内容脚本的导航过程。它可能通过将 导航提交状态 进入意料之外的状态。出现这一问题的原因是 RenderFrameImpl::SynchronouslyCommitAboutBlankForBug778318 被执行、 更改 _navigation_commit_state 到一个意想不到的值。

显示与 CVE-2024-6778 Chrome DevTools 漏洞相关的导航提交检查的代码片段 crash\
显示与 CVE-2024-6778 Chrome DevTools 漏洞崩溃相关的导航提交状态逻辑的代码片段

第一次调用会暂停执行,让 导航提交状态 在不一致的状态下,第二个暂停在 CHECK_EQ 检查,导致状态验证失败并引发崩溃。

补救措施

忽视定期更新浏览器版本会使您的设备面临严重的安全威胁,尤其是那些与 CVE(常见漏洞和暴露)相关的威胁。为了帮助降低这种风险,MetaDefender Endpoint™通过检测浏览器版本和检查漏洞(包括 CVE-2024-6778 等已知 CVE)提供强大的保护。  

MetaDefender Endpoint 可确保您的应用程序是最新的,并标记任何过时或受感染的版本。它还会列出存在已知漏洞的已安装应用程序(按 CVE 严重程度分类),并推荐修复方法,以有效减轻潜在威胁。要观看有关MetaDefender Endpoint 如何帮助您降低这些风险的现场演示,请立即与我们的专家取得联系。 

标签

通过OPSWAT 了解最新信息!

立即注册,即可收到公司的最新动态、 故事、活动信息等。