
Copy Fail (CVE-2026-31431) は、AF_ALG、splice()、authencesn のメカニズムを介して page cache を制御された方法で破壊することにより、Linux カーネルに影響を与える Local Privilege Escalation (LPE) 脆弱性です。
このリポジトリの目的は以下の通りです:
⚠️ このプロジェクトは厳密に教育、防御、およびセキュリティ研究を目的としています。
このリポジトリで示されるすべてのデモンストレーションは、隔離された制御されたラボ環境で実施されました。
明示的な許可なくサードパーティのシステムで使用することは許可されていません。
| 要素 | 値 |
|---|---|
| タイプ | Local Privilege Escalation |
| 影響 | ローカル root |
| コンポーネント | Linux Kernel |
| サブシステム | AF_ALG / authencesn |
| プリミティブ | page cache への制御された書き込み |
| 条件 | 非特権ユーザー |
| ステルス性 | ディスク上のファイルは無傷 |
| 重大度 | 重大 |
| 特性 | 詳細 |
|---|---|
| レースコンディション不要 | 決定論的なエクスプロイト |
| ディスクへの変更なし | 検出が困難 |
| ミニマルなエクスプロイト | Python 標準のみ |
| コンテナへの影響 | Kubernetes / VPS / 共有ホスティング |
| 広い範囲 | 2017年以降の脆弱なカーネル |
以下に類似:
User Space
↓
AF_ALG Socket
↓
splice()
↓
Page Cache Reference
↓
authencesn In-Place Write
↓
Controlled 4-Byte Overwrite
↓
execve()
↓
Privilege Escalation
2011 → authencesn がカーネルに追加
2015 → AF_ALG が AEAD + splice() サポートを受ける
2017 → algif_aead.c でのインライン最適化
2026 → 発見と公式修正
AF_ALGLinux カーネルの暗号プリミティブをユーザー空間に公開するソケットインターフェース。
splice()ファイル記述子間でページをコピーせずに転送するメカニズム。
authencesn出力バッファを作業領域として使用する AEAD IPsec ESN テンプレート。
algif_aead.c に導入された最適化により、sg_chain() を介して page cache のページを出力 scatterlist に直接チェーンできるようになりました。
Input SGL: AAD || Ciphertext || Tag (page cache)
↑
Output SGL: AAD || Ciphertext ------+
すると authencesn は対象ファイルの page cache のページに直接書き込みを行います。
| プリミティブ | 制御 |
|---|---|
| 対象ファイル | 読み取り可能な任意のファイル |
| オフセット | splice で制御 |
| 書き込まれる値 | seqno_lo フィールド |
| 永続性 | メモリのみ |
| ディスク検出 | 不可能 |
| ディストリビューション | カーネル | ステータス |
|---|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws | ✅ 脆弱 |
| Amazon Linux 2023 | 6.18.8-9.213 | ✅ 脆弱 |
| RHEL 10.1 | 6.12.0 | ✅ 脆弱 |
| SUSE 16 | 6.12.0 | ✅ 脆弱 |
⚠️ 隔離されたテスト環境のみ。
uname -r
lsmod | grep algif_aead
python3 --version
git clone https://github.com/theori-io/copy-fail-CVE-2026-31431.git
cd copy-fail-CVE-2026-31431
python3 copy_fail_exp.py
auditctl -a always,exit -F arch=b64 -S socket -F a0=38 -k af_alg_socket
auditctl -a always,exit -F arch=b64 -S splice -k splice_monitor
ps aux | awk '$1 == "root"'
ss -tlnp
algif_aead の無効化echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead
{
"defaultAction": "SCMP_ACT_ALLOW",
"syscalls": [
{
"names": ["socket"],
"action": "SCMP_ACT_ERRNO",
"args": [
{ "index": 0, "value": 38, "op": "SCMP_CMP_EQ" }
]
}
]
}
修正 a664bf3d603d は、algif_aead.c の脆弱なインプレース操作を削除します。
sudo apt update && sudo apt upgrade
sudo reboot
| 日付 | イベント |
|---|---|
| 2017 | 脆弱性の導入 |
| 2026-03-23 | カーネルセキュリティチームへの報告 |
| 2026-04-01 | 修正の統合 |
| 2026-04-29 | 公開開示 |
| リソース | 説明 |
|---|---|
| Dirty Pipe | CVE-2022-0847 |
| Linux Kernel Docs | 公式ドキュメント |
| Openwall Security | セキュリティメーリングリスト |
| LWN.net | Linux カーネル分析 |
| AF_ALG Documentation | Crypto API |
| XFRM / IPsec | 影響を受けるサブシステム |
linux kernel security, CVE-2026-31431, copy fail, page cache, AF_ALG, authencesn, linux LPE, kernel exploit, linux hardening, security research, dirty pipe, kernel mitigation
このリポジトリは以下の目的にのみ提供されます:
無断使用は違法です。
🛡️ 意識向上 • 緩和 • 防御的研究
🔁 コミュニティとプロジェクトを共有する
⭐ Linux セキュリティ研究を支援する