
驚くほどシンプルでありながら致命的な、Linux カーネルにおけるローカル権限昇格
CVE-2026-31431(通称 「Copy Fail」)は、Linux カーネルの暗号サブシステム、特に algif_aead インターフェースに影響を与えるローカル権限昇格の脆弱性です。
権限を持たないローカルユーザーがこの欠陥を悪用することで、システム上の任意の読み取り可能なファイル(setuid バイナリを含む)のページキャッシュに対して制御された 4 バイト書き込みを実行し、最終的にroot として任意のコードを実行することが可能になります。
この脆弱性は、2017 年にコミット 72548b093ee3("crypto: algif_aead - support in-place operations")によって導入されました。
カーネルは、AEAD リクエストが安全に in-place(req->src == req->dst)で実行できると誤って想定していました。しかし、通常のファイルから splice() を伴う AF_ALG ソケットを使用する場合、送信元と送信先のバッファはしばしば異なるメモリマッピングに存在します。
この不一致により、ページキャッシュ内で制御されたメモリ破壊を許す論理エラーが発生しました。
悪用は簡単です。約 10 行の Python PoC で、未パッチのシステムでは確実に root を取得できます。
| 指標 | 値 |
|---|---|
| CVSS v3 スコア | 7.8(高) |
| Red Hat 評価 | Important |
| Ubuntu 評価 |
a664bf3(または同等のバックポート)より前のすべてのカーネル推奨アクション: カーネルを直ちに更新してください。
公式の修正は、crypto/algif_aead.c における問題のある in-place 最適化を元に戻します。
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y
# RHEL / Fedora / Rocky / Alma
sudo dnf update kernel -y
# カーネルバージョンの確認
uname -r
一時的な回避策(即時のパッチ適用が不可能な場合):
AF_ALG ソケットの使用を制限する非常に小さく信頼性の高い Python の概念実証を含む、公開エクスプロイトがすでに利用可能です。
⚠️ 警告: 開示後にパッチを適用していないシステムは、非常に脆弱です。
安全を確保しましょう。早めにパッチを当て、頻繁にパッチを当ててください。
❤️ を込めて Linux コミュニティのために
| 高 |
| 攻撃タイプ | ローカル権限昇格 |