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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
copy-fail-CVE-2026-31431 — # CVE-2026-31431 用ローカル権限昇格エクスプロイト LinuxカーネルのAF_ALG + spliceページキャッシュ上書きに対するローカル権限昇格エクスプロイトです。PoC、BPFtrace検出スクリプト、および認可されたセキュリティ研究用のQEMUテスト環境が含まれています。 | Kitploit
ツール/GitHubGitHub/astounds/copy-fail-cve-2026-31431
特権昇格エクスプロイトフレームワーク脆弱性分析エクスプロイト学習と教育バイナリエクスプロイトラボと実践
GitHubastounds/copy-fail-cve-2026-31431

copy-fail-CVE-2026-31431

人気

すべて見る →

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

すべてのツールを探索

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

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

# CVE-2026-31431 用ローカル権限昇格エクスプロイト LinuxカーネルのAF_ALG + spliceページキャッシュ上書きに対するローカル権限昇格エクスプロイトです。PoC、BPFtrace検出スクリプト、および認可されたセキュリティ研究用のQEMUテスト環境が含まれています。

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

CVE-2026-31431 — Copy Fail

AF_ALG + splice によるページキャッシュ上書きを利用した Linux カーネルローカル権限昇格

CVE CVSS License

認可されたセキュリティ研究、ペネトレーションテスト、および教育目的のみに使用してください。 所有していないシステム、または明示的な書面による許可を得ていないシステムに対しては使用しないでください。

技術解説


目次

  • 説明
  • 脆弱性の詳細
  • リポジトリ構成
  • クイックスタート
  • 検出
  • 要件
  • 緩和策
  • テスト環境(任意)
  • 参考情報
  • ライセンス

説明

CVE-2026-31431 は、Linux カーネルにおけるローカル権限昇格(LPE)の脆弱性です。権限のないローカルユーザーが、AF_ALG ソケットインターフェースと splice() を組み合わせることで、setuid バイナリが属するページキャッシュページへの認証済み書き込みを直接実行し、root アクセスを獲得できます。

このエクスプロイトは、ディスク上の inode を変更することなくページキャッシュ内の su バイナリを上書きし、ファイルメタデータやブロックレベルのチェックサムのみに依存する整合性メカニズムを回避します。


脆弱性の詳細

影響を受ける環境


リポジトリ構成

root@kitploit:~
.
├── exploit.py    # PoC — ページキャッシュ上書きと権限昇格
├── detect.bt     # リアルタイム検出用 BPFtrace スクリプト
├── run-vm.sh     # QEMU テスト環境自動化(任意)
├── PAYLOAD.md    # ペイロードエンコーディング解析(hex → zlib → ELF → shellcode)
└── LICENSE

クイックスタート

脆弱なシステム上で exploit.py を権限のないローカルユーザーとして実行します — sudo は不要です:

root@kitploit:~
python3 exploit.py

このスクリプトは以下の手順を実行します:

  1. AF_ALG(algif_aead)のカーネルサポートを検証し、su バイナリを特定します。
  2. アーキテクチャに適したペイロードを選択し、解凍します。
  3. su バイナリを生のファイルディスクリプタとして開き、AF_ALG + sendfile を介してページキャッシュページを上書きします。
  4. 権限昇格をテストします。成功した場合、root シェルに移行します。

対応アーキテクチャ:


検出

detect.bt を使用して、エクスプロイト試行をリアルタイムで監視します。root 権限が必要です:

root@kitploit:~
sudo bpftrace detect.bt
# または
doas bpftrace detect.bt

このスクリプトは、@suspect[pid] のビットマスクを使用して PID ごとに 3 つの指標を追跡します:

同じ PID で 3 つのビットすべてが設定された場合(@suspect[pid] == 0x7)、アラートが発動します。


要件

exploit.py

  • Python 3.6+
  • AF_ALG/algif_aead モジュールがロードされた Linux カーネル
  • ローカルの権限のないユーザーアカウント(root は不要)

detect.bt

  • bpftrace ≥ 0.12
  • root 権限(BPF トレーシングに必要)
root@kitploit:~
# Ubuntu/Debian
sudo apt install bpftrace

# RHEL/CentOS/Fedora
sudo dnf install bpftrace

# Amazon Linux
sudo yum install bpftrace

# SUSE
sudo zypper install bpftrace

# Alpine
sudo apk add bpftrace

緩和策

1. パッチ(推奨)

ディストリビューションのカーネルパッケージを、メインラインコミット a664bf3d603d を含むバージョンに更新してください。このコミットは 2017 年の algif_aead インプレース最適化をリバートし、ページキャッシュページが書き込み可能な宛先 scatterlist に含まれないようにします。現在、ほとんどの主要ディストリビューションがこの修正を提供しています。

2. algif_aead の無効化(パッチ適用までの間)

blacklist は明示的な modprobe algif_aead で回避できます。install .../bin/false ディレクティブはインストールコマンドを完全に上書きし、すべてのロード試行を失敗させます:

root@kitploit:~
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead 2>/dev/null || true

これによって影響を受けるもの — ほぼ何もありません

「なし」の行のサブシステムは、カーネル内暗号 API を直接使用します — AF_ALG を経由することはありません。パフォーマンスは通常のユーザースペース暗号ライブラリにフォールバックしますが、これは他のほぼすべてのものがすでに使用しているものです。

無効化する前に、システム上で AF_ALG をアクティブに使用しているものがあるか確認するには:

root@kitploit:~
lsof | grep AF_ALG
ss -xa | grep alg

3. seccomp によるブロック(コンテナ、サンドボックス、CI)

パッチ適用状態に関係なく、信頼できないワークロードに対して socket(AF_ALG, ...) の作成を拒否します。seccomp の拒否リストに AF_ALG(ファミリ 38)を追加するか、権限のないプロセスの socket 呼び出しを制限する AppArmor/SELinux ポリシーを使用します。

4. detect.bt による監視

即座にパッチ適用やロックダウンができないホストには、同梱の検出スクリプトをデプロイします。完全な 3 ステップのエクスプロイトプリミティブを実行するプロセスがあれば、アラートが発動します。


テスト環境(任意)

run-vm.sh は、管理された環境でのテスト用に Ubuntu 24.04 QEMU VM の作成を自動化します。exploit.py と detect.bt は脆弱なホスト上で直接実行できます — QEMU は必須ではありません。

ホスト要件

依存関係備考
qemu-system-x86_64 + KVM以下のインストールコマンドを参照
wget または curlクラウドイメージのダウンロード
cloud-image-utilsシードイメージの生成(非 Debian ホストでは Docker で代替可能)

QEMU のインストール

root@kitploit:~
# Ubuntu/Debian
sudo apt install qemu-system-x86 cloud-image-utils wget

# Fedora/RHEL
sudo dnf install qemu-system-x86 wget

# Arch
sudo pacman -Sy qemu

# Alpine
sudo apk add qemu-system-x86 qemu-ui-gtk wget

実行

root@kitploit:~
sh run-vm.sh

対話型メニュー

root@kitploit:~
1. VM の起動/作成
2. SSH で接続
3. VM にファイルをアップロード(exploit.py、detect.bt)
4. VM 内でエクスプロイトを実行
5. VM 内で detect.bt を実行
6. VM のステータスを確認
7. VM を停止
8. VM ファイルをクリーンアップ
0. 終了

VM 認証情報

フィールド値
ユーザーubuntu
パスワードcve123
SSH ポート2222

参考情報

  • 技術解説 — xint.io
  • ペイロードエンコーディング解析 — hex → zlib → ELF → shellcode の内訳
  • crypto/af_alg.c — カーネルソース
  • mm/splice.c — カーネルソース

ライセンス

このプロジェクトは GNU General Public License v3.0 以降 の下でライセンスされています。 全文は LICENSE を参照してください。

免責事項: このリポジトリは、認可されたセキュリティ研究、ペネトレーションテスト、および教育目的のみで提供されています。著者は、本ソフトウェアの誤用または損害について一切の責任を負いません。

ツールをダウンロード
フィールド値
CVE IDCVE-2026-31431
種別ローカル権限昇格(LPE)
CVSS v3.1 スコア7.8 High — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H(出典: kernel.org)
カーネルサブシステムcrypto/af_alg.c, mm/splice.c
攻撃ベクトルローカル — 権限のないユーザーアカウントが必要
根本原因algif_aead が AEAD ソケット上で sendfile() を受け入れる際、splice() が転送を完了する前にマップされたページキャッシュページに対してコピーオンライト(CoW)セマンティクスを強制しない
ディストリビューションカーネルバージョンアーキテクチャ
Ubuntu 24.04 LTS6.17.0-1007-awsx86_64
Amazon Linux 20236.18.8-9.213.amzn2023x86_64
RHEL 10.16.12.0-124.45.1.el10_1x86_64
SUSE 166.12.0-160000.9-defaultx86_64
Raspberry Pi OS (Pi 5)6.12.75+rpt-rpi-2712aarch64
アーキテクチャバリアント
x86_64—
aarch64—
riscv64—
ppc64le—
armarmv5l, armv6l, armv7l
x86 32-biti386, i486, i586, i686
MIPS 64-bitmips64, mips64el
LoongArchloong64, loongarch64
s390x—
ビットシステムコール指標
0x1socket(AF_ALG, SOCK_SEQPACKET)AF_ALG ソケット作成
0x2setsockopt(SOL_ALG, ...)暗号操作の設定
0x4sendmsg(MSG_MORE) + splice()ページキャッシュ上書きの試行
影響?サブシステム/ユースケース
なしdm-crypt/LUKS、kTLS、IPsec/XFRM、カーネル内 TLS
なしOpenSSL、GnuTLS、NSS のデフォルトビルド
なしSSH、カーネルキーリング暗号
可能性ありafalg エンジンを明示的に有効にした OpenSSL
可能性あり組み込み暗号オフロードパス、または aead/skcipher/hash ソケットを直接バインドするアプリ