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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-40271 — CVE-2025-40271 MadEploits により改変 | Kitploit
ツール/GitHubGitHub/madexploits/cve-2025-40271
特権昇格脆弱性分析エクスプロイト論文と研究学習と教育バイナリエクスプロイト
GitHubmadexploits/cve-2025-40271

CVE-2025-40271

CVE-2025-40271 MadEploits により改変

リポジトリを見る
1122ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-40271 — proc_readdir_de() rbツリー UAF LPE

Linux カーネル proc ファイルシステムにおけるローカル権限昇格の脆弱性の概念実証(PoC)です。このバグは proc_readdir_de() の use-after-free であり、RB_CLEAR_NODE() を伴わない rb_erase() によって引き起こされ、ディレクトリ列挙中に競合させられる可能性のある古い赤黒木(rbツリー)リンクが残ります。

著者: MadExploits

元となる脆弱性研究および C PoC は Aviral Srivastava(N-DAY RESEARCH)によるものです。このリポジトリには、コンパイルが現実的でない環境向けのシェル版(exploit.sh)が含まれています。


概要

項目詳細
CVECVE-2025-40271
コンポーネントfs/proc — proc_readdir_de() / remove_proc_entry()
種別Use-after-free(rbツリーの古いリンク)
影響ローカル権限昇格(LPE)
アーキテクチャx86_64
影響を受けるバージョン6.18-rc5 までの Linux カーネル

根本原因

proc ディレクトリエントリが削除されると、エントリの rb ノードに対して RB_CLEAR_NODE() なしで rb_erase() が呼び出されます。解放されたノードは、古いツリーリンクを介して到達可能な状態に残る可能性があります。getdents64() が /proc/self/net/dev_snmp6/ 配下のインターフェース削除と競合すると、カーネルは解放済みメモリを読み取る可能性があります — 多くの場合、スプレーされた msg_msg オブジェクトによって再利用され、カーネルヒープポインタを漏洩する異常な d_ino 値を返します。


影響を受ける/パッチ適用済みカーネル

PoC は実行中のカーネルバージョンを確認し、パッチ適用済みビルドでは終了します:

ブランチ

リポジトリの内容

ファイル説明
exploit.c完全な C PoC — netlink veth 管理、pthread 競合、msg_msg スプレー
exploit.shコンパイル不要のシェル版 — unshare、ip、syscall/競合用の組み込み Python 3

どちらの実装も同じ悪用手順に従います:

  1. ユーザー名前空間とネットワーク名前空間に入る(ネット名前空間で CAP_NET_ADMIN を取得)
  2. veth ペアを作成し、/proc/self/net/dev_snmp6/ を設定する
  3. getdents64() を veth の高速削除およびヒープスプレーと競合させる
  4. カーネルポインタに似た d_ino 値で UAF を検出する
  5. 権限昇格を試みる(完全な LPE にはカーネル固有の KASLR オフセットが必要)

要件

共通

  • Linux x86_64
  • 非特権ユーザー名前空間が有効であること:
    root@kitploit:~
    cat /proc/sys/kernel/unprivileged_userns_clone
    # must be 1
    
  • 非 root ユーザーであること(既に root の場合は PoC は終了します)

exploit.c

  • pthread 対応の gcc
  • Linux ヘッダー(linux/netlink.h など)
root@kitploit:~
gcc -o exploit exploit.c -lpthread

exploit.sh

  • bash
  • python3
  • ip(iproute2)
  • unshare(--map-root-user 対応の util-linux)

コンパイラは不要です。


使用方法

シェル版(クイックテストに推奨)

root@kitploit:~
chmod +x exploit.sh
./exploit.sh

C 版

root@kitploit:~
gcc -o exploit exploit.c -lpthread
./exploit

期待される出力

脆弱なカーネル — UAF 発動(部分的な成功):

root@kitploit:~
[+] Kernel X.Y.Z — VULNERABLE
[+] Namespace ready...
[+] Created 32 veth pairs (/proc/self/net/dev_snmp6 populated)
[+] UAF HIT! d_ino=0xffff8880........ (kernel heap pointer)
[+] Kernel heap leak: 0xffff8880........
[*] PARTIAL SUCCESS: UAF + heap leak DEMONSTRATED

パッチ適用済みカーネル:

root@kitploit:~
[-] Kernel X.Y.Z — PATCHED
[*] Kernel is patched. Nothing to do.

悪用に関する注意点

  • ヒープリーク: 競合に成功すると、d_ino には x86_64 カーネルポインタパターン(0xffff000000000000)に一致する値が含まれ、通常は解放された proc_dir_entry データと重なる msg_msg ヘッダー m_list に由来します。
  • 完全な LPE: modprobe_path の上書きには、漏洩したヒープアドレスとカーネルテキストベースの間のオフセットが必要です — これはビルド固有(KASLR)です。PoC は UAF とリークを実証しますが、完全なチェーンには対象カーネルイメージ用のオフセットが必要です。
  • 信頼性: 成功はスケジューラのタイミングに依存します。PoC はデフォルトで最大 30 回の競合試行を行います。

対策

  • パッチ適用済みカーネルにアップグレードする(上記の表を参照)。
  • ユーザー名前空間が不要な場合は、非特権での作成を無効化する:
    root@kitploit:~
    sysctl -w kernel.unprivileged_userns_clone=0
    
  • CVE-2025-40271 に対するベンダーのセキュリティアップデートを適用する。

免責事項

このプロジェクトは、許可されたセキュリティ研究、教育、および防御的テストのみを目的として提供されます。

  • 所有しているシステム、または明示的な書面によるテスト許可を得たシステムに対してのみ実行してください。
  • 第三者のシステムに対する不正使用は、適用される法律に違反する可能性があります。
  • 著者および貢献者は、このコードの誤用について責任を負いません。

クレジット

役割名前
リポジトリ作成者MadExploits
元の CVE 研究および C PoCAviral Srivastava — N-DAY RESEARCH

ライセンス

自己責任で使用してください。いかなる保証も提供されません。

ツールをダウンロード
修正バージョン
5.10.x5.10.247+
6.1.x6.1.159+
6.6.x6.6.123+
6.12.x6.12.73+
6.18+6.18-rc6+
7.x+パッチ適用済み