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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-5281-CVE-2026-11057-fullchain — Android Chromium向けのフルチェーンエクスプロイトで、CVE-2026-11057の情報漏えいとCVE-2026-5281のuse-after-freeを組み合わせ、vtableハイジャックと任意コード実行を実現します。 | Kitploit
ツール/GitHubGitHub/jaf0rk/cve-2026-5281-cve-2026-11057-fullchain
Androidセキュリティエクスプロイトフレームワーク脆弱性分析エクスプロイトウェブアプリケーション悪用モバイルセキュリティバイナリエクスプロイト
GitHubjaf0rk/cve-2026-5281-cve-2026-11057-fullchain

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-5281-CVE-2026-11057-fullchain

Android Chromium向けのフルチェーンエクスプロイトで、CVE-2026-11057の情報漏えいとCVE-2026-5281のuse-after-freeを組み合わせ、vtableハイジャックと任意コード実行を実現します。

リポジトリを見る
402ヶ月前未レビュー

CVE-2026-5281+CVE-2026-11057 Android フルチェーン

デバイス

Pixel 7 Android 16 ARM64

Chromium バージョン

commit 994c846bbd7a35241ba7c08158c13d66412a6993 (HEAD -> 146.0.7680.111, tag: 146.0.7680.111)
Author: Roger McFarlane <[email protected]>
Date:   Mon Mar 9 12:48:07 2026 -0700

説明

悪用アプローチ

このリポジトリは、CVE-2026-11057(Skia の未初期化グリフ画像メモリ)と CVE-2026-5281(Dawn wire サーバーの DeviceInfo ユースアフターフリー)を組み合わせて完全なチェーンを構成します。すべての変更はレンダラー側で行われ、GPU プロセスのコードは変更されていません:

  1. 情報リーク(CVE-2026-11057) — canvas のテキストレンダリングを介して未初期化のグリフ画像バッファをトリガーし、GPU プロセスのヒープからポインタを読み戻し、算術実行でそれらを検証し、PartitionAlloc プールのベースを導出し、偽の Server ターゲット M = POOL + 0x202A08000(キャリブレーション済みオフセット)を計算します。

  2. CC スプレー — createBuffer(label="CCM:<m>:<n>") は、3000 個の不完全な ChunkedCommand(10KB バケット、remainingSize=1、wire サーバーの mChunkedCommands 内で存続)の注入をトリガーします。ペイロードは M 周辺の領域を、Android arm64 向けにレイアウトされた偽の Server で埋めます:+0xB20 に MutexProtected vptr、+0xB50/+0xB58 に ChunkedCommandSerializer、+0xC00/+0xD00 に偽の CommandSerializer/vtable。

  3. 5281 トリガー + 占有 — queue.writeBuffer(buffer, 0x414141, ...) はまず Unregister(Device) を呼び出して 16 バイトの DeviceInfo を解放し、次に 16 バイトの占有用 ChunkedCommand を注入してそのスロットを再確保し info->server を M で上書きし、最後に範囲外オフセットで検証エラーをトリガーします。

  4. ダングリングコールバック → vtable ハイジャック — 未キャプチャエラーのコールバックは info->server = M(偽の Server)を参照します:ゼロ化されたミューテックスを通過し、実行は OnUncapturedError → SerializeCommand に到達し、相対 vtable の間接呼び出しが偽の vtable にヒットして pc = fake_vtable + 制御された int32 オフセット となり、pc = 0x7641414141 で実証されます。

注:Android arm64 の Chromium は相対 vtable(-fexperimental-relative-c++-abi-vtables)を使用します。vtable エントリは絶対関数ポインタではなく 32 ビットの相対オフセットであるため、PoC は vtable ハイジャック時点のマーカーとして制御された int32 オフセットを使用します。

テストデバイスでは、完全なチェーンはほぼ 100% の成功率で vtable ハイジャッククラッシュに到達します。リーク段階では、成功するまでに数回の自動リロードが必要になる場合があります。

ファイルの役割

  • SkStrike.cpp.patch — CVE-2026-11057 のリークトリガー。FlattenGlyphsByType() は strike ペイロードを書き換え、GPU プロセスが fImage == nullptr の SkGlyph を作成し、最終的に未初期化の画像バッファを読み取ってヒープポインタをリークします。
  • Device.cpp.patch — Dawn wire クライアントの CC スプレー。APICreateBuffer() は CCM: ラベルを解析し、Android arm64 の偽の Server ペイロードを構築し、GPU プロセス内で存続する N 個の不完全な ChunkedCommand を注入します。
  • ApiProcs.cpp.patch — CVE-2026-5281 のトリガー + 占有。QueueWriteBuffer のマジックオフセット 0x414141 で、Unregister(Device) を呼び出して DeviceInfo を解放し、16 バイトの ChunkedCommand を注入してスロットを再確保し info->server = M を設定し、その後範囲外オフセットで処理を進めてダングリングコールバックを発火させます。
  • exploit.html — ページオーケストレーション:リークプリミティブ(groom/draw/readCell/verifyRuns/derivePoolBase)、CC スプレー、およびスタンドアロンの exploit5281() トリガー。失敗時にはスプレー状態をクリーンアップしてリロードし、各段階が干渉しないようにします。

開示範囲

この ExP は vtable ハイジャック の段階(制御された間接呼び出しターゲット、pc = base+0x41414141)までのみ開示されています。制御されたジャンプ以降の段階、および RCE の実装は機密として保持され、このリポジトリには含まれていません。

実環境エクスプロイトと元の PoC の比較

私のエクスプロイトは、元の報告者のアプローチとは重要な点で異なります。 元のエクスプロイトは、GPU プロセスの PartitionAlloc ソースコードを変更してアドレスランダム化を無効化することで実現されていました。このアプローチは概念実証の目的にのみ適しています。 対照的に、私のエクスプロイトは情報開示脆弱性を組み合わせてアドレスランダム化をバイパスし、実環境で動作する完全に機能するエクスプロイトを実現します。

ビルド引数 args.gn

# Set build arguments here. See `gn help buildargs`.
is_official_build = true
is_debug = false
symbol_level = 0
v8_symbol_level = 0
blink_symbol_level = 0
is_component_build = false  
proprietary_codecs = true   
ffmpeg_branding = "Chrome"  
dcheck_always_on =false
optimize_webui = true
android_static_analysis = "off"
target_os = "android"
target_cpu = "arm64"

# Disable PartitionAllocEventuallyZeroFreedMemory
disable_fieldtrial_testing_config = true

treat_warnings_as_errors = false

再現手順

  1. cd third_party/dawn
  2. git apply ApiProcs.cpp.patch
  3. git apply Device.cpp.patch
  4. cd ../skia
  5. git apply SkStrike.cpp.patch
  6. Chromium をビルドする
  7. Android デバイスで Chrome を開き、exploit.html を実行する
  8. PC 上で adb logcat | grep DEBUG を実行する

注意

  1. PartitionAllocEventuallyZeroFreedMemory の落とし穴に注意すること。これが有効になると、解放されたメモリは最終的にゼロで上書きされる。 この機能はデフォルトでは無効になっている。公式の Stable ビルドでは Google の Finch(サーバー側フィールドトライアル)によって制御されており、Google は通常、一般ユーザー向けにはこれを有効にしない。 しかし、ローカル/非公式ビルドや公式の Dev/Canary チャネルでは頻繁に有効化される(特にフィールドトライアルのテスト設定が有効な場合)。これは、非 Stable ビルドに対してエクスプロイトを開発・テストする際によくある落とし穴である。
  2. exploit.html には 127.0.0.1 ループバックアドレス経由でアクセスすること。そうでない場合、HTTP は信頼されていないものとして扱われ、WebGPU が動作しない
  3. このユースケースでは、リークプリミティブのヒープレイアウトは Pixel 7 で特に良好に機能し、わずか 1〜10 秒で完了する。Pixel 9 でも成功するが、処理には 2〜3 分かかる。ヒープレイアウトはほとんどの Pixel デバイスでより広い互換性を得るためにさらに最適化できる—そしてそうした改善はすでに特定されている—が、これらの最適化は本実験の範囲外であり、ここでは議論しない。
ツールをダウンロード