
Python exploit for CVE-2026-31431、AF_ALGとsplice()を介してページキャッシュに書き込むLinuxカーネルのローカル権限昇格脆弱性であり、arm64およびx86でroot権限を取得します。
| 項目 | 内容 |
|---|---|
| CVE 番号 | CVE-2026-31431 |
| 脆弱性名 | Copy Fail |
| 脆弱性タイプ | Linux カーネルローカル権限昇格 (LPE) |
| CVSS 3.1 スコア | 7.8 (HIGH) |
| CWE | CWE-669: Incorrect Resource Transfer Between Spheres |
| 影響範囲 | 2017 年から 2026 年 4 月までに構築されたすべての Linux カーネル |
| CISA KEV | 掲載済み、修正期限 2026-05-15 |
| 公開日 | 2026-04-29 |
2017 年にカーネルの algif_aead 暗号化モジュールにインプレース暗号化最適化(in-place optimization)が導入されました。この最適化により、page-cache ページが誤って書き込み可能なターゲット scatterlist に配置される問題が発生しました。攻撃者は AF_ALG ソケットと splice() システムコールを組み合わせることで、任意のファイル(root 所有の読み取り専用ファイルを含む)の page cache にデータを書き込むことができます。
攻撃チェーン: AF_ALG socket → splice() → page-cache 書き込みプリミティブ → setuid バイナリの page cache を改ざん → そのファイルを実行して root 権限を取得
攻撃の特徴:
| ディストリビューション | 影響を受けるカーネルバージョン |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
Debian、Arch、Fedora、Rocky、Alma、Oracle などのディストリビューションでも、同じカーネル範囲が影響を受けます。
以下の修正バージョンより低いカーネルバージョンはすべて影響を受けます:
uname -r
出力を上記の表の修正バージョンと比較し、修正バージョンより低い場合は影響を受けます。
# 現在の AF_ALG 接続を確認
lsof | grep AF_ALG
# AF_ALG ソケットの状態を確認
ss -xa | grep alg
lsmod | grep algif_aead
出力がある場合、モジュールがロードされており、悪用されるリスクがあります。
# PoC リポジトリをクローン
git clone https://github.com/cx330zer0/CVE-2026-31431-Copy-Fail-add-arm64.git
cd CVE-2026-31431-Copy-Fail-add-arm64
# PoC を実行(非特権ユーザーとして実行する必要があります)
python3 copy-fail-dual-arch.py
PoC が root シェルの取得に成功した場合、システムにこの脆弱性が存在することを意味します。
| 安定ブランチ | 最低修正バージョン |
|---|
| 5.10.x | ≥ 5.10.254 |
| 5.15.x | ≥ 5.15.204 |
| 6.1.x | ≥ 6.1.170 |
| 6.6.x | ≥ 6.6.137 |
| 6.12.x | ≥ 6.12.85 |
| 6.18.x | ≥ 6.18.22 |
| 6.19.x | ≥ 6.19.12 |
| 7.0.x | ≥ 7.0-rc7 |