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

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

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、根本原因分析、ラボ環境構築を含む。

1661ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

⚡ CVE-2026-68121 - PPPoEject

Gemini_Generated_Image_f5uscnf5uscnf5us (1)

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

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


⚠️ 免責事項

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

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


📌 脆弱性の概要

項目詳細
CVECVE-2026-68121
コードネームPPPoEject
コンポーネントLinuxカーネル
サブシステムPPPoE / ネットワーキング
影響を受けるファイルdrivers/net/ppp/pppoe.c
主要関数pppoe_sendmsg()
バグ分類Use-After-Free
影響カーネルメモリ破壊
潜在的な影響ローカル権限昇格
CVSS v3.17.8 — 高
攻撃ベクトルローカル
攻撃の複雑さ低
必要な権限低
ユーザー操作なし
ステータス修正済み

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


🧬 脆弱性の説明

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

drivers/net/ppp/pppoe.c

内:

pppoe_sendmsg()

脆弱なシーケンスは概念的には次のとおりです:

pppoe_sendmsg()
      │
      ▼
Save PPPoE header pointer
      │
      ▼
dev_hard_header()
      │
      ▼
skb head may be reallocated
      │
      ▼
Old pointer becomes stale
      │
      ▼
PPPoE writes through stale pointer
      │
      ▼
Use-After-Free
      │
      ▼
Kernel memory corruption

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


🔬 根本原因

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

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

dev_hard_header()

ただし、そのコールバックによって skb の先頭が移動する可能性があります。

概念的には:

Before callback:

skb
┌──────────────────────────────┐
│ Ethernet │ PPPoE │ Payload   │
└──────────┴───────┴───────────┘
           ▲
           │
       stale pointer


After skb expansion:

old skb head ──X──► freed

new skb head
┌────────────────────────────────────┐
│ Ethernet │ PPPoE │ Payload         │
└──────────┴───────┴─────────────────┘
           ▲
           │
      valid location

古いポインタは解放済みの割り当てを依然として参照しています。

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


🧠 トリガー条件

文書化されたトリガーは、copy_from_user() 周辺の競合状態と、 チームデバイスのヘッダー操作への変更を伴います。

説明されているシーケンスの一つは次のとおりです:

PPPoE sendmsg()
      │
      ▼
copy_from_user() blocks
      │
      │
      ├───────────────┐
      │               │
      ▼               ▼
Team device changes   First non-Ethernet
header operations     port is added
                      │
                      ▼
               Delegated GRE callback
                      │
                      ▼
               skb head expansion
      │               │
      └───────────────┘
              │
              ▼
       stale PPPoE pointer
              │
              ▼
       use-after-free write

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


💥 セキュリティへの影響

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

  • カーネルヒープのuse-after-free
  • カーネルメモリの破損
  • カーネルクラッシュ / サービス拒否
  • カーネルメモリの漏洩の可能性
  • 任意のカーネルメモリ改ざんの可能性
  • 任意のカーネルコード実行の可能性
  • ローカル権限昇格

CVEの公開CVSSベクターは以下の通りです:

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

スコアは 7.8 High です。


🔎 技術的な攻撃対象領域

関連するコンポーネントは次のとおりです:

PF_PPPOX / PPPoE socket
          │
          ▼
    pppoe_sendmsg()
          │
          ▼
     sk_buff (skb)
          │
          ▼
  dev_hard_header()
          │
          ▼
 Network device header callback
          │
          ▼
 Potential skb head expansion
          │
          ▼
 PPPoE stale header pointer
          │
          ▼
     UAF write

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


🩹 アップストリーム修正

アップストリーム修正のタイトルは次のとおりである:

pppoe: reload header pointer after dev_hard_header()

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

重要な特性は次のとおりです:

Before:

header pointer
      │
      ▼
dev_hard_header()
      │
      ▼
skb moves
      │
      ▼
pointer = stale ❌


After:

dev_hard_header()
      │
      ▼
skb may move
      │
      ▼
reload header using skb offset
      │
      ▼
pointer = valid ✅

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


📊 脆弱なバージョンと修正済みバージョン

セキュリティ特性脆弱なバージョン修正済みバージョン
コールバック前に保存されたヘッダーポインタ✅—
skb ヘッドが移動可能✅✅
コールバック後にポインタを更新❌✅
古いポインタの参照解除発生しうる防止済み
use-after-free 書き込み発生しうる緩和済み
カーネルメモリ破壊発生しうる緩和済み

🧪 研究環境

管理された実験室は次のように構成できます:

┌───────────────────────────────────────────────┐
│                 Linux VM                     │
│                                               │
│       ┌───────────────┐                       │
│       │ PPPoE Socket  │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │ pppoe_sendmsg │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     Team      │                       │
│       └───────┬───────┘                       │
│               │                               │
│               ▼                               │
│       ┌───────────────┐                       │
│       │     GRE       │                       │
│       └───────────────┘                       │
│                                               │
└───────────────────────────────────────────────┘

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

gdb
pwndbg
gef
crash
objdump
readelf
pahole

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

sudo dmesg -w

PPPoEサポートを検査します:

lsmod | grep pppoe

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

find /lib/modules/$(uname -r) -iname '*pppoe*'

🔎 カーネル検証

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

uname -r

PPPoE 関連の設定を確認します:

grep -E 'CONFIG_PPP|CONFIG_PPPOE' \
/boot/config-$(uname -r)

代表的な関連オプションは次のとおりです:

CONFIG_PPP
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
CONFIG_PPPOE

🧪 再現ワークフロー

制御されたカーネルリサーチのために:

ツールをダウンロード