全球有数十亿台设备安装了网络浏览器,这使它们成为网络犯罪分子的主要目标。由于主要网络浏览器拥有庞大的用户群,一个漏洞就可能造成深远的影响。保持浏览器更新对于抵御不断变化的威胁至关重要。
为了说明网络浏览器漏洞的严重性,我们的研究人员对 CVE-2024-6778 进行了广泛分析,这是基于 Chromium 的浏览器中的一个漏洞,尤其影响 Chrome DevTools。本博客详细分析了该漏洞的技术方面、潜在影响和缓解策略。
CVE-2024-6778 的背景
CVE-2024-6778 是在 Chrome DevTools 中发现的一个竞赛条件漏洞。攻击者可通过恶意浏览器扩展向有权限的浏览器页面注入恶意 HTML 或 JavaScript。根据 NVD(国家漏洞数据库),该漏洞被评为高度严重漏洞,CVSS 得分为 8.8。
该漏洞的严重性评级很高,因为它有可能导致远程代码执行,从而危及系统、破坏机密性并降低可用性。
Chromium 安全性概述
要深入了解 CVE-2024-6778 的影响,就必须了解 Chromium 安全模型的关键方面。Chromium 是 Google Chrome、Microsoft Edge、Opera 和 Brave 等浏览器的开源基础。它采用多进程模式,每个标签页(也称为渲染器)和各种浏览器组件都在独立进程中运行,通过限制潜在漏洞的范围来提高稳定性和安全性。
Chromium 安全性的一个基本要素是其沙箱机制,它限制呈现器进程直接访问系统资源。相反,所有交互都通过 IPC(进程间通信)通道进行管理,以确保只执行授权操作。
并非 Chromium 中的所有组件都受完全沙盒限制。chrome://settings、chrome://downloads 等 WebUI 页面在呈现器进程中呈现,但在运行时受到部分沙盒限制。该进程允许它们访问通常无法通过网络访问的浏览器 API。
例如,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 和浏览器进程之间通过 策略测试浏览器代理
班级该班 政策信息
结构定义如下
通过进一步检查负责处理这些政策的类别,确定了一种名为 应用测试策略
.该方法利用了私人API、 设置本地测试策略
动态应用策略列表。
为了深入了解如何通过该API处理策略请求,研究人员分析了 处理设置本地测试策略
方法中的 保单处理程序
类:
"(《世界人权宣言》) 处理设置本地测试策略
方法从提供的参数中检索策略数据,并获取指向 本地测试策略提供程序
实例。然后,在指示当前用户配置文件使用该提供程序之前,它会验证该提供程序是否存在。
这种核查被认为是不够的,因为它只能确保 本地测试提供程序
为非空,才会应用这些策略。创建和初始化 本地测试提供程序
由 创建允许
方法:
在 创建允许
方法的返回值完全取决于 是否启用政策测试
功能。该功能可确定 本地测试策略提供程序
实例是根据用户偏好和浏览器的发布通道组合创建的:
因为 前置服务
每次 IsPolicyTestingEnabled()
被调用时,第一个条件将被绕过,使启用决定完全依赖于浏览器的释放通道。
在非品牌 Chromium 版本中,发布通道默认为 通道::未知
.根据函数的逻辑、 通道::未知
与 Channel::DEFAULT
,默认启用策略测试功能。代码流分析表明,私有API 设置本地测试策略
可通过 WebUI 调用,在没有任何访问限制的情况下应用策略。
剥削
通过识别和利用这一专用API,攻击者可以通过 WebUI 任意应用策略,从而操纵以下设置 已启用浏览器切换器
, BrowserSwitcherUrlList
, 替代浏览器路径
和 替代浏览器参数
来执行命令。例如,通过设置 替代浏览器路径
到 powershell 和 替代浏览器参数
至 ["计算"]
当访问特定 URL 时,可以执行任意 shell 命令。
通过专用API应用任意恶意用户策略
为了演示如何使用私人 设置本地测试策略
在前面的分析中确定的API ,下面的 JavaScript 代码是一个用于设置 允许恐龙复活节彩蛋
政策,并通过 网络用户界面
通过调用 设置本地测试策略
:
该策略可成功应用于禁用 允许恐龙复活节彩蛋
设置。
为扩大影响,攻击者可将目标锁定为 浏览器切换器
政策:
如果 URL 符合某些条件,该策略可使浏览器调用另一个浏览器路径。可以通过配置该路径指向系统可执行文件来执行操作系统命令,从而利用该策略。下面的 JavaScript 代码演示了这种方法:
该脚本执行以下任务
- 启用
浏览器切换器
feature for example.com - 设置 powerShell 的替代浏览器路径
- 执行
煅烧
只要访问指定的 URL。
模拟恶意 Chrome 浏览器扩展
识别允许应用策略的私有API 为攻击者引入了一个重要的攻击载体。要有效利用这一漏洞,攻击者需要开发一个恶意 Chrome 扩展,使用 Chrome DevToolsAPI 来执行恶意 JavaScript 代码。
为了展示潜在的实际影响,我们的研究人员模拟了一个场景,即在易受攻击的浏览器上安装恶意Chrome扩展,并利用该扩展执行攻击。
不过,通过扩展执行 DevToolsAPI 遇到一些必须绕过的难题。首先,DevToolsAPI 只有在 DevTools 打开并主动检查网站时才能运行。其次,DevToolsAPI 不允许在 Web 用户界面(WebUI)上执行代码。这一限制有助于在开发和检查过程中维护 WebUI 的安全性和完整性。
通过重载API显示 Javascript 执行迹象
进一步分析发现,chrome.devtools.inspectedWindow.reload函数缺乏验证功能,无法确认是否允许扩展在被检查页面上运行脚本。它的唯一防御级别是 devtools 扩展服务器,一旦被检查页面的 URL 发生变化,它就会阻止访问。
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 的情况下:
由于验证的只是 URL 而不是页面的来源,因此在导航后会有一段短暂的时间,来源反映新页面,而 URL 保持不变。
如果 chrome.devtools.inspectedWindow.reload
在此窗口中调用,可能会无意中在目标页面上执行 JavaScript。
提高比赛条件下的可靠性
由于对时间的依赖,利用竞赛条件本质上是不可靠的。此外,快速重载或畸形脚本也会导致页面崩溃。提高可靠性的一种新方法是故意诱导页面崩溃,因为通过 DevTools 发出的命令通常会在崩溃时取消,但 Page.reload
映射到 chrome.devtools.inspectedWindow.reload()
被列入白名单,并在页面重新加载后执行。
下面是一个通过推送后续命令使页面崩溃的工作流程模型:
内容脚本中的调试器语句可能引发崩溃
连续两次使用调试器会扰乱内容脚本的导航过程。它可能通过将 导航提交状态
进入意料之外的状态。出现这一问题的原因是 RenderFrameImpl::SynchronouslyCommitAboutBlankForBug778318
被执行、 更改 _navigation_commit_state
到一个意想不到的值。
第一次调用会暂停执行,让 导航提交状态
在不一致的状态下,第二个暂停在 CHECK_EQ
检查,导致状态验证失败并引发崩溃。
补救措施
忽视定期更新浏览器版本会使您的设备面临严重的安全威胁,尤其是那些与 CVE(常见漏洞和暴露)相关的威胁。为了帮助降低这种风险,MetaDefender Endpoint™通过检测浏览器版本和检查漏洞(包括 CVE-2024-6778 等已知 CVE)提供强大的保护。
MetaDefender Endpoint 可确保您的应用程序是最新的,并标记任何过时或受感染的版本。它还会列出存在已知漏洞的已安装应用程序(按 CVE 严重程度分类),并推荐修复方法,以有效减轻潜在威胁。要观看有关MetaDefender Endpoint 如何帮助您降低这些风险的现场演示,请立即与我们的专家取得联系。