Linux権限昇格の脆弱性「Copy Fail」、特権なしユーザーがroot権限を取得可能に
新たに公開されたLinuxカーネルのローカル権限昇格(LPE)脆弱性「Copy Fail」(CVE-2026-31431)により、特権を持たないローカルユーザーがroot権限を取得できる可能性があります。2017年から存在するこの脆弱性は、カーネルの暗号化サブシステムにおける論理エラーに起因します。
サイバーセキュリティ研究者らが、特権を持たないローカルユーザーがroot権限を取得できる可能性のあるLinuxのローカル権限昇格(LPE)脆弱性の詳細を公開しました。
**CVE-2026-31431**(CVSSスコア:7.8)として追跡されているこの高深刻度の脆弱性は、**Xint.io**と**Theori**によって**Copy Fail**と名付けられました。
「特権を持たないローカルユーザーは、Linuxシステム上の読み取り可能な任意のファイルに対して、ページキャッシュに4バイトの制御されたデータを書き込み、それを利用してroot権限を取得できます」と、Xint.ioとTheoriの脆弱性研究チームは述べています([出典](https://xint.io/blog/copy-fail-linux-distributions))。
## 原因分析
根本的な原因は、Linuxカーネルの暗号化サブシステム、特に`algif_aead`モジュールにおける論理的な欠陥にあります。この問題は、2017年8月に行われた[ソースコードコミット](https://github.com/torvalds/linux/commit/72548b093ee3)で導入されました。
この脆弱性を悪用することに成功すると、わずか732バイトのPythonスクリプトでsetuidバイナリを編集し、2017年以降に出荷された**Amazon Linux**、**RHEL**、**SUSE**、**Ubuntu**を含む、実質的にすべてのLinuxディストリビューションでroot権限を取得できます。Pythonエクスプロイトは以下の4つのステップで構成されます。
* AF_ALGソケットを開き、authencesn(hmac(sha256),cbc(aes))にバインドする
* シェルコードペイロードを構築する
* カーネルの`/usr/bin/su`のキャッシュされたコピーへの書き込み操作をトリガーする
* execve("/usr/bin/su")を呼び出して、注入されたシェルコードをロードし、rootとして実行する
この脆弱性は単独ではリモートから悪用することはできませんが、ローカルの特権を持たないユーザーは、setuidバイナリのページキャッシュを破損させるだけでroot権限を取得できます。また、ページキャッシュはシステム上のすべてのプロセスで共有されるため、同じ手法はコンテナ間にも影響を及ぼします。

## ベンダーの対応
この開示を受けて、Linuxディストリビューションは独自の勧告を発表しました。
* [AlmaLinux](https://almalinux.org/blog/2026-05-01-cve-2026-31431-copy-fail/)
* [Amazon Linux](https://explore.alas.aws.amazon.com/CVE-2026-31431.html)
* [Arch Linux](https://security.archlinux.org/CVE-2026-31431)
* [CloudLinux](https://blog.cloudlinux.com/cve-2026-31431-copy-fail-mitigation-and-patches)
* [Debian](https://security-tracker.debian.org/tracker/CVE-2026-31431)
* [Gentoo](https://bugs.gentoo.org/show_bug.cgi?id=CVE-2026-31431)
* [Red Hat Enterprise Linux](https://access.redhat.com/security/cve/cve-2026-31431)
* [SUSE](https://www.suse.com/security/cve/CVE-2026-31431.html)
* [Ubuntu](https://ubuntu.com/security/CVE-2026-31431)
## 類似の脆弱性
Copy Failは、特権を持たないユーザーが読み取り専用ファイルのページキャッシュにデータをスプライスし、最終的に機密ファイルを上書きしてコード実行を達成できるLinuxカーネルのLPE脆弱性である[Dirty Pipe](https://thehackernews.com/2022/03/researchers-warn-of-linux-kernel-dirty.html)(CVE-2022-0847)と共通点があります。
**Bugcrowd**の**David Brumley**は次のように述べています。「Copy Failは、異なるサブシステムにおける、同じクラスのプリミティブです。`algif_aead`における2017年のインプレース最適化により、AF_ALGソケット経由で送信されたAEAD操作のカーネルの書き込み可能な宛先散布リストにページキャッシュページが含まれる可能性があります。特権を持たないプロセスは、そのソケットにsplice()をドライブし、所有していないファイルに対してページキャッシュへの小規模でターゲットを絞った書き込みを完了できます。」([出典](https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/))
この脆弱性が危険なのは、信頼性高くトリガーでき、競合状態やカーネルオフセットを必要としない点です。さらに、同じエクスプロイトがディストリビューション間で機能します。
Xint.ioの広報担当者はThe Hacker Newsに対し、「この脆弱性は、ポータブル、軽量、ステルス性、コンテナ間での動作という、ほぼ同時に現れることのない4つの特性を持っているためユニークです。これにより、どのようなユーザーアカウントでも、たとえ最も低い権限であっても、完全な管理者アクセス権限に昇格できます。また、サンドボックスのバイパスも可能にし、すべてのLinuxバージョンおよびディストリビューションで機能します。」と述べています。