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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-98180 — CVE-2026-98180 の概念実証および KASAN で確認済みの KUnit 再現プログラムです。これは drm/msm における use-after-free であり、スケジューラを含むリングオブジェクトと VM オブジェクトが、非特権の SYNC_IOC_FILE_INFO 経由で到達可能になります。 | Kitploit
ツール/GitHubGitHub/malhyuk/cve-2026-98180
メモリフォレンジック脆弱性分析エクスプロイトファジング論文と研究学習と教育
GitHubmalhyuk/cve-2026-98180

CVE-2026-98180

CVE-2026-98180 の概念実証および KASAN で確認済みの KUnit 再現プログラムです。これは drm/msm における use-after-free であり、スケジューラを含むリングオブジェクトと VM オブジェクトが、非特権の SYNC_IOC_FILE_INFO 経由で到達可能になります。

リポジトリを見る
18日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-98180 — drm/msm: スケジューラを含むリング/VM オブジェクトの use-after-free

ユーザー空間にエクスポートされた drm_sched_fence は、それを生成した drm_gpu_scheduler への生ポインタを保持し続けます。drm/msm では、そのスケジューラは struct msm_ringbuffer と struct msm_gem_vm に埋め込まれており、どちらも単純な kfree() で解放されていました。そのため、ユーザー空間が保持する完了済みフェンスはスケジューラより長く生存し、その後の SYNC_IOC_FILE_INFO — 非特権の ioctl — によって drm_sched_fence_get_timeline_name() が解放済みスラブメモリを参照します。

BUG: KASAN: slab-use-after-free in drm_sched_fence_get_timeline_name
Read of size 8

根本原因

drm_sched_fence_get_timeline_name() は return fence->sched->name; です。

スケジューラのフェンス ops は .release コールバックを保持しているため、フェンスはシグナル時に ops からデタッチされません。sync_file や drm_syncobj 経由でエクスポートされたシグナル済みフェンスは、リングまたは VM が解放された後も埋め込みスケジューラを指し続けます。dma-fence のライフタイム契約では、エクスポーターはシグナル済みフェンスを支えるデータを RCU グレースピリオドの間生存させなければなりませんが、drm/msm はそうしていませんでした。

修正01c8d1f385f7 — drm/msm: RCU-free the scheduler-containing ring and VM objects
導入元1d8a5ca436ee (drm/msm: Conversion to drm scheduler)、92395af63a99 (drm/msm: Add VM_BIND submitqueue)
バックポート6.18-stable、7.2-stable (Greg Kroah-Hartman、2026-09-22)
到達可能性非特権 — フェンス fd に対する SYNC_IOC_FILE_INFO
影響解放済みスラブの UAF 読み取り (情報漏洩 / 解放済みオブジェクトの name ポインタの任意読み取り)

この修正は、両方の包含オブジェクトについて kfree() を kfree_rcu() に置き換えます:

-	kfree(vm);
+	kfree_rcu(vm, rcu);
...
-	kfree(ring);
+	kfree_rcu(ring, rcu);

再現

このバグは汎用的な drm/sched のライフタイム処理にあるため、KUnit のモックスケジューラを使用して Adreno ハードウェアなしで再現できます。それが evidence/kasan-report.txt にある証拠です。

cd poc && ./run-repro.sh            # applies 0001-…patch, builds KUnit + KASAN, runs
  • poc/0001-drm-sched-kunit-uaf-repro.patch — ハードウェア非依存の KUnit 再現プログラム (KASAN で確認済み)
  • poc/poc_userspace_drm_sched_uaf.c — 影響を受けるドライバ上での非特権ユーザー空間 ioctl シーケンス
  • poc/kunitconfig、poc/run-repro.sh — ビルド/実行ハーネス
  • evidence/kasan-report.txt — KASAN の slab-use-after-free レポート

poc_userspace_drm_sched_uaf.c は、そのデバイスが利用可能だったため AMD XDNA を実例として書かれていますが、同一の形が msm (MSM_SUBMITQUEUE / VM_BIND は sync_file_create() + fd_install() を介して完了済みフェンスをエクスポートします) および nouveau にも当てはまります。

関連

同じ dma-fence ライフタイムのクラスはコアでも修正されています: 3ed11c671ff7 — dma-buf/dma-fence: fix checking signaling bit for timeline and driver name v3 (Christian König による執筆、このリポジトリの作者による報告とテスト)。

クレジット

発見と修正: JongHyuk Kim(MalHyuk) — [email protected]。 パッチの署名: Rob Clark および Greg Kroah-Hartman。 Patchwork: https://patchwork.freedesktop.org/patch/750234/

ライセンス

再現コードは、その派生元であるカーネルソースに合わせて GPL-2.0 です。

ツールをダウンロード