Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2026-31431 — LinuxカーネルLPE CVE-2026-31431向けの調査・検出ツールキット。エクスプロイト解析、YARAルール、auditd/Falco検出、パッチ適用ガイド、ラボ環境を含む。 | Kitploit
ツール/GitHubGitHub/vasyapokemon/cve-2026-31431
特権昇格脆弱性分析エクスプロイトマルウェア分析デジタルフォレンジック侵入検知論文と研究学習と教育インシデントレスポンス厳選リソースラボと実践
245ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
vasyapokemon/cve-2026-31431

cve-2026-31431

LinuxカーネルLPE CVE-2026-31431向けの調査・検出ツールキット。エクスプロイト解析、YARAルール、auditd/Falco検出、パッチ適用ガイド、ラボ環境を含む。

リポジトリを見る

CVE-2026-31431 —「Copy Fail」:Linuxカーネル algif_aead のローカル権限昇格

CISA KEV | CVSS 7.8 HIGH | Linuxカーネル 4.14〜2026年初頭に影響(約9年間)


目次

  1. エグゼクティブサマリー
  2. リスク評価
  3. 技術的詳細
  4. 攻撃手法 — レッドチーム
  5. 検知とインシデント対応 — ブルーチーム
  6. パッチ適用と修復
  7. ラボ環境
  8. 参考情報

1. エグゼクティブサマリー

CVE-2026-31431 は、通称 「Copy Fail」 と呼ばれる、Linuxカーネルの暗号サブシステムにおける高深刻度のローカル権限昇格(LPE)脆弱性です。低権限のローカルユーザーは、パッチ未適用のシステム上で数秒でroot権限に昇格できます。

属性値
CVECVE-2026-31431
通称Copy Fail
CVSS v3.17.8 HIGH
攻撃ベクトルローカル
必要な権限低
ユーザー操作なし
コンポーネントcrypto/algif_aead.c — authencesn テンプレート
導入時期2017年(コミット 72548b093ee3)
公開時期2026年
潜伏期間約9年間
CISA KEVあり
公開PoCあり(732バイトのスタンドアロンPythonスクリプト)

ビジネスへの影響

  • パッチ未適用のLinuxサーバー、VM、クラウドインスタンス、コンテナホスト上でのroot権限取得
  • Kubernetesポッドからのコンテナエスケープ — ページキャッシュはホストカーネルと共有される
  • ディスク上の痕跡ゼロ — 悪用してもファイル変更、ダーティページ、標準的なファイル整合性ツール(Tripwire、AIDE)による監査証跡が残らない
  • Red Hat、Ubuntu、Debian、SUSE、Amazon Linux など、2017年以降のカーネルを実行する事実上すべての主要ディストリビューションに影響

推奨される緊急対応

  1. 一時的な緩和策(今すぐ展開、モジュールがロードされていない場合は再起動不要): ```bash echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf sudo rmmod algif_aead 2>/dev/null || true
  2. 恒久的な修正: ディストリビューションのパッケージマネージャーを使用してカーネルパッケージを更新し、再起動します。
  3. 確認: 修正の前後に detection/check_vulnerable.sh を実行します。

2. リスク評価

CVSS 3.1 ベクター文字列```

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

| メトリクス | 値 | 根拠 |
|--------|-------|-----------|
| 攻撃ベクトル | **ローカル** | シェルアクセス(SSH、コンテナexec、物理)が必要 |
| 攻撃の複雑さ | **低** | 信頼性が高く、完全自動化 — レースコンディションは不要 |
| 必要な権限 | **低** | 任意の非特権ユーザーアカウント |
| ユーザー操作 | **なし** | 被害者の操作は不要 |
| 機密性への影響 | **高** | システム全体の完全侵害 |
| 完全性への影響 | **高** | システム全体の完全侵害 |
| 可用性への影響 | **高** | システム全体の完全侵害 |

### 脅威の状況

| 要素 | 評価 |
|--------|-----------|
| PoCの入手可能性 | 公開済み、実戦投入可能、732バイトのスタンドアロンPython |
| エクスプロイトの信頼性 | 高 — テスト済みのディストリビューション間で修正なしに動作 |
| 検出の難易度 | 高 — ディスク書き込みなし、ダーティページなし |
| 攻撃者に必要なスキル | 低 — 公開PoCを持つスクリプトキディ |
| CISA KEV | 2026年に追加 — 積極的に監視中 |
| Microsoft Defender | 積極的な調査中としてフラグ付け |

### 影響を受ける環境

| 環境 | リスク |
|-------------|------|
| ベアメタルLinuxサーバー | 重大 |
| Linux VM(クラウドまたはオンプレミス) | 重大 |
| Kubernetesノード | 重大(コンテナエスケープも可能) |
| Dockerホスト | 重大 |
| 共有ホスティング / マルチテナント | 重大 |
| WSL2 / Windows上のLinux | カーネルバージョンごとに評価 |

---

## 3. 技術的な詳細解説

### 3.1 背景: AF_ALGとAEAD

Linuxカーネルは、**AF_ALGソケット**(`AF_ALG = 38`)を介して暗号操作をユーザースペースに公開しています。このインターフェース(`algif_aead`)により、非特権アプリケーションはカーネルモードのコードを必要とせずに、カーネルの暗号ハードウェアアクセラレータを呼び出すことができます。

**AEAD**(認証付き暗号化と関連データ)アルゴリズム(AES-GCMやChaCha20-Poly1305など)は、TLS、ディスク暗号化、VPNプロトコルで広く使用されています。脆弱なテンプレートは`authencesn` — 拡張シーケンス番号(ESN)サポートを備えた`hmac(sha256)` + `cbc(aes)`を使用するAEAD構成で、IPsecで一般的に使用されています。

### 3.2 根本原因

2017年、コミット`72548b093ee3`がパフォーマンス最適化として`algif_aead`に**インプレースAEAD操作**を導入しました — これにより、暗号エンジンが同じバッファを読み書きできるようになりました。これは欠陥がありました:```
The bug chain:

1. Caller binds AF_ALG socket to:
      authencesn(hmac(sha256),cbc(aes))

2. Caller sends a decryption request via sendmsg() with specific flags

3. Caller uses splice() to feed PAGE CACHE PAGES from an open file
   descriptor directly into the socket's scatterlist

4. The authencesn template, during ESN header processing, uses the
   OUTPUT BUFFER as scratch space — writing 4 bytes past the
   expected output boundary

5. Because the scatterlist contains page cache pages (not private
   copies), this scratch write lands DIRECTLY IN THE PAGE CACHE

6. Page cache is shared kernel-wide — all processes reading the
   same file now see the modified bytes

Key insight: splice() is zero-copy — it hands page cache references
to the socket. The in-place "optimization" then writes INTO those
pages. No dirty bit is set because the write goes through the crypto
engine, not the normal write path.

3.3 書き込みプリミティブ

この脆弱性により、攻撃者が読み取り用に開くことができる任意のファイルのページキャッシュへの、制御された4バイト書き込みが可能になります:

プロパティ値
書き込みサイズ4バイト
オフセット制御あり — spliceオフセット経由で攻撃者が制御可能
ターゲット読み取り可能な任意のファイルのページキャッシュ
ダーティページのマーキングなし
ディスク上の変更なし
タイムスタンプの更新なし
カーネルログへの記録なし(auditdが設定されている場合を除く)

この書き込みは繰り返し可能です — エクスプロイトは4バイト書き込みをループさせて、より大きなコードシーケンスにパッチを適用します。

3.4 エクスプロイトチェーン```

[1] Open /usr/bin/su (or any setuid-root binary) for reading ↓ [2] Map a copy to find target instruction bytes (e.g., UID check, execve path, security gate) ↓ [3] Compute exact page cache offset of target bytes ↓ [4] Set up AF_ALG socket → authencesn(hmac(sha256),cbc(aes)) ↓ [5] splice() the target binary's page cache into the socket ↓ [6] Trigger decryption → authencesn scratch write patches the target bytes in page cache (4 bytes per iteration) ↓ [7] Repeat for each 4-byte patch needed ↓ [8] Execute /usr/bin/su → runs root-owned setuid binary but now with attacker-controlled code in page cache ↓ [9] Root shell

### 3.5 標準的な防御が失敗する理由

| 防御策 | 回避されるか? | 理由 |
|---------|-----------|--------|
| ファイル整合性監視(Tripwire/AIDE) | **はい** | ディスク上の変更なし |
| IDSファイルハッシュチェック | **はい** | ディスクのバイトは不変 |
| `inotify` ファイル監視 | **はい** | VFS書き込みイベントなし |
| SELinux / AppArmor | **部分的** | プロセスは制御するが、暗号エンジンを介したページキャッシュ書き込みは制御しない |
| 読み取り専用マウント | **はい** | ページキャッシュはマウント経由ではなくメモリ内で変更される |
| バイナリに対する `auditd` の `watch` | **はい** | 監査はVFS書き込みを監視する — これはVFSを迂回する |

### 3.6 影響を受けるカーネルバージョン

| ブランチ | 影響を受ける範囲 | 修正版 |
|--------|-------------------|------------|
| 4.14.x | すべて(脆弱性の起源) | アップストリーム修正なし(EOL) |
| 5.4.x(LTS) | すべて | ディストリビューションのバックポートが必要 |
| 5.10.x(LTS) | すべて | ディストリビューションのバックポートが必要 |
| 5.15.x(LTS) | すべて | ディストリビューションのバックポートが必要 |
| 6.1.x(LTS) | ≤ 6.1.129 | **6.1.130+** |
| 6.6.x(LTS) | ≤ 6.6.86 | **6.6.87+** |
| 6.12.x(LTS) | ≤ 6.12.22 | **6.12.23+** |
| 6.15-rc | rcで修正済み | **6.15-rc+** |

> ディストリビューションのカーネルは、異なるバージョン番号で修正をバックポートしている場合があります。必ずお使いのディストリビューションのセキュリティ勧告を確認してください。

---

## 4. 攻撃手法 — レッドチーム

> **認可が必要です。** このセクションは、防御側が攻撃者の視点を理解するためのものです。所有しているシステム、または明示的な書面によるテスト許可を得たシステムでのみ実行してください。

### 4.1 前提条件

- ターゲット上での低権限シェル(SSH、コンテナexec、RCEチェーン)
- Python 3.10+ **または** コンパイル済みCバイナリ
- `algif_aead` が利用可能な未パッチのカーネル

### 4.2 偵察```bash
# Check if vulnerable
uname -r
cat /proc/crypto | grep -A10 "authencesn"
lsmod | grep algif_aead

# Verify setuid target exists
ls -la /usr/bin/su /usr/bin/sudo /usr/bin/passwd

4.3 公開PoC

元の研究者(Theori)は、完全に動作する732バイトのスタンドアロンPython PoCを公開しました:

  • リポジトリ: https://github.com/theori-io/copy-fail-CVE-2026-31431
  • ウェブサイト: https://copy.fail
  • ファイル: `copy_fail_exp.py````bash

Default: targets /usr/bin/su

python3 copy_fail_exp.py

Custom target

python3 copy_fail_exp.py /usr/bin/passwd

A local copy is available at `exploit/poc.py`. See `exploit/README.md` for technical breakdown.

### 4.4 Container Escape Scenario

Because the Linux page cache is shared between all processes on the same host (including host and containers):```
Attacker in container → patches /usr/bin/su in HOST page cache
Host user runs su → executes attacker code as root on host

This works even from non-privileged containers, as long as the host kernel is vulnerable.

4.5 MITRE ATT&CK マッピング

TechniqueIDNotes
Exploitation for Privilege EscalationT1068中核となる手法
Abuse Elevation Control Mechanism: Setuid/SetgidT1548.001Setuid バイナリのハイジャック
Hijack Execution FlowT1574インメモリでのバイナリパッチ
Indicator Removal: TimestompT1070.006タイムスタンプは更新されない
Indirect Command ExecutionT1202パッチ適用済みバイナリがシェルを実行

5. 検知とインシデント対応 — ブルーチーム

これは本リポジトリの主な焦点です。

5.1 脆弱性の検知

ツールをダウンロード