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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-68121 — CVE-2026-68121の調査リポジトリ。LinuxカーネルのPPPoEにおけるpppoe_sendmsg()のuse-after-freeで、ローカル権限昇格を可能にする。PoC、根本原因分析、ラボ環境構築を含む。 | Kitploit
ツール/GitHubGitHub/0xblackash/cve-2026-68121
特権昇格メモリフォレンジック脆弱性分析エクスプロイトリバースエンジニアリング論文と研究学習と教育バイナリエクスプロイトラボと実践
GitHub0xblackash/cve-2026-68121

CVE-2026-68121

CVE-2026-68121の調査リポジトリ。LinuxカーネルのPPPoEにおけるpppoe_sendmsg()のuse-after-freeで、ローカル権限昇格を可能にする。PoC、根本原因分析、ラボ環境構築を含む。

7時間50分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

⚡ CVE-2026-68121 - PPPoEject

LinuxカーネルPPPoE Use-After-Free → ローカル特権昇格

PPPoE送信パスにおけるLinuxカーネルのメモリ破壊脆弱性。 デバイスヘッダーコールバックがskbヘッドを再割り当てした後に、 sk_buffヘッダーへの古いポインタが残ることによって引き起こされます。


⚠️ 免責事項

このリポジトリは、許可されたセキュリティ研究、カーネル脆弱性分析、 CTF環境、および防御的テストのみを目的としています。

明示的な許可なく、システムに対して概念実証コードを実行しないでください。


📌 脆弱性の概要

CVEレコードは、この脆弱性を、dev_hard_header()がskbヘッドを再割り当てした際に無効になる可能性がある古いPPPoEヘッダーポインタとして特定しています。


🧬 脆弱性の説明

脆弱性は以下に存在します:

root@kitploit:~
drivers/net/ppp/pppoe.c

以下の中の:

root@kitploit:~
pppoe_sendmsg()

脆弱なシーケンスは概念的には以下の通りです:

root@kitploit:~
pppoe_sendmsg()
      │
      ▼
PPPoEヘッダーポインタを保存
      │
      ▼
dev_hard_header()
      │
      ▼
skbヘッドが再割り当てされる可能性
      │
      ▼
古いポインタが古くなる
      │
      ▼
PPPoEが古いポインタを通じて書き込む
      │
      ▼
Use-After-Free
      │
      ▼
カーネルメモリ破壊

Linuxネットワーキングコードでは、デバイスヘッダーコールバックがsk_buffヘッドを再割り当てすることが許可されています。したがって、古いヘッドへのポインタは、dev_hard_header()が戻った後に安全に再利用することはできません。


🔬 根本原因

核心的な問題はライフタイム違反です。

pppoe_sendmsg()は、以下を呼び出す前にPPPoEヘッダーへのポインタを取得します:

root@kitploit:~
dev_hard_header()

しかし、そのコールバックはskbヘッドを移動させる可能性があります。

概念的には:

root@kitploit:~
コールバック前:

skb
┌──────────────────────────────┐
│ Ethernet │ PPPoE │ Payload   │
└──────────┴───────┴───────────┘
           ▲
           │
       古いポインタ


skb拡張後:

古いskbヘッド ──X──► 解放済み

新しいskbヘッド
┌────────────────────────────────────┐
│ Ethernet │ PPPoE │ Payload         │
└──────────┴───────┴─────────────────┘
           ▲
           │
      有効な場所

古いポインタは依然として解放された割り当てを参照しています。

PPPoEがその後そのポインタを通じてヘッダーを書き込むと、カーネルはuse-after-free書き込みを実行します。


🧠 トリガー条件

文書化されたトリガーは、copy_from_user()とteamデバイスのヘッダー操作の変更をめぐる競合を伴います。

記述されているシーケンスの1つは以下の通りです:

root@kitploit:~
PPPoE sendmsg()
      │
      ▼
copy_from_user()がブロック
      │
      │
      ├───────────────┐
      │               │
      ▼               ▼
Teamデバイスが変更   最初の非Ethernet
ヘッダー操作         ポートが追加される
                      │
                      ▼
               委譲されたGREコールバック
                      │
                      ▼
               skbヘッド拡張
      │               │
      └───────────────┘
              │
              ▼
       古いPPPoEポインタ
              │
              ▼
       use-after-free書き込み

CVEレコードは、これが空のteamデバイスに最初の非Ethernetポートが追加され、委譲されたGREヘッダーコールバックがskbヘッドを拡張した場合に発生する可能性があると述べています。


💥 セキュリティへの影響

この脆弱性は以下を引き起こす可能性があります:

  • カーネルヒープのuse-after-free
  • カーネルメモリ破壊
  • カーネルクラッシュ / サービス拒否
  • 潜在的なカーネルメモリ漏洩
  • 潜在的な任意のカーネルメモリ改ざん
  • 潜在的なカーネルコード実行
  • ローカル特権昇格

CVEの公開されたCVSSベクトルは以下の通りです:

root@kitploit:~
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

ベーススコアは7.8 Highです。


🔎 技術的攻撃対象領域

関連するコンポーネントは以下の通りです:

root@kitploit:~
PF_PPPOX / PPPoEソケット
          │
          ▼
    pppoe_sendmsg()
          │
          ▼
     sk_buff (skb)
          │
          ▼
  dev_hard_header()
          │
          ▼
 ネットワークデバイスヘッダーコールバック
          │
          ▼
 潜在的なskbヘッド拡張
          │
          ▼
 PPPoEの古いヘッダーポインタ
          │
          ▼
     UAF書き込み

したがって、脆弱なコードは単なる汎用的なPPPoEパケットパーサーではありません。重要な条件は、PPPoEソケット送信と動的なskbヘッド再割り当ての間の相互作用です。


🩹 アップストリーム修正

アップストリームの修正のタイトルは以下の通りです:

root@kitploit:~
pppoe: reload header pointer after dev_hard_header()

この修正は、デバイスヘッダー作成後に、skbのネットワークヘッダーオフセットを通じてPPPoEヘッダーを再読み込みします。

重要な特性は以下の通りです:

root@kitploit:~
修正前:

ヘッダーポインタ
      │
      ▼
dev_hard_header()
      │
      ▼
skbが移動
      │
      ▼
ポインタ = 古い ❌


修正後:

dev_hard_header()
      │
      ▼
skbが移動する可能性
      │
      ▼
skbオフセットを使用してヘッダーを再読み込み
      │
      ▼
ポインタ = 有効 ✅

pskb_expand_head()は、skbヘッドが再配置されたときに関連するskbオフセットを更新するため、再割り当て後もオフセットベースの検索は安全です。


📊 脆弱版 vs 修正版


🧪 研究環境

制御されたラボは以下のように構成できます:

root@kitploit:~
┌───────────────────────────────────────────────┐
│                 Linux VM                     │
│                                               │
│       ┌───────────────┐                       │
│       │ PPPoE Socket  │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │ pppoe_sendmsg │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     Team      │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     GRE       │                       │
│       └───────────────┘                       │
│                                               │
└───────────────────────────────────────────────┘

便利なカーネルデバッグツール:

root@kitploit:~
gdb
pwndbg
gef
crash
objdump
readelf
pahole

カーネルメッセージを監視:

root@kitploit:~
sudo dmesg -w

PPPoEサポートを確認:

root@kitploit:~
lsmod | grep pppoe

利用可能なPPPモジュールを確認:

root@kitploit:~
find /lib/modules/$(uname -r) -iname '*pppoe*'

🔎 カーネルの検証

現在実行中のカーネルを確認:

root@kitploit:~
uname -r

PPPoE関連の設定を確認:

root@kitploit:~
grep -E 'CONFIG_PPP|CONFIG_PPPOE' \
/boot/config-$(uname -r)

典型的な関連オプションは以下の通りです:

root@kitploit:~
CONFIG_PPP
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
CONFIG_PPPOE

🧪 再現ワークフロー

制御されたカーネル研究のために:

root@kitploit:~
01. 脆弱なカーネルをビルド
          ↓
02. 分離されたVMを起動
          ↓
03. PPPoEサポートを有効化
          ↓
04. 制御されたネットワークトポロジを作成
          ↓
05. team/GREの相互作用を設定
          ↓
06. PPPoE sendmsg()を実行
          ↓
07. skbのライフタイムを監視
          ↓
08. カーネル診断情報をキャプチャ
          ↓
09. アップストリームパッチを適用
          ↓
10. 繰り返して比較

目的は、メモリライフタイム違反を安全に再現し、脆弱版と修正版の動作を比較することです。


📂 リポジトリ構造

root@kitploit:~
CVE-2026-68121-PPPoEject/
│
├── README.md
│
├── exploit/
│   ├── poc.c
│   └── Makefile
│
├── analysis/
│   ├── root-cause.md
│   ├── pppoe-sendmsg.md
│   ├── skb-lifetime.md
│   └── patch-analysis.md
│
├── kernel/
│   ├── vulnerable/
│   └── patched/
│
├── lab/
│   ├── setup.sh
│   ├── cleanup.sh
│   └── topology.md
│
├── screenshots/
│
├── docs/
│   └── research-notes.md
│
└── LICENSE

🛡️ 緩和策

推奨される緩和策は、アップストリームの修正または適切なディストリビューションのバックポートを含むLinuxカーネルに更新することです。

Debian/Kaliの場合:

root@kitploit:~
sudo apt update
sudo apt full-upgrade

その後再起動:

root@kitploit:~
sudo reboot

実行中のカーネルを確認:

root@kitploit:~
uname -r

ディストリビューションのバックポートは異なるバージョン番号を使用する可能性があるため、管理者はインストールされたパッケージをディストリビューションのセキュリティアドバイザリと照合して確認する必要があります。Debianは現在、Bookworm用の6.1.187-1およびTrixie用の6.12.101-1を含む修正バージョンをリストしています。


📦 アップストリーム修正の参照

Linuxのstableツリーには、複数のメンテナンスブランチにわたって修正が含まれています。CVEレコードは、対応するstableコミットをリストし、影響を受けるソースファイルを以下のように特定しています:

root@kitploit:~
drivers/net/ppp/pppoe.c

脆弱な履歴はLinuxカーネルPPPoE実装から始まり、修正コミットシリーズはCVEデータ内の7a56e7c9b08e08fd55a1bcada24cf4fe3782b722で表されるアップストリーム修正で終了します。


🧩 セキュリティの教訓

01 — ポインタのライフタイムは重要

skbへのポインタは、skbヘッドを再割り当てする可能性のあるコールバックの後では有効であると仮定できません。

02 — コールバックは仮定を無効にすることがある

ネットワーキングコールバックは、基盤となるメモリレイアウトを変更する可能性があります。

03 — メモリが移動する可能性がある場合はオフセットを使用する

このパッチは、再配置の可能性がある操作をまたいで生のポインタを保持するよりも、skb相対オフセットの方が安全である理由を示しています。

04 — 競合状態はメモリバグを増幅する

脆弱な状態は、パケット送信とネットワークデバイス設定をめぐる並行アクティビティに依存しています。

05 — カーネルUAFは影響が大きい

カーネルネットワーキングコード内の古いポインタは、機密性、完全性、可用性に影響を及ぼすメモリ破壊プリミティブになる可能性があります。


📚 参考文献

  • CVE: CVE-2026-68121
  • コードネーム: PPPoEject
  • Linuxサブシステム: PPPoE
  • ソース: drivers/net/ppp/pppoe.c
  • 主要関数: pppoe_sendmsg()
  • 修正: pppoe: reload header pointer after dev_hard_header()
  • CVSS: 7.8 High
  • Debian Security Tracker: CVE-2026-68121
  • Linux Kernel / Stable References: CVEレコードに記載

⚡ PPPoEject

CVE-2026-68121

Linux Kernel · PPPoE · Use-After-Free · Kernel Security · LPE


Research • Analyze • Reproduce • Harden


0xBlackash

ツールをダウンロード
項目詳細
CVECVE-2026-68121
コードネームPPPoEject
コンポーネントLinuxカーネル
サブシステムPPPoE / ネットワーキング
影響を受けるファイルdrivers/net/ppp/pppoe.c
主要関数pppoe_sendmsg()
バグクラスUse-After-Free
影響カーネルメモリ破壊
潜在的な影響ローカル特権昇格
CVSS v3.17.8 — High
攻撃ベクトルローカル
攻撃の複雑さ低
必要な特権低
ユーザー操作なし
ステータス修正済み
セキュリティ特性脆弱版修正版
コールバック前にヘッダーポインタを保存✅—
skbヘッドが移動可能✅✅
コールバック後にポインタを更新❌✅
古いポインタの参照外し可能性あり防止済み
use-after-free書き込み可能性あり緩和済み
カーネルメモリ破壊可能性あり緩和済み