Microsoftが「Copy Fail」に異例の警告
732バイトのPythonスクリプトで、Linuxの一般ユーザーが管理者権限を奪える。2017年から9年間潜んでいたこの欠陥は、人ではなくAIスキャナーがわずか1時間で見つけ出した。Microsoftまでもが警告に動いた理由がここにある。
Microsoftが「Linuxの脆弱性」を警告するという異例の事態
Linuxカーネルに、主要ディストリビューションすべてを直撃する権限昇格の欠陥が公開されている。識別子は CVE-2026-31431 、通称「Copy Fail」。CVSSスコアは7.8(HIGH)で、2026年4月29日にセキュリティ企業Theori(テオリ)が詳細を公開した。
異例なのは、Microsoftが自社のセキュリティブログでこの欠陥に関する詳細な警告を出している点だ。Microsoft Defender XDRに検出シグネチャを実装し、Microsoft自身がLinux運用者に対して「即時パッチ適用」を呼びかけている。米国土安全保障省のサイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)も2026年5月1日付で、悪用が確認された脆弱性をまとめる「KEVカタログ」に追加した。
Microsoftが他社OSの脆弱性にここまで踏み込むのは、Azureクラウド上の膨大なLinuxワークロードと、自社のWSL2(Windows Subsystem for Linux 2)が影響範囲に入っているからだ。MicrosoftはWSL2向けの修正カーネルを、2026年5月のPatch Tuesday(毎月第2火曜のセキュリティ更新)でWindows Updateを通じて配信すると表明した。
影響範囲:Ubuntu(24.04 LTSなど)、Amazon Linux 2023、Red Hat Enterprise Linux 10.1、SUSE 16、Debian、Fedora、Arch Linuxなど、2017年以降に出荷されたほぼすべての主要ディストリビューション。Ubuntu 26.04(Resolute)以降は影響を受けない。
732バイトのPythonで、何が起きるのか
Copy Failを動かすのに必要なのは、わずか732バイトのPythonスクリプト1本だ。コンパイルされたバイナリも、外部ライブラリも、特殊な準備も必要ない。一般ユーザー権限でこのスクリプトを実行すると、Linuxの最高管理者である root権限 が手に入る。
仕組みはこうだ。Linuxカーネルには、ファイルの内容を一度メモリに読み込んで再利用を高速化する「ページキャッシュ」という仕組みがある。ディスク上のファイルを開くと、その内容がページキャッシュに乗る。
Copy Failは、本来読み取り専用であるはずのページキャッシュを書き換える経路を作り出す。具体的には、カーネルの暗号機能をユーザーから使うインターフェース AF_ALG 、ファイルデータをコピーせず参照渡しするシステムコール splice() 、認証付き暗号のラッパーである authencesn の3つが組み合わさったときに発生する論理バグだ。
authencesn は内部処理の途中で出力バッファの末尾を「作業領域」として使う設計になっている。2017年に追加された最適化により、この出力バッファにページキャッシュのページが直接含まれるようになった。結果、4バイトの書き込みがそのままページキャッシュに反映される。
攻撃者は /usr/bin/su のようなsetuidバイナリのページキャッシュを書き換える。ディスク上のファイルそのものは無傷のため、ファイル整合性チェックには引っかからない。しかしカーネルがそのバイナリを実行する際にはメモリ上のキャッシュが参照されるため、改ざんされたコードが管理者権限で動く。
|
1
AF_ALGソケットを開く
カーネルの暗号機能を一般ユーザーから利用するインターフェース
▼
2
authencesnを指定してバインド
出力バッファの末尾4バイトを作業領域として使う暗号テンプレート
▼
3
splice()でページキャッシュを流し込む
setuidバイナリのキャッシュページがソケットに渡る
▼
4
in-place最適化が悪用される
2017年の最適化により、ページキャッシュが書き込み可能な領域に紛れ込む
▼
5
4バイトの書き込みでroot権限を取得
/usr/bin/suなどメモリ上のキャッシュが書き換わり、実行時に管理者権限が手に入る
|
Dirty PipeやDirty Cowとは何が違うのか
Linuxカーネルの権限昇格脆弱性は珍しいものではない。2016年の「Dirty Cow」(CVE-2016-5195)、2022年の 「Dirty Pipe」 (CVE-2022-0847)が記憶に新しい。
ただ、Copy Failはこれらと性質がはっきり違う。Dirty Cowはレースコンディション、つまり処理順序のわずかなズレを突く必要があり、攻撃が成功するまで何度もリトライが必要だった。Dirty Pipeはカーネル5.8以降にしか効かず、特定のパイプ操作のタイミング調整が必要だった。
Copy Failはレースコンディションを持たない、純粋な論理バグだ。同じ732バイトのスクリプトが、Ubuntu、Amazon Linux、RHEL、SUSEで一切の調整なしに動く。攻撃の確実性は研究者によれば100%とされる。
| 項目 | Dirty Cow (2016) |
Dirty Pipe (2022) |
Copy Fail (2026) |
|---|---|---|---|
| CVE | CVE-2016-5195 | CVE-2022-0847 | CVE-2026-31431 |
| バグの種類 | レース コンディション |
初期化漏れ | 論理バグ |
| 攻撃の信頼性 | 確率的 | 条件次第 | 100%再現 |
| 対象範囲 | カーネル全般 | 5.8以降 | 2017年以降 全主要distro |
| エクスプロイト | 複雑 | 中程度 | 732バイト Python |
| コンテナ脱出 | 限定的 | 可能 | 直接の脅威 |
つまり、過去の類似脆弱性が「腕利きのセキュリティ研究者でも一筋縄ではいかない」レベルだったのに対し、Copy Failは「コピーペーストで動くスクリプト」だ。シェルアカウントを持つユーザー、CIランナー上のジョブ、コンテナ内のプロセス、誰であってもroot権限まで届いてしまう。
コンテナの壁が崩れる
クラウド時代の防御線として機能してきた「コンテナによる隔離」も、Copy Failの前では弱体化する。コンテナはホストOSとカーネルを共有しており、ページキャッシュもホスト全体で共有されている。
ある1つのコンテナ内で実行されたCopy Failの書き込みが、ホスト上のページキャッシュに反映され、結果的に同じホストで動く別のコンテナの実行ファイルにも影響する可能性がある。これは技術的には「コンテナエスケープ」の原始的な構成要素であり、Kubernetesクラスタのノード侵害につながる経路だ。
セキュリティ企業Bugcrowdは「コンテナを防御の層として扱ってきたクラウドネイティブの姿勢に、Copy Failは現実的な圧力をかけている」と指摘している。マルチテナント環境でコンテナだけを隔離手段にしている構成は、microVMやgVisorのような「カーネル自体を分ける」境界を持たない限り、脅威モデルの再考が必要になる。
「AIが1時間で見つけた」という事実の意味
Copy Failの公開で技術コミュニティを最も驚かせたのは、脆弱性そのものよりも 発見方法 だった。
Theoriの研究者Taeyang Lee氏は、同社が開発するAI支援セキュリティ監査プラットフォーム「Xint Code」を使い、Linuxカーネルの暗号サブシステムをスキャンさせた。オペレーターからの入力は、要約すれば「Linuxのcrypto/サブシステムを調べてくれ。splice()がページキャッシュ参照を暗号サブシステムに渡せる点に注意して」という1つのプロンプトのみだった。
約1時間後、スキャンは完了した。Copy Failは出力された脆弱性候補の中で最も深刻なものだった。同じスキャンは他にも複数の高深刻度バグを発見しており、現在も協調開示の手続きが進んでいる。
この事実が業界に与えた衝撃は大きい。仮にこの脆弱性のクラスを記述して優秀なカーネル研究者に「ユニバーサルなLinuxローカル権限昇格、レースなし、ディストリビューション横断、コンテナエスケープ可」と発注したら、見積もりすら返ってこないだろう。グレーマーケットの脆弱性ブローカーCrowdfenseは、影響範囲の広さと信頼性を兼ね備えたエクスプロイトに対し、最大700万ドル(約11億円)規模の価格帯を設定している。
それを、Theoriのようなトップクラスのチームとはいえ、AIが1時間で当てた。Theoriは米国テキサス州オースティンを拠点とし、ソウルにも拠点を持つ攻撃的セキュリティ企業だ。カーネギーメロン大学(Carnegie Mellon University)出身者が中心となって2016年に設立し、DEF CON CTFの常連勢として、2025年に開催されたDARPAのAIサイバーチャレンジ決勝でも3位に入った。彼らが「ワンプロンプト、1時間」と言うとき、それは控えめな表現だと考えるのが妥当だ。
なぜ9年間も見つからなかったのか
問題のコードは2017年8月のコミット(72548b093ee3)で導入された。algif_aead のAEAD処理を「in-place(同じバッファを入出力で使う)」に切り替える最適化だった。当時はパフォーマンス向上のために合理的な変更に見えた。
crypto/ サブシステムは、暗号学的観点からは長年にわたり徹底的にレビューされてきた。サイドチャネル攻撃、IND-CPA安全性、パラメータ検証といった「暗号としての強度」は専門家の目にさらされている。
ただ、Copy Failは暗号の強度の話ではない。「メモリの来歴」と「カーネルがそこに書き込んでいいかどうか」という、別カテゴリの問い だ。9年間の見落としは、このタイプの問いを系統立てて投げかける道具がなかったことの裏返しでもある。
自分のシステムは大丈夫か
修正カーネルはLinuxメインラインで2026年4月1日にコミットされ(a664bf3d603d)、6.18.22、6.19.12、7.0で取り込み済みだ。各ディストリビューションも順次パッケージを公開している。
ただし、いわゆる「modprobeで algif_aead を無効化する」回避策には注意点がある。Red Hat系(RHEL、AlmaLinux、Rocky Linux、CloudLinux)では algif_aead がカーネルに組み込みでビルドされており、modprobe経由でのブロックは効かない。コマンドはエラーなく通るが、システムは保護されないままだ。
CloudLinuxは「コマンドが成功するため、保護されているという誤った安心感を与える」と警告し、grubbyを使ったinitcallのブラックリスト化を代替策として案内している。
| 項目 | Ubuntu / Debian系 |
RHEL系 | SUSE | Amazon Linux |
|---|---|---|---|---|
| 影響 | あり | あり | あり | あり |
| 対象バージョン | 24.04 LTS ほか |
RHEL 10.1 AlmaLinux等 |
SUSE 16 | 2023 |
| modprobe回避 | ○ | × | ○ | ○ |
| 回避が効かない理由 | — | カーネル 組み込み |
— | — |
| 推奨対応 | カーネル 更新 |
grubby または更新 |
カーネル 更新 |
カーネル 更新 |
| 影響外 | Ubuntu 26.04 (Resolute)以降 |
— | — | — |
Copy Failの優先パッチ対象は、マルチテナントのLinuxホスト、Kubernetesクラスタ、CIランナー、信頼できないユーザーコードを実行するクラウド環境だ。共有カーネル前提のシステム ほど、即時対応の優先度が上がる。シングルユーザーのデスクトップは優先度が下がるが、それでも放置はできない。
検証用には、Theori自身が公開しているPoCのほか、tgies/copy-fail-cが公開している非破壊的なチェッカー vulnerable.c がある。テストファイルのページキャッシュを自分で書き換えるだけで、ディスク上の何にも触れずに脆弱性の有無を判定できる。
一つの脆弱性が示す、これからの輪郭
Copy Fail単体は、適切なパッチを当てれば塞がる脆弱性だ。重要なのはむしろ、この発見が示す「これから起きること」のほうだろう。
Microsoftの月例パッチが2026年4月に過去最大規模に近づいた背景にも、AIによる脆弱性発見の急増があると、トレンドマイクロのZDIは指摘している。2012年から続いてきたInternet Bug Bounty(IBB)プログラムは、AIによる脆弱性報告の流入と修正能力の不均衡を理由に、新規受付を一時停止した。OSS-FuzzやMayhemといったファジングツールが長年やってきたことを、自然言語のプロンプト1つで動かせる時代に入った。
シェアードカーネルのマルチテナント前提、コンテナを唯一の隔離層とするアーキテクチャ、9年間放置されたコード。これらの「これまで安全だと思われていたもの」が、AIの発見能力の前で次々と再評価を迫られる局面が来ている。
Copy Failは1つの脆弱性であり、1つの知らせでもある。次のCopy Failは来週かもしれないし、すでに別の研究室で生まれているかもしれない。
参照元
- Xint - Copy Fail: 732 Bytes to Root on Every Major Linux Distribution
- CISA - CISA Adds One Known Exploited Vulnerability to Catalog
他参照