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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-38502-Linux-LPE — CVE-2025-38502の研究リポジトリ。LinuxカーネルBPF cgroupローカルストレージにおけるテールコール経由の境界外アクセスにより、ローカル権限昇格が可能となる。 | Kitploit
ツール/GitHubGitHub/abraxas/cve-2025-38502-linux-lpe
特権昇格メモリフォレンジック脆弱性分析エクスプロイトリバースエンジニアリング論文と研究学習と教育バイナリエクスプロイト
GitHubabraxas/cve-2025-38502-linux-lpe

CVE-2025-38502-Linux-LPE

CVE-2025-38502の研究リポジトリ。LinuxカーネルBPF cgroupローカルストレージにおけるテールコール経由の境界外アクセスにより、ローカル権限昇格が可能となる。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

ABRAXAS LABS — CVE-2025-38502

Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null

CVE-2025-38502

Linux カーネル BPF cgroup ローカルストレージにおけるテールコール経由の境界外アクセス

CVECVE-2025-38502
CWECWE-125 — 境界外読み取り
ベンダーLinux カーネル
コンポーネントkernel/bpf/core.c, include/linux/bpf.h (cgroup ローカルストレージ + テールコール)
影響ローカルカーネルメモリ破壊。未パッチのカーネルでは権限昇格が想定範囲内
攻撃ベクトルローカル (AV:L)
権限低 (PR:L) — CGROUP_SKB 型の BPF プログラム (または同等の cgroup 接続プログラム) をロードできるプロセス
ユーザー操作不要
CVSS 3.1 (kernel.org CNA)7.8 HIGH — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS 3.1 (NVD)7.1 HIGH — CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
公開日2025年8月16日
アップストリーム修正6.17-rc1 の abad3d0。6.16.1、6.12.46、6.6.105、6.1.151、5.15.192 にバックポート済み

研究・教育目的のみ。 このリポジトリをホストする当事者と対象システムの所有者の両方から明示的な書面による許可を得ていない限り、このリポジトリ内の資料をいかなるホストに対しても実行、デプロイ、または使用しないでください。実環境で発見されました。

ソースファイル名 CVE-2025-3850-Linux-LPE-Abaraxas-Labs.c は識別子を切り詰めています。公開されたレコードは CVE-2025-38502 です。Linux CVE CVE-2025-3850 は存在しません。


目次

  • 概要
  • 影響
  • 根本原因
  • 影響を受けるカーネルバージョン
  • ディストリビューションの状況
  • 前提条件
  • 修正
  • 稼働中システムの確認
  • 緩和策
  • リポジトリ構成
  • 参考文献
  • 連絡先
  • 免責事項

概要

Lonial は、cgroup BPF ローカルストレージがテールコールをまたいで境界外アクセスされる可能性があることを報告しました。

eBPF 検証器は各プログラムを個別に型チェックします。実行時、bpf_get_local_storage() は現在実行中のプログラムのマップを参照しません。cgroup ストレージポインタを current->bpf_ctx → bpf_cg_run_ctx → prog_item->cgroup_storage[] から読み取ります。このスロットは、テールコールされた先のプログラムではなく、元々アタッチされたプログラムから設定されます。

プログラム A (小さい BPF_MAP_TYPE_CGROUP_STORAGE の値サイズ) がプログラム B (大きい値サイズ) をテールコールする場合、B の bpf_get_local_storage() は依然として A のより小さいバッファを返します。検証器が B のマップに対して許可したアクセスは、A のアロケーションの終端を越えてしまいます。

この欠陥は Linux 5.9 で 7d9c342 (bpf: Make cgroup storages shared between programs on the same cgroup) によって導入されました。bpf_map_owner に storage_cookie[] を追加することで修正され、テールコールの組み合わせは、呼び出し先が呼び出し元と同じ cgroup ストレージマップを使用するか、まったく使用しない場合にのみ受け入れられるようになりました。


影響

これはローカルカーネルヒープの境界外アクセスです。深刻度のスコアリングは、このプリミティブを「読み取り専用 DoS」と見なすか完全なメモリ破壊と見なすかでベンダー間で見解が分かれるため、異なります。

情報源スコア完全性備考
kernel.org CNA / cve.org7.8 HIGHHighC:H/I:H/A:H — 完全なローカル影響として扱う
NVD7.1 HIGHNoneC:H/I:N/A:H — 機密性 + 可用性
UbuntuMedium (7.1)—USN-7909
Red Hat4.0 LOWNoneC:N/I:N/A:L — 限定的な可用性として評価
Amazon Linux4.0 MediumNoneRed Hat と同じベクトル
SUSE6.1 ModerateNone一部の SLE 15 ストリームは WONTFIX とマーク

実際にはこれが意味すること:

  • 機密性。 隣接する kmalloc オブジェクトの OOB 読み取りにより、カーネルポインタ (KASLR スライド)、ヒープクッキー、および隣接構造体の内容が漏洩する可能性があります。
  • 完全性。 同じ不一致は、呼び出し元のより小さいバッファに対する、呼び出し先のマップを基準としたサイズ付き書き込みです。隣接するヒープオブジェクト (例えば同じ slab/order にスプレーされた struct bpf_array) が破壊される可能性があります。
  • 可用性。 誤ったターゲットへの書き込みは、単純なカーネル oops / panic を引き起こします。
  • 権限。 BPF cgroup プログラムをロードできる未パッチのカーネルでは、このクラスのヒープ OOB はローカル権限昇格プリミティブとして使用されてきました (map->ops の上書き、ヘルパーのハイジャック、commit_creds / 名前空間切り替え)。これがこのツリーがこの問題を LPE とラベル付けする理由です。Red Hat のより低いスコアは、バグの不在ではなく、製品固有の評価を反映しています。

このバグはネットワークに面したサービスを必要としません。ローカルです。TTY、setuid ヘルパー、またはユーザー操作を必要としません。


根本原因

検証器 vs 実行時

2 つの cgroup BPF プログラム、それぞれが独自の BPF_MAP_TYPE_CGROUP_STORAGE (共有フレーバー、BPF_CGROUP_STORAGE_SHARED) を持ちます:

プログラム役割ストレージ値サイズ
Aアタッチ済み / テールコール呼び出し元小さい (例: 特定の kmalloc order に収まる)
Bテールコール先大きい (検証器はこのサイズまでのアクセスを許可)

検証器は A を A のマップに対して、B を B のマップに対してチェックします。両方とも合格します。

実行時、ヘルパーは以下を実行します:

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);

prog_item は、bpf_tail_call 後に現在実行中のプログラムではなく、cgroup 実行を開始したプログラムの配列エントリです。したがって B は A のストレージオブジェクトを操作します。

サイズが重要である理由

bpf_cgroup_storage_alloc() は、マップの value_size からバッキングバッファのサイズを決定します。A のバッファは B の検証済みアクセスに対して小さすぎます。結果は、制御転送をまたいだマップ同一性の古典的な型混同です。これは、他の BPF の「ヘルパーが検証器とは異なるマップを見る」問題と同じファミリーのバグです。

cgroup 上の共有ストレージ

コミット 7d9c342 は、cgroup ストレージを同じ cgroup にアタッチされたプログラム間で共有するようにしました。この共有により、実行コンテキストのスロットがプログラムごとのルックアップではなく単一のポインタになり、5.9 より前のカーネルが影響を受けない理由となっています。

隣接オブジェクト

BPF_PROG_TYPE_CGROUP_SKB プログラムに対する BPF_PROG_TEST_RUN は、テスト期間中 cgroup ストレージを割り当てます。このアロケーションは、同じサイズクラスで最近解放された他のものの隣のカーネルヒープ上に位置します — 例えば、同じ kmalloc order に収まるように value_size が選ばれた struct bpf_array マップを含みます。したがって、ストレージバッファからの OOB は、隣接する配列マップの bpf_map フィールド (ops、RCU リスト、value[]) に到達する可能性があります。

このヒープレイアウトの詳細が、「単なる OOB 読み取り」のアドバイザリと LPE の解説が同じ CVE を説明できる理由です。


影響を受けるカーネルバージョン

導入: Linux 5.9 (7d9c3427894fe70d1347b4820476bf37736d2ff0)
影響なし: 5.9 より前のすべてのカーネル

シリーズ影響あり最初の修正
5.9 – 5.155.9 から 5.15.191 まで5.15.192 (c1c74584…)
5.16 – 6.15.16 から 6.1.150 まで6.1.151 (66da7cee…)
6.2 – 6.66.2 から 6.6.104 まで6.6.105 (7acfa07c…)
6.7 – 6.126.7 から 6.12.45 まで6.12.46 (41688d1f…)
6.13 – 6.166.13 から 6.16.0 まで6.16.1 (19341d5c…)
mainline修正が入るまで6.17-rc1 (abad3d0b…)

ワンライナー:

/* CVE-2025-38502: affected 5.9–5.15.191, 5.16–6.1.150, 6.2–6.6.104, 6.7–6.12.45, 6.13–6.16.0; fixed in 5.15.192, 6.1.151, 6.6.105, 6.12.46, 6.16.1, 6.17-rc1 */

一部の stable では依然未修正: Debian のカーネルトラッカーは 5.10 アップストリーム stable / bullseye 5.10 を needed と記載していました。すべての 5.10.y がパッチ済みであると仮定しないでください。

ディストロの ABI 番号は当てになりません。 Ubuntu 5.15.0-163 は、5.15.0 がアップストリーム 5.15.192 より古く見えても、パッチ済みの 5.15 です。上の表と uname -r を比較するのではなく、パッケージの changelog / USN / DSA / ALAS / RHSA を比較してください。


ディストリビューションの状況

上記の範囲のカーネルを出荷したディストリビューションは、abad3d0 (または対応する stable コミット) をバックポートするまで対象でした。これはディストロ固有のパッチではなく、汎用 BPF コードです。

パッチが当たるまで通常影響を受ける

ディストロ範囲内だったリリース / カーネル
Ubuntu22.04 LTS (5.15)、24.04 LTS (6.8)、25.04 (EOL でも needed)。20.04 HWE 5.15。
Debian11 bullseye (5.10)、12 bookworm (6.1)、13 trixie (6.12)
RHEL 9 / 10、Rocky、Alma、FedoraRHEL 9 ≈ 5.14、RHEL 10 ≈ 6.12、Fedora ローリング 5.9–6.16
SUSE / openSUSESLE Micro 5.3/5.4、一部の SLE 15 ストリームは WONTFIX
Amazon Linux 2023デフォルトカーネルおよび kernel6.12
Amazon Linux 2 extras5.10 extra (修正予定なし) および 5.15 extra
Arch、Gentoo、Tumbleweed5.9 から 6.16.1 / 6.17-rc1 修正までのローリングカーネル

影響なし (5.9 より古い GA カーネル)

  • Ubuntu 20.04 GA (5.4)、18.04、16.04
  • RHEL 8 デフォルト (4.18)
  • Amazon Linux 1、Amazon Linux 2 core / 5.4 extra

既知のパッチ済みパッケージバージョン (例)

ディストロ修正済みパッケージ (目安)アドバイザリ
Ubuntu 22.04linux 5.15.0-163.173USN-7909
Ubuntu 24.04linux 6.8.0-106.106同上
Debian 12linux 6.1.153-1DSA-6009-1
Debian 13linux 6.12.48-1DSA-6008-1
Debian 11 (6.1 バックポート)linux-6.1 6.1.153-1~deb11u1DLA-4328-1
Amazon Linux 2023kernel / kernel6.12、2025-09-29ALAS2023-2025-1210 / 1208
Amazon Linux 2 5.15 extra2025-09-29ALAS2KERNEL-5.15-2025-091

Ubuntu 26.04 / 25.10 は影響なしと記載されています (修正後にブランチしたため)。Ubuntu 25.04 は EOL に達しても needed のままです。


前提条件

ツールをダウンロード