概要
2026年4月末、Linuxカーネルの深刻なローカル特権昇格(LPE)脆弱性 Copy Fail(CVE-2026-31431) が公表されました。本脆弱性は、カーネルの暗号API(AF_ALG / algif_aeadモジュール)のロジック不具合を突くもので、条件竞争(race condition)を一切必要とせず、732行のPythonスクリプトだけで確実にroot権限を取得できる点が特徴です。
CVSSスコアは7.8(High)ですが、実環境での悪用難易度が極めて低く、Dirty CowやDirty Pipeを凌ぐ脅威として注目されています。本記事では、攻撃の技術的仕組み、影響範囲、検知・対処方法、そして今後のLinuxセキュリティに対する教訓を解説します。
攻撃の手法と技術的背景
Copy Failは、Linuxカーネルのユーザー空間向け暗号API(AF_ALG)と、ページキャッシュを扱うsplice()システムコールの組み合わせに起因します。
| 段階 | 動作 |
|---|---|
| 1. バグの根源 |
algif_aeadモジュールがデータコピー処理中に、ページキャッシュの参照カウントとメモリ状態の同期に失敗します。 |
| 2. エクスプロイトのトリガー | 攻撃者は通常ユーザー権限でsplice()を呼び出し、特定サイズのバッファを操作します。これにより、カーネルはページキャッシュ内の4バイト分を不正に書き換えます。 |
| 3. 権限昇格 | 書き換えられた4バイトは、/usr/bin/passwdや/usr/bin/sudoなどのsetuidバイナリの実行イメージを指すメモリ領域に配置されます。結果、setuid実行パスがハイジャックされ、非特権ユーザーから即座にrootシェルが取得されます。 |
従来のDirty Cow(条件竞争を利用)やDirty Pipe(パイプバッファのオーバーフローを利用)とは異なり、Copy Failは完全に決定的(deterministic)な動作をします。タイミング調整や複数回のリトライが不要なため、悪用が極めて容易です。
影響範囲とタイムライン
| 日付 | イベント |
|---|---|
| 2026年4月上旬 | AI支援型コードスキャン(Xint Code/Theori)により脆弱性を発見 |
| 2026年4月29日 | PoC公開、ベンダーへの責任ある開示 |
| 2026年4月30日 | Arch Linux / Fedora が緊急カーネルパッチをリリース |
| 2026年5月1日 | CISA KEVカタログに登録、実環境での悪用報告が急増 |
影響を受ける環境:
- カーネルバージョン: 4.14 〜 6.19.12(主要ディストリビューションのほぼ全て)
- 対象: 物理サーバー、VM、コンテナ(共有カーネル環境)、WSL2
- 特筆点: コンテナ内で非rootユーザーとして実行されている場合でも、ホストカーネルを共有していればroot権限取得が可能です。
検知方法:自分の環境は影響を受けているか
Copy Failはファイル改ざんや不審なプロセス作成を伴わないため、従来のEDRやログ監視では検知が困難です。以下の方法で環境を確認してください。
-
カーネルバージョンの確認
$ uname -rパッチ適用前のバージョン(例: 6.19.12未満)の場合は脆弱性の影響を受けます。
-
モジュールの読み込み状態確認
lsmod | grep algif_aeadモジュールがロードされている場合、攻撃ベクトルとして利用可能です。
-
システムコール監査(Auditd)の確認
不審なsplice()呼び出しやAF_ALGソケット作成を監視している場合...
対処法と緩和策
最も確実な対処法はカーネルのアップデートですが、再起動が困難な環境向けに以下の緩和策が有効です。
-
カーネルパッチの適用(推奨)
各ディストリビューションの公式リポジトリから最新カーネルにアップデートし、再起動してください。# Ubuntu/Debian sudo apt update && sudo apt install --only-upgrade linux-image-generic sudo reboot -
脆弱モジュールの無効化(ワークアラウンド)
algif_aeadモジュールをブラックリスト化し、自動読み込みを防ぎます。echo "blacklist algif_aead" | sudo tee /etc/modprobe.d/blacklist-algif.conf sudo update-initramfs -u # または即時アンロード(注意: 暗号機能依存サービスが停止する可能性があります) sudo rmmod algif_aead -
カーネル起動パラメータでの無効化
GRUB設定にmodprobe.blacklist=algif_aeadを追加し、ブート時にモジュールをロードしないようにします。
防御策と教訓
本件は、Linuxカーネルの複雑なAPIが予期せぬ形で悪用されるリスクを改めて浮き彫りにしました。
- 共有カーネルのリスクを再認識する: コンテナや仮想化環境では「ホストカーネル=信頼境界」です。特権昇格脆弱性はコンテナエスケープに直結するため、gVisorやKata Containersなどカーネルを分離するランタイムの導入を検討してください。
- 最小権限原則の徹底: CAP_SYS_ADMINや特権コンテナの使用を避け、ユーザー名前空間(user namespace)を活用することで、LPEの被害範囲を局所化できます。
- AI支援型脆弱性発見の台頭: Copy FailはAIコード分析ツールによって発見されました。今後は人間の手による監査だけではカバーしきれない複雑なロジックバグが顕在化するため、カーネル更新サイクルの短縮と自動パッチ適用体制の構築が不可欠です。
補足:なぜ「Dirty Cow/Pipe」と違うのか
過去の著名なLinux LPE脆弱性との比較表です。
| 脆弱性 | 利用手法 | 安定性 | 検知難易度 |
|---|---|---|---|
| Dirty Cow (2016) | 条件竞争(Race Condition) | 低(クラッシュ率高) | 中 |
| Dirty Pipe (2022) | パイプバッファのオーバーフロー | 中 | 低 |
| Copy Fail (2026) | ページキャッシュの論理不整合 | 高(決定的動作) | 高 |
Copy Failは「成功率100%に近い」点が最大の脅威です。PoCが公開されてから数時間でボットネットやランサムウェアグループによる悪用が確認されており、パッチ適用の優先度は「緊急(Critical)」に位置付けられています。
参考リンク