概要
- CVE-2024-50264 はLinuxカーネルのAF_VSOCKに存在する 極めて難解な特権昇格脆弱性
- Race condition と UAF(Use-After-Free) が悪用の中心で、再現・利用が非常に困難
- 脆弱性の発見から Pwnie Award 2025 受賞までの経緯と PoC開発の試行錯誤
- kernel-hack-drill プロジェクトの役割と、従来手法との違い
- 脆弱性の技術的詳細、制約、典型的な攻撃手法、失敗例までを解説
CVE-2024-50264 Linuxカーネル特権昇格バグの分析とPoC開発記
- CVE-2024-50264 は、LinuxカーネルAF_VSOCKサブシステムに存在する race conditionによるUAF脆弱性
- 脆弱性は2016年8月のコミット(06a8fc78367d、Linux v4.8)で導入
- connect()システムコール 中にPOSIXシグナルが割り込むことで、 virtio_vsock_sockオブジェクト が解放後に利用される
- 非特権ユーザー でもユーザ名前空間なしでトリガー可能、危険度が高い
- メモリ破壊 はカーネルワーカー(kworker)によるUAF書き込みで発生
脆弱性発見から公開まで
- 2021年にAF_VSOCKのバグを発見し、 CVE-2021-26708 として公開
- 2024年4月、カスタムsyzkallerで再度AF_VSOCKをファジングし新たなクラッシュを発見
- KASAN無効化 により即時null-ptr-derefとなり、当初は重要性を見逃す
- 2024年秋、再調査で有望な結果を得るも、 Hyunwoo Kim (@v4bel)とWongi Lee (@qwerty) による先行公開(CVE-2024-50264)に衝突
- 彼らのパッチで自作PoCが再びnull-ptr-deref化、バグ衝突の苦い経験
脆弱性の技術的詳細
- virtio_vsock_sock (80バイト)はkmalloc-96スラブキャッシュから割り当て
- UAF書き込みはkworkerがkfree()直後に実行、 タイミングが極めてシビア
- connect()をPOSIXシグナルで割り込む必要
- SIGKILLはプロセスが死ぬため不適
- signal 33(NPTL内部用) をtimer_createで発火、プロセスを殺さずにraceを誘発
- UAF発生時、 virtio_vsock_sock.peer_buf_alloc/peer_fwd_cnt にユーザ空間から値を書き込める
- tx_lockがゼロでないとspin_lock_bh()でハング、実用的なUAF原語の構築が困難
攻撃・利用上の制約
- クライアント/サーバー両virtio_vsock_sockが同一スラブキャッシュから割り当て、 クロスキャッシュ攻撃が難しい
- UAF発生後すぐにkworkerがnull-ptr-deref、 通常のヒープスプレーが効かない
- Ubuntu Server 24.04は CONFIG_SLAB_BUCKETS=y、CONFIG_RANDOM_KMALLOC_CACHES=y でヒープスプレー耐性強化
- cred構造体(被害オブジェクト候補)は割り当てサイズが異なり、 UAFオフセットの制約 あり
- credをUAFしてもtx_lock位置が非ゼロとなりカーネルハング、 攻撃に不向き
先行研究の攻撃手法
- @v4bel & @qwertyの手法は極めて複雑
- BPF JITスプレー で物理メモリを占拠
- SLUBStickテクニック でスラブ配置を制御
- Dirty Pagetableテクニック でページテーブルエントリを書き換え
- BPFコードに特権昇格ペイロードを挿入し、ソケット経由で実行
kernel-hack-drillによる新アプローチ
- PoC exploitを単純化 するため、UAF書き込み先の被害オブジェクトを再検討
- ヒープスプレーを諦め、 クロスキャッシュ攻撃 に挑戦
- cred構造体を被害対象に選ぶが、 実用的なexploit primitive構築に失敗
- これらの試行錯誤を通じて、 CVE-2024-50264の難易度とPwnie Award受賞理由 を痛感
脆弱性攻撃の障壁とPoC開発の教訓
- 再現性の低さ、 タイミング依存性、 カーネル保護機構 の多重障壁
- 先行研究の複雑さに対し、 新たな攻撃経路の模索 が必要
- kernel-hack-drill の活用で、独自アプローチの検証が可能
- 失敗事例から学ぶ、 カーネルエクスプロイト開発の現実的困難
- 今後の攻撃手法開発 やカーネル防御強化への知見提供
まとめ
- CVE-2024-50264 は、現代カーネル脆弱性の中でも 最難関級のエクスプロイト対象
- 再現難易度・攻撃制約・保護機構 の三重苦
- kernel-hack-drill のようなツールによる新規アプローチの重要性
- 失敗事例・先行研究の複雑さ から学ぶ、現代カーネルセキュリティ研究の最前線