
CVE-2026-43499(GhostLock)の ASUS ROG Phone 5S 向け適応 — UAF トリガー + pselect スタック再利用、KASLR リークをブロック
CVE-2026-43499 (GhostLock) の ASUS ROG Phone 5S (ASUS_I005) への適応研究。
結論:脆弱性のトリガーとスタック回収は完全に検証済み;権限昇格チェーンは KASLR leak により阻害された。
| 段階 | 内容 | 状態 |
|---|---|---|
| 0 | UAF トリガー(3 スレッド + CMP_REQUEUE_PI) | ✅ |
| 1 | pselect timeout=0 スタック回収(shift=10) | ✅ |
| 1.6 | W カーネルスタック SP リーク(perf PERF_SAMPLE_REGS_INTR) | ✅ |
| 2 | 任意アドレス書き込み(KASLR slide が必要) | ❌ |
| — | KASLR leak(8 種のソースすべて失敗) | ❌ |
| 項目 |
|---|
CVE-2026-43499 (GhostLock) は Linux カーネル rtmutex サブシステムのスタック UAF である。
remove_waiter() がプロキシロックのロールバックパスで waiter->task ではなく current を使用するため、
task_struct->pi_blocked_on にダングリングポインタが残留する。
_copy_from_user は依然として実行されるPSELECT_WAITER_WORD_SHIFT = 10docs/05-limitations.md を参照:
docs/ 分析ドキュメントとタイムライン
06-research-snapshot.md 完全な研究スナップショット07-iteration-log.md 失敗バージョンの記録disasm/ 主要な逆アセンブリ断片recon/ 偵察出力include/ シンボルテーブル + 構造体オフセットsrc/ PoC ソースコード(詳細は src/README.md)scripts/ 分析スクリプトlogs/ 実行ログ(git には含めない)# 1. シンボルとオフセットの抽出(ASUS 公式カーネルソースからビルドした vmlinux が必要)
./scripts/extract_symbols.sh
./scripts/gen_symbols_h.sh
./scripts/extract_offsets.sh
# 2. Stage 0 のビルド
aarch64-linux-gnu-gcc -static -O2 -pthread \
-o ~/tmp/work/bin/poc_stage0_trigger src/poc_stage0_trigger.c
# 3. デバイスでの実行(adb shell で対象デバイスに接続が必要)
adb shell /data/local/tmp/poc_stage0_trigger
ツールチェーン:aarch64-linux-gnu-gcc -static -O2 -pthread
参考
· gitchw/ghostlock-cve-2026-43499 Huawei Watch 4 Pro、5.4.210(ARM32)
· ccp-p/ghostlock-cve-2026-43499-4.19-k40 Redmi K40、4.19.157(aarch64)
· JoinChang/ghostlock-oneplus OnePlus 複数デバイス、スタックレイアウトの実現可能性
· knowlily/cve-2026-43499-honor Honor の失敗分析
免責事項
セキュリティ研究のみを目的とする。未承認のデバイスには使用しないこと。
| 値 |
|---|
| デバイス | ASUS ROG Phone 5S (ASUS_I005) |
| SoC | Snapdragon 888 (SM8350) |
| Android | 13 |
| カーネル | 5.4.210-qgki-perf-gc89cd02a7dfe arm64 |
| SELinux | Enforcing (u:r🐚s0) |
| CapEff | 0 |