
CVE-2024-56426 脆弱性のPoCです。
Exynos 990 Galaxy S20、S20 FE、Note20ファミリー向けの統合CVE-2024-56426ツール群。このエクスプロイトは10個すべての モデル名を受け付け、それらを6つの検証済み純正ブートローダーファミリーにマッピングする。
[!CAUTION] 追跡対象のキーバンドルおよび生成されたイメージはフュージング可能である。フュージングは 不可逆である。キーにフューズされた端末は、そのキーと互換性のあるイメージしか起動できない。誤ったモデル、ロールバック リビジョン、パッチセット、またはキーバンドルは、端末をフューズ済みブートループに陥らせる可能性がある。反復作業中は 開発用キーとUFSペイロードを使用すること。カスタムキーのフュージングを明示的に意図しない限り、 すべての準備/署名コマンドに
--no-fuseを追加すること。
選択したモデルは、BL1モデルIDとexact-model LKパッチTSVの両方を制御する。Runtime artifact は、プリフライトで
どの純正ファームウェアと暗号化分割イメージが使用されるかを制御する。ペアの5Gランタイム
アーティファクトを使用する4つの非5Gフラグは、LKのモデルIDチェックとモデルIDプログラミングパスもパッチする。
[!IMPORTANT] 以下に示す純正ファームウェアビルドでは、G780F、N980F、N981B、N985F、N986BはUH-to-BOOTLOADER 方式でEUBに入ることができない。これらのLKブートローダーは
Check_signinfo()を呼び出し、イメージに埋め込まれたBinaryName(uh.bin) とBOOTLOADERパーティションの期待ファイル名 (sboot.bin) を比較する。不一致はBinaryname has changed (uh.bin) -> (sboot.bin)を発生させ、フラッシュを拒否する。これらのデバイスでEUBに入るには、UH方式ではなく適切なモデル固有のテストポイントを使用すること。
| モデルフラグ | ランタイムアーティファクト | ランタイムファームウェア | モデルID | EVT | ロールバック | テスト済み | UH方式 / EUBエントリー |
|---|---|---|---|---|---|---|---|
G780F | G780F | G780FXXSOFYJ1 | 0x154 | 11 | 24 | ❌ | ブロック — テストポイントを使用 |
G980F | G981B | G981BXXSNHYB1 | 0x143 | 11 | 23 | ✅ | ファイル名ブロックなし |
G981B | G981B | G981BXXSNHYB1 | 0x13D | 11 | 23 | ❌ | ファイル名ブロックなし |
G985F | G986B | G986BXXSNHYB1 | 0x142 | 11 | 23 | ✅ | ファイル名ブロックなし |
G986B | G986B | G986BXXSNHYB1 | 0x13C | 11 | 23 | ✅ | ファイル名ブロックなし |
G988B | G988B | G988BXXSNHYB1 | 0x13E | 11 | 23 | ❌ | ファイル名ブロックなし |
N980F | N981B | N981BXXSIHYH3 | 0x153 | 11 | 18 | ❌ | ブロック — テストポイントを使用 |
N981B | N981B | N981BXXSIHYH3 | 0x14E | 11 | 18 | ❌ | ブロック — テストポイントを使用 |
N985F | N986B | N986BXXSIHYH3 | 0x152 | 11 | 18 | ❌ | ブロック — テストポイントを使用 |
N986B | N986B | N986BXXSIHYH3 | 0x14D | 11 | 18 | ❌ | ブロック — テストポイントを使用 |
10個すべての対応Galaxy S20、S20 FE、Note20モデルフラグには、オプトインの
CLI専用KVMブートプロファイルがある。Exynos 990カーネル
のブランチ名に kvm を含むものをビルドし、exact-modelコマンドに --kvm を追加する。例:
python3 exploit/exploit.py --build-sboot --model G985F --no-fuse --kvm
このプロファイルは LK H-Arx/UH パスを削除し、EL3 にカーネルへ EL2 で入るよう要求し、対応する 復号/再暗号化された EL3 モニターパッチテーブルを適用する。stock/tampered ブートローダー フラッシュモードでは引き続き利用できない。Web コントロールセンターには意図的に KVM コントロールがない。対応するカーネル と WindowsInQemu があれば、Windows は KVM 経由で フルスピードで QEMU 上でスマートフォン上で動作できる。
すべてのモードを1つの番号付きインストール手順として扱わないこと。目的を選ぶ:
| 目的 | パス |
|---|---|
| 署名済みカスタム ROM をインストールする | 正確なモデル/セットアップ → EUB → 一時的な --signed --no-fuse チェーン → ROM の完全な署名済み出力をフラッシュ → UFS 初回起動 |
| エクスプロイトをテストする | オプションの --prepare --no-fuse → EUB → --signed --no-fuse → 停止 |
| ブートチェーンを開発する (CLI のみ) | 一時的な no-fuse テスト → ビルド → 生成された SBoot/TZSW/LDFW をフラッシュ → UFS |
| ダンプ / リカバリ | 専用のワークフローとヒューズ状態チェックを使用する |
--prepare はホスト専用の準備を実行する: 生成された作業イメージを置き換え、ローカルファイルをビルドおよび署名するが、
USB は開かない。これは読み取り専用のドライランでも必須の前段階でもない: --signed はプリフライトを繰り返す。
生成される3パートの Heimdall コマンドはブートチェーン開発ツールであり、カスタム ROM のフラッシュではない。
デバイスに触れる前に USER_GUIDE.md を読み、対応するワークフローを選択すること。これには 完全な ROM のハンドオフに加えて、未ヒューズ、ヒューズ済み、および不確定状態のリカバリルールが含まれる。
ブラウザ UI の HTTP サーバーは Python の標準ライブラリを使用し、既存の exploit/exploit.py CLI を呼び出す。
キーバンドルの検証とツールの実行には requirements.txt のパッケージも必要である。ブートチェーン開発と
それが生成する3パートの Heimdall コマンドはターミナル専用ツールのままである。
リポジトリのルートから起動する:
python3 exynos990_control_center.py
ランチャーは 127.0.0.1 にバインドし、新しいアクセストークンを生成し、完全なローカル URL を出力して、デフォルトのブラウザで開きます。ブラウザを自動的に開かない場合は --no-browser を使用します:
python3 exynos990_control_center.py --no-browser
UI は以下を提供します:
また、CLI 専用の Exynos 990 KVM 通知も表示しますが、意図的に KVM オプションを公開したり、--kvm をいかなる web アクションにも転送したりしません。
USB アクセスは、コントロールセンターを起動したプロセスの権限に従います。起動する前に、付属の udev/ドライバー権限を設定してください。UI は特権資格情報を要求、保持、または転送しません。印刷されたトークン URL は非公開にし、使用後は直ちにサーバーを停止してください。
ターミナルユーザーは exynos990_control_center.py を無視できます;以下に記載されているすべての CLI コマンドは変更されず、完全にサポートされています。
Python 3.10 以降が必要です。
Windows 10/11(ネイティブ PowerShell):
.\windows\setup.ps1
. .\windows\activate.ps1
python .\exploit\exploit.py --prepare --model G985F --no-fuse
セットアップでは、固定されたネイティブ AArch64 ツールチェーン、LZ4、Heimdall、およびリポジトリの仮想環境をインストールし、その後 すべてのペイロードをビルドします。BootROM WinUSB ドライバーは、その上流の自己署名 証明書がマシンの信頼ストアを変更するため、明示的な管理者によるオプトインです。完全なセットアップ、ドライバーのインストール、 Download Mode の区別、検証、およびトラブルシューティングのプロセスについては WINDOWS.md を参照してください。
Windows のアクティベーション後は、残りのクロスプラットフォームの例で python3 と表示されている箇所では python を使用してください。
Linux:
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu lz4
macOS:
brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu lz4