通过 DevTools 逃逸 Chrome 沙箱

主要观点:作者发现 Chromium 浏览器中的 CVE-2024-6778 和 CVE-2024-5836 漏洞,可通过浏览器扩展实现沙箱逃逸,最终获谷歌 20,000 美元报酬。
关键信息

  • WebUIs 与 Chrome 沙箱:Chromium 运行的未信任代码被沙箱隔离,WebUI 用 HTML、CSS 和 Javascript 编写,可访问私有 API 绕过沙箱,但接收端会验证。
  • 企业策略:介绍 Chromium 企业策略系统,包括用户策略和设备策略,用户策略可本地设置,通过chrome://policy查看,其中存在未记录的设置测试策略页面的功能。
  • 策略测试页面漏洞:发现通过chrome://policy/test页面可设置测试策略,虽应先启用PolicyTestPageEnabled策略,但实际未验证导致漏洞,且该漏洞在特定浏览器渠道下可利用。
  • 利用浏览器切换器实现沙箱逃逸:企业策略中的 Legacy Browser Support 模块可通过设置特定策略让 Chromium 启动任意 shell 命令,结合chrome://policy实现沙箱逃逸。
  • 突破 Devtools API:通过创建恶意 Chrome 扩展,利用chrome.devtools.inspectedWindowreload()函数和eval()函数的漏洞,在chrome://policy页面获取代码执行权限,实现攻击链。
  • 谷歌的响应:谷歌确认漏洞并实施修复,包括添加loaderId参数、检查 URL 和测试策略启用情况等,最终两个漏洞分别被分配为 CVE-2024-5836 和 CVE-2024-6778,作者获 20,000 美元报酬。
    重要细节
  • 漏洞利用过程中涉及多种 Chrome 相关技术和页面,如chrome://downloadschrome://settingschrome://history等。
  • 不同操作系统下执行 shell 命令的方式不同,如 Windows 为C:\\Windows\\System32\\cmd.exe,Linux 为/bin/bash,Mac OS 为/bin/bash
  • 谷歌修复漏洞的方式包括在Page.reload命令中添加loaderId参数、在inspectedWindow.reload()函数中检查 URL 以及在 WebUI 处理程序中检查测试策略启用情况等。
  • 整个漏洞发现和报告过程历时数月,包括发现漏洞、发送报告、谷歌处理、修复和确定报酬等阶段。
阅读 18
0 条评论