![[レポート]Exynosコプロセッサーと踊る:趣味と実益を兼ねたSamsung攻略 - CODE BLUE 2025 #codeblue_jp #codeblue2025](https://devio2024-media.developers.io/image/upload/f_auto,q_auto,w_3840/v1763382832/user-gen-eyecatch/p6pszynqcpicdb0iauum.jpg)
[レポート]Exynosコプロセッサーと踊る:趣味と実益を兼ねたSamsung攻略 - CODE BLUE 2025 #codeblue_jp #codeblue2025
こんにちは、臼田です。
みなさん、セキュリティ対策してますか?(挨拶
今回はCODE BLUE 2025で行われた以下のセッションのレポートです。
Exynosコプロセッサーと踊る:趣味と実益を兼ねたSamsung攻略
過去1年間で、SamsungのExynos SoC、主にNPUおよびGPUサブシステムに13のセキュリティ脆弱性(CVE)を特定し、報告しました。これらのバグの多くは悪用可能であり、2025年6月までにSamsungによってパッチが適用されました。この講演ではExynos NPUに焦点を当て、繰り返し現れるバグパターンを詳しく説明し、露出した攻撃対象領域を分析し、なぜこれらのコプロセッサが依然として魅力的なターゲットであるかを探ります。
次に、エクスプロイト側に深く掘り下げ、Galaxy A35、A55、S24+などのデバイスでこれらの脆弱性の一部を悪用して任意の読み書き(AARW)を実現する方法を実演します。さらに、ハイパーバイザーをバイパスして完全なカーネルコード実行にエスカレートするためにプリミティブを連結する方法を示します。
このセッションでは、Samsungの製品セキュリティチームとの協力経験も振り返り、報奨金、技術的なフィードバック、タイムラインなど、ISVPを通じて作業したことについて率直な見解を述べます。
Speakers
Bing-Jhong Jheng ビン-ジョン・ジェン
Muhammad Ramdhan ムハンマド・ラムダン
Pan ZhengPeng パン ゼンペン
レポート
- SamsungのExynosについて話す
- 背景
- Android Kernelのmitigationsには様々な機能がある
- そしてExploitsにはAndroid全体からチップセット、ベンダー、固有のモデルの粒度がある
- 今回はベンダーのSamsung NPUについての話
- Samsung Exynosのアタックサーフェイス
- なぜExynosを選んだのか?
- 独自のSoC
- 2022にMali GPUに置き換わる
- 過去のExploitはそれほど多くなかった
- 1ヶ月の調査で13のバグを見つけた
- Exynos Kernel Driver
- vertexが主なアタックサーフェイス
- バグ分析
- CVE-2025-23095(Double free)
- CVE-2025-23097(OOB write)
- npuセッションが破損する
- CVE-2025-23098(Race double free)
- bufがクリアされない
- 異なるlockを使っている
- 同じdma_bufに2回配置する
- CVE-2025-23099(OOB Access)
- CVE-2025-23100(NULL Pointer DoS)
- fd_install後別のファイルに置き換えることができる
- 以前作成保存されたfdが再利用される
- Nullのチェックが無い
- このCVEには2つの問題がある
- ファーム自体の問題
- ランダムテストで発見された
- CVE-2025-23101(Arb Free)
- ユーザー空間からカーネルにコピーしている
- 2つのアイテムを処理するが3つのアイテムが有る
- 最後にすべて解放されfree primitiveを獲得
- CVE-2025-23102(Double free)
- ポイントをクリアしないで解放される
- 2回呼び出してダブルフリーできる
- SamsungのファームにはDouble Freeの問題がたくさんある
- CVE-2025-23103(OOB Access)
- CVE-2025-23107(OOB Access)
- queue_listの大きさを確認していない
- 任意のreadができる
- サマリ
- Exynosは様々なモデルがありバグは特定のモデルのみのものもある
- 共通するものもある
- ほとんどのバグが悪用可能
- NPU exploits
- どうmitigationをbypassするか
- CVE-2025-23101を使う
- ヒープランダマイズなどがあるがどうするか
- Androidなら繰り返しリブートしておそらく正しいアドレスを確認できる
- socketバッファをfree
- socketバッファをsprayしてfree
- pipe bufferからread
- selinuxをdisableする
- CVE-2025-23099
- NPUがどうinput queueとoutput queueを使うか
- NPU_MAX_QUEUEでサイズ設定
- allocateを行う
- queueに一定の数のバッファをallocate
- すでにallocateされている場合return 0
- npu_queue_mappingでアサイン
- エクスプロイトに使えるバッファがあるか
- カウント数が実際のオブジェクト数を上回っているときに任意の読み取りができる
- Heap OOB 4 byteを書き込み
- victim_containersに隣接するバッファを使う
- 最初のコンテナから2番目のコンテナをポイント
- 合計8byteの制御ができる
- まとめ
- 新たなSoCとドライバには常にバグがつきまとう
- すべてのモデルで共通化する必要がある
感想
華麗なchainでエクスプロイトしていますね。質疑ではmitigationにはMTEが必要との回答でした。








