CVE-2025-38502
bpf: cgroupローカルストレージにおけるoobアクセスを修正
- 公開済み
- 2025/08/16
- 更新済み
- 2026/08/05
- CNA の割り当て
- Linux
- 観察された証拠
- 2026/09/11
プライマリ CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H低 · 今後 30 日間
- パーセンタイル
- 6.1%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Linux カーネルにおいて、以下の脆弱性が修正されました: bpf: cgroup ローカルストレージにおける oob アクセスを修正。Lonial は、cgroup ローカルストレージにおける out-of-bounds アクセスが tail call を介して細工できることを報告しました。それぞれ異なる value size の cgroup ローカルストレージを利用する 2 つのプログラムがあり、一方のプログラムがもう一方へ tail call を行う場合を考えます。verifier は個々のプログラムをそれぞれ問題なく検証します。しかし、ランタイムコンテキストでは bpf_cg_run_ctx が bpf_prog_array_item を保持しており、これには BPF プログラムとそのプログラムが使用する cgroup ローカルストレージの種類が含まれます。bpf_get_local_storage() などのヘルパーはこれをランタイムコンテキストから取得します: ctx = container_of(current->bpf_ctx, struct bpf_cg_run_ctx, run_ctx); storage = ctx->prog_item->cgroup_storage[stype]; if (stype == BPF_CGROUP_STORAGE_SHARED) ptr = &READ_ONCE(storage->buf)->data[0]; else ptr = this_cpu_ptr(storage->percpu_buf); 元々アタッチされたプログラムから呼び出された 2 番目のプログラムにとって、これは bpf_get_local_storage() が自身の map ではなく前者のプログラムの map を取得することを意味します。サイズが一致しない場合、意図しない out-of-bounds アクセスが発生する可能性があります。この問題を修正するには、bpf_map_owner を拡張して storage_cookie[] の配列を持たせ、i) 2 番目のプログラムが bpf_get_local_storage() を使用していた場合は元のプログラムの正確な map と一致させるか、ii) 2 番目のプログラムが cgroup ローカルストレージ map を一切使用していなかった場合は tail call の組み合わせを許可する必要があります。
ソース
1CVE-2025-38502の研究リポジトリ。LinuxカーネルBPF cgroupローカルストレージにおけるテールコール経由の境界外アクセスにより、ローカル権限昇格が可能となる。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。