Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-68398 — CVE-2026-68398 Ubuntu PPPoL2TP use-after-free ローカル権限昇格 | Kitploit
ツール/GitHubGitHub/aramosf/cve-2026-68398
特権昇格エクスプロイトバイナリエクスプロイト
GitHubaramosf/cve-2026-68398

CVE-2026-68398

CVE-2026-68398 Ubuntu PPPoL2TP use-after-free ローカル権限昇格

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-68398: Ubuntu PPPoL2TP の use-after-free によるローカル権限昇格

CVE-2026-68398 live exploit

このリポジトリには、CVE-2026-68398 のビルド固有のローカル権限昇格エクスプロイトが含まれています。これは、PPPoL2TP の受信処理と、未接続の PPP チャネルの破棄との間の use-after-free 競合です。QEMU 上で、公式 Ubuntu 22.04 パッケージ linux-image-5.15.0-187-generic(5.15.0-187.197)に対して検証済みです。

最終テストは、補助グループ、ケーパビリティ、sudo アクセスを一切持たない専用 UID 1001 ユーザーとして開始し、初期名前空間の UID 0 を取得します。KASLR、SMEP、SMAP、AppArmor はすべて有効のままです。ゲストは nokaslr、nopti、nosmep、nosmap では起動されません。

警告

このコードは意図的にカーネルヒープの状態を破壊し、特定の 1 つの Ubuntu カーネルビルドに依存します。競合に失敗するとパニックやシステム破損を引き起こす可能性があります。所有する分離された使い捨て VM でのみ実行してください。

脆弱性

pppol2tp_recv() は L2TP UDP 受信パス内の RCU 読み取り側クリティカルセクションで実行され、最終的に ppp_input(&po->chan) を呼び出します。PPPoX ソケットとその組み込みの ppp_channel は RCU セーフですが、ppp_input() が使用する内部の struct channel は別の割り当てです。

PPPIOCGCHAN でバインドされているが、PPP ユニットに接続もブリッジもされていないチャネルでは、クローズパスがその内部オブジェクトを即座に解放していました:

root@kitploit:~
RX:    l2tp_udp_encap_recv -> pppol2tp_recv -> ppp_input(channel)
CLOSE: pppol2tp_release -> pppox_unbind_sock
       -> ppp_unregister_channel -> ppp_release_channel -> kfree(channel)

したがって、受信パスは解放されたチャネルの skb キューとウェイトキューに対して操作を実行できる可能性があります。修正は struct channel に RCU コールバックを追加し、キューのパージと解放を RCU グレース期間が経過するまで延期します。

この脆弱性は、Doyensec の Norbert Szetei によって発見され、上流で修正されました。メインライン修正は ec4215683e47424c9c4762fd3c60f552a3119142 です。

影響を受けるバージョンと修正済みバージョン

Linux CNA レコードは、脆弱な系統が Linux 4.15 から始まると特定しています。ベンダーカーネルは別のバージョン番号で修正を適用する場合があるため、正確なソースまたはパッケージのチェンジログがこの表よりも優先されます。

サポートされている古いベンダー系統にはバックポートが必要です。2026-08-12 時点で、Ubuntu CVE トラッカー は Jammy の linux パッケージを needs-triage とマークしています。修正済みの Ubuntu Jammy パッケージは確認されていません。テストした 5.15.0-187.197 のソースは依然として kfree(pch) を直接呼び出しており、脆弱です。

検証済みターゲット

カーネルは再コンパイルされていません。最小のクラウドイメージには linux-modules-extra-5.15.0-187-generic が含まれていなかったため、l2tp_ppp を提供するためにその公式 Ubuntu パッケージをインストールしました。linux-generic メタパッケージを使用する通常の Jammy インストールでは、対応する modules-extra パッケージにすでに依存しています。エクスプロイトが PPPoL2TP ソケットを作成すると、プロトコルモジュールが自動ロードされます。

要件とデフォルトの Ubuntu 状態

自動 KASLR 検出器は x86 prefetch タイミングサイドチャネルを使用し、KPTI が無効な状態での RDTSCP を必要とします。テストしたホスト CPU は rdtscp、smep、smap を公開しており、Meltdown の影響を受けないため、Ubuntu はブートオーバーライドなしで KPTI を無効のままにします。/proc/cpuinfo が pti フラグを報告する CPU では、検出器は実行を拒否します。これはエクスプロイト固有のハードウェア条件です。基盤となる CVE は到達可能なままですが、このリリースは KPTI が有効なシステムでの KASLR バイパスを主張するものではありません。手動で指定するスライドは、管理された診断のためだけに存在します。

エクスプロイトのプロセス

  1. 4 つのレースワーカーが、バインド済みだが未接続の PPPoL2TP チャネルを繰り返し作成し、他の CPU から有効な L2TPv2/PPP フレームを送信して、データソケットを閉じます。
  2. ユーザーキーペイロードが解放された struct channel を再利用します。まだ実行中の RX パスは、制御されたキーバイトを自身の skb キューおよびウェイトキューとして扱います。
  3. キューのリスト操作により、読み取り可能なキーペイロードを通じてライブの skb ポインタが開示されます。2 番目の制御された unlink は、開示用スクラッチとして core_pattern を使用し、キー割り当てポインタを露出させます。
  4. 224 バイトのキーペイロードが永続的な資格情報キャリアになります。キューの開示を繰り返すと、キャリアのアドレスが明らかになります。
  5. さらに 2 つのポインタソース段階と unlink 段階により、有効な AppArmor cred blob ポインタと unconfined の偽ラベルが偽造された資格情報に配置されます。
  6. 再利用されたウェイトキューエントリは、偽造された cred を指定して override_creds() を呼び出します。UID/GID フィールド、ケーパビリティ、および必要な user、namespace、ucount、group ポインタは、正確な Ubuntu ビルドに一致します。
  7. 一時的に特権を得た実行コンテキストは、/proc/self/exe を /tmp 内の一意なファイルにコピーし、root 所有のモード 4755 に変更して、それらの属性を検証します。
  8. 元の非特権タスクはその SUID コピーを実行し、実 UID/GID 0 を取得して、一時ヘルパーを削除し、/usr/bin/id を実行します。

最後のブリッジが必要なのは、override_creds() がアクティブなカーネルタスクの主観的資格情報を変更するためです。検証済みの SUID コピーをインストールして実行することで、その短命なプリミティブが通常のプロセス資格情報に変換されます。

ビルド

Makefile はエクスプロイトを静的リンクします。タイミングに敏感な prefetch オブジェクトは意図的に -O0 でコンパイルされ、エクスプロイト自体は -O2 を使用します。

root@kitploit:~
make

同等のコマンド:

root@kitploit:~
gcc -O0 -Wall -Wextra -Werror -c -o build/kaslr_prefetch.o kaslr_prefetch.c
gcc -O2 -static -pthread -Wall -Wextra -Werror \
  -o build/CVE-2026-68398 exploit.c build/kaslr_prefetch.o

実行

検証済みの正確なカーネル上の通常のユーザーアカウントから:

root@kitploit:~
id
grep '^Cap' /proc/self/status
./CVE-2026-68398 auto 60

ソースは uname() をチェックし、5.15.0-187-generic 以外のリリースを拒否します。競合は確率的です。失敗またはクラッシュ後は、再試行する前に使い捨てスナップショットをリブートしてください。

成功した実行は次のように終わります:

root@kitploit:~
[KASLR] image_base=0xffffffffb9200000 slide=0x38200000
CVE-2026-68398 Ubuntu local privilege-escalation exploit
uid=1001 euid=1001 slide=0x38200000
...
[9/9] invoking override_creds and installing the SUID transition...
override callback: uid=0 euid=0 gid=0 egid=0
installed root-owned mode 4755 helper: /tmp/.cve-2026-68398-root-948
SUID helper ready; executing it from the original unprivileged task...
SUID transition: uid=0 euid=0 gid=0 egid=0
uid=0(root) gid=0(root) groups=0(root),1001(poc)

その実際の QEMU 実行からの完全な簡潔なトランスクリプトは、docs/example-output.txt にあります。

再現された結果

このチェーンは、通常どおりランダム化された 3 つの新規 Ubuntu ブートで完了しました。自動的に復元されたイメージベースは、0xffffffff90800000、0xffffffffa5a00000、0xffffffffb9200000 でした。最終実行では、上述の専用の非管理 UID 1001 アカウントを使用し、その後一時 SUID ファイルが削除されたことを検証しました。

同じ最終競合は、KASAN を有効にし、同じ 4 vCPU トポロジで、正確な上流修正コミット上でも 60 秒間実行されました。5,969 回のチャネル/キーサイクルを完了し、stage 1: no controlled reclaim を報告し、KASAN レポートやエクスプロイトステージ遷移は発生しませんでした。

公開エクスプロイトの確認

このプライベートリポジトリが作成される前の 2026-08-12 に確認しました。SearchSploit/Exploit-DB はエクスプロイトを返さず、Packet Storm は一致するファイルを返さず、GitHub の正確コード検索は 22 件の CVE/アドバイザリミラーを返し PoC はなく、正確なウェブ検索でも上流修正とメタデータのみが見つかりました。これは特定時点での結果であり、後日別の PoC が現れないことを保証するものではありません。

参照

  • CVE-2026-68398 レコード
  • メインライン修正
  • 元のパッチ提出
  • Ubuntu CVE トラッカーエントリ
  • KASLD。その prefetch コンポーネントが kaslr_prefetch.c の基盤です

クレジットとライセンス

エクスプロイトは A. Ramos <[email protected]>(Twitter: @aramosf)によって書かれました。脆弱性の発見と上流の修正は、Norbert Szetei(Doyensec) に帰属します。

exploit.c は GPL-2.0-only です。kaslr_prefetch.c と kaslr_prefetch.h は MIT ライセンスであり、ソースファイル内に KASLD の帰属表示と完全な許可通知を保持しています。

ツールをダウンロード
カーネル系統最初の修正リリース修正コミット
6.6.y6.6.1484bb84e964ff0
6.12.y6.12.1013ab32218d718
6.18.y6.18.42c9574b8a8ede
7.1.y7.1.606213c85d8c0
メインライン7.2-rc4ec4215683e47
プロパティ値
ディストリビューションUbuntu 22.04.5 LTS (Jammy)
カーネルパッケージlinux-image-5.15.0-187-generic / 5.15.0-187.197
カーネルリリース5.15.0-187-generic #197-Ubuntu
アーキテクチャx86-64
VMQEMU/KVM、-cpu host、4 vCPU、5 GiB RAM
初期 IDuid=1001(poc) gid=1001(poc) groups=1001(poc)
初期ケーパビリティ継承可能・許可・実効・アンビエントがすべてゼロ
最終 ID初期名前空間内での uid=0(root) gid=0(root)
起動変更なし。標準のコマンドライン、KASLR 有効
要件Ubuntu 5.15.0-187 の状態エクスプロイトでの利用
PPPCONFIG_PPP=y組み込み
L2TP / PPPoL2TPCONFIG_L2TP=m, CONFIG_PPPOL2TP=m公式 linux-modules-extra モジュール
User keysCONFIG_KEYS=y解放された kmalloc-256 チャネルを再利用
AppArmorCONFIG_SECURITY_APPARMOR=y有効のまま。偽の cred には有効な unconfined ラベルが含まれる
KASLRCONFIG_RANDOMIZE_BASE=y有効のまま。スライドは実行時に復元される
SMAPCONFIG_X86_SMAP=y有効のまま
User/network namespacesUbuntu で有効だが未使用名前空間のセットアップやケーパビリティ取得は不要
/dev/ppp不要チャネルはバインドされるが、PPP ユニットには決して接続されない