エグゼクティブ サマリー
2026年4月29日、研究者たちはCVE-2026-31431として追跡されている信頼性の高いローカル特権昇格(LPE)の脆弱性を公開しました。この脆弱性は通称Copy Failと呼ばれています。AI支援プロセスにより約1時間で発見されたこのロジックの欠陥により、権限のないローカル攻撃者は一貫して、2017年以降にリリースされた、事実上すべての主要なLinuxディストリビューションにわたり、rootアクセスに自身のアクセスを昇格することができます。
多くのカーネルの脆弱性とは異なり、このロジックの欠陥は決定論的、つまり競合状態や特定のカーネル オフセットに依存しません。732バイトのPythonスクリプト1つで、異なるLinuxディストリビューション間で何の修正も加えることなく、悪用を成功裏に行えます。
この脆弱性は、Linuxカーネルの暗号サブシステム、特にAF_ALGインターフェイス(ユーザー空間の暗号API)のalgif_aeadモジュールに起因するものです。この欠陥は単一のコーディング エラーではなく、3つの独立したアップデートの組み合わせによって生じました:
- 2011年に追加されたauthencesnアルゴリズム
- 2015年にAEADに対応したAF_ALGインターフェイス
- 2017年に導入された重大なインプレース最適化
暗号化処理中に、インプレース最適化のバグにより、アルゴリズムが宛先バッファを不適切に使用し、正当な領域を超えて制御された4バイトがシステムのファイル ページ キャッシュに直接書き込まれます。影響を受けるバージョンには、4.14から6.19.12までのLinuxカーネルが含まれます。
この脆弱性は、Ubuntu、Amazon Linux、Red Hat Enterprise Linux、Debian、SUSE、AlmaLinuxのようなような主流のディストリビューションを実行している数百万のシステムに影響を与えます。標準的なローカルアクセス権を持つ攻撃者は、この脆弱性を悪用して、ディスク上の物理ファイルが変更されないまま、整合性チェックの警告を出さずに特権実行ファイル(suやsudoなど)のメモリ内キャッシュを悪意を持って変更することができます。カーネルとそのページ キャッシュはノード全体で共有されているため、この欠陥によって攻撃者は以下のことが可能になります:
- Kubernetesコンテナから簡単に抜け出す
- マルチテナント ホストを乗っ取る
- 継続的インテグレーションと継続的デリバリー(CI/CD)パイプラインを侵害する
我々は、ベンダーが発行したカーネル アップデートを適用することで直ちにシステムにパッチを適用することを組織に強く推奨します。
パロアルトネットワークスのお客様は、以下の製品をご利用いただくことでCVE-2026-31431から組織を保護し、そのリスクを軽減することができます。
Linux FoundationはCVE-2026-314331の緩和策の詳細を含む勧告を掲載しました。パロアルトネットワークスでは、ベンダーが発行したカーネル アップデートを直ちに適用することを強く推奨しています。このオプションが実行不可能な場合は、暫定的な緩和策に従って、パッチが適用できるまで脆弱なモジュールを無効にすることを推奨します。
Unit 42インシデント レスポンス チームは、お客様のリスク軽減のために、侵害を受けた際の支援だけでなくプロアクティブな評価を提供しています。
| 議論された脆弱性 | CVE-2026-31431 |
CVE-2026-31431の詳細
CVE-2026-31431として追跡されている脆弱性(通称Copy Fail)は、Linuxカーネルの暗号サブシステム、特にAF_ALGインターフェイスのalgif_aeadモジュール内にある決定論的ロジックの欠陥です。
根本原因
この欠陥は、AEAD暗号化用に2017年にLinuxカーネルに導入されたインプレース最適化のバグ(コミット72548b093ee3)に起因するものです。この2017年のインプレース最適化は、特にreq->srcとreq->dstが組み合わされたスキャッターリストを指すようにしました。このため、splice()コールからのページ キャッシュ ページが、書き込み可能な宛先スキャッタ-リストに不適切に直接連鎖されていたのです。
暗号化処理中に、authencesnアルゴリズムは呼び出し元の宛先バッファをスクラッチ パッドとして不正に使用します。このため、制御された4バイトが正規の出力領域を越えて書き込まれ、連鎖したスキャッターリストの境界を越えてしまい、復元に失敗します。パッチ(コミットa664bf3d603d)は、モジュールをout-of-placeオ動作に戻し、呼び出し元と宛先のスキャッターリストを分離し、ページ キャッシュ ページが厳密に読み取り専用のソースに残るようにすることで、これを修正しました。
作用メカニズム
権限のない攻撃者は、AF_ALG ソケット インターフェイスとsplice()システムコールの相互作用を悪用することで、このメモリ ハンドリング エラーを悪用することができます。splice()がページキャッシュ ページを暗号サブシステムに渡す際、この脆弱性により、攻撃者は4バイトの上書きをそのままカーネルのファイル ページ キャッシュに向けることができます。
authencesnアルゴリズムはIPsecの拡張シーケンス番号(ESN)サポートに使用され、宛先バッファをスクラッチ パッドとして使用してシーケンス番号を並べ替えます。攻撃者は、sendmsg()コール時に、AAD(Associated Authenticated Data)の4~7バイト目にseqno_lo(シーケンス番号の下位半分)を指定することで、正確に4バイトの上書き値を制御します。
ページ キャッシュを利用した搾取
ページ キャッシュは、カーネルがバイナリをロードして実行する際に読み込む、ファイルの一時的なメモリ内コピーです。攻撃者は、4バイトの上書きを利用して、/usr/bin/su、sudo、passwdなど、読み取り可能なsetuid-rootバイナリのページ キャッシュを狙うことができます。
攻撃者は、スプライス オフセット、スプライス長、assoclen (関連する長さ)パラメータを操作することで、上書きが起こる場所を正確に制御します。これにより、/usr/bin/suのようなsetuidバイナリの.textセクションをターゲットにして、シェルコードを注入することができます。
- 権限昇格: バイナリのキャッシュされたコピーを変更すると、その実行コンテキストが変更されます。このバイナリが実行されると、攻撃者にスーパーユーザー(UID 0)の特権が与えられ、事実上カーネルの信頼境界が破られます。
- ステルス: この破損はすべてシステムのRAMで起こるため、ディスク上の物理ファイルはまったく変更されないままです。これは、従来の仮想ファイル システム(VFS)パスやファイル整合性の監視ツールをバイパスします。ページがメモリから削除されるか、システムが再起動されると、キャッシュはディスクからクリーンな状態でリロードされ、侵害の痕跡は残りません。
エクスプロイトの特徴
Copy Failが、Dirty CowやDirty PipeのようなこれまでのLinux LPE脆弱性と比べて、例外的に深刻なのは以下の特徴によるものです:
- 競合状態もオフセットもない: これは、競合状態ウィンドウへの勝利や、カーネル固有のメモリ オフセットの推測に依存しない、直線的なロジックの欠陥です。
- 100パーセントの信頼性: このエクスプロイトは決定論的で、最初の試行で成功します。
- 高い携帯性: このエクスプロイトは、標準ライブラリ(os、socket、zlib)のみに依存するスタンドアロンの732バイトのPythonスクリプトを使って実行できるため、コンパイルや外部の依存関係は不要です。この同じスクリプトは、2017年以降に出荷された事実上すべての主要なLinuxディストリビューションで変更されることなく動作します。
CVE-2026-31431に関する暫定ガイダンス
この脆弱性は、アップストリームのLinuxカーネル安定版ブランチにおいて、欠陥のある2017年の最適化(コミット a664bf3d603d)を元に戻すことで解決されています。
早急なパッチ適用が不可能な場合、管理者は影響を受けるalgif_aeadモジュールを無効にすることで、暫定的な緩和策を講じるべきです。これは、rootとして以下のコマンドを実行し、モジュールのロードをブロックしてカーネルから削除することで達成できます:
- echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
- rmmod algif_aead
Linux FoundationはCVE-2026-314331の緩和策の詳細を含む勧告を掲載しました。
Unit 42マネージド脅威ハンティング用クエリ
Unit 42のマネージド スレット ハンティング チームは、Cortex XDRと以下のXQLクエリで、顧客全体でこのCVEを悪用しようとする試みを追跡し続けています。Cortex XDRの顧客は、これらのXQLクエリで、悪用の兆候を検索することもできます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Title: CopyFail Detection via Non-root Launching su via Uncommon Parent Process // Description: Query looks for non-root users launching the switch user (su) process via a parent process other than the normally expected processes such as shells, sudo, or su itself. May identify false positives, yet works well for identification of potential CopyFail exploitation. // MITRE ATT&CK TTP ID: T1068 dataset = xdr_data | fields _time, agent_hostname, agent_os_type, event_type, event_sub_type, actor_effective_username, actor_effective_user_sid, actor_process_image_path, actor_process_image_name, actor_process_command_line, actor_process_image_sha256, action_process_image_name, action_process_image_command_line, action_process_user_sid | filter event_type = ENUM.PROCESS and event_sub_type = ENUM.PROCESS_START and agent_os_type = ENUM.AGENT_OS_LINUX and actor_effective_user_sid != "0" and ( (action_process_image_name = "su" and action_process_image_command_line in ("su", "/usr/bin/su")) or (action_process_image_name in ("bash", "sh") and action_process_image_command_line ~= "-c(?:\s--)?\ssu$") ) and actor_process_image_name not in ("bash", "sh", "zsh", "ksh", "sudo", "su") | comp earliest(_time) as first_seen, latest(_time) as last_seen, count() as execution_count, values(actor_effective_username) as actor_usernames, values(actor_process_image_path) as actor_image_paths, values(actor_process_command_line) as actor_cmd_lines, values(action_process_image_command_line) as action_cmd_lines, values(action_process_user_sid) as action_UIDs by agent_hostname, actor_process_image_name, actor_process_image_sha256 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Title: CopyFail Proof of Concept Code Execution // Description: Query looks for potential CopyFail proof of concept (POC) code execution via identifying potentially correlated curl and su process executions. May identify false positives, yet works well for identification of CopyFail POC provided by Xint.Code. // MITRE ATT&CK TTP ID: T1068 config case_sensitive = false | dataset = xdr_data | filter agent_os_type = ENUM.AGENT_OS_LINUX | filter event_type = ENUM.PROCESS and event_sub_type = ENUM.PROCESS_START | filter action_process_image_name in ("curl", "su") | bin _time span = 2m | filter action_process_image_command_line contains "copy.fail/exp" or (action_process_image_command_line = "su" or action_process_image_command_line ="/usr/bin/su") | fields _time, agent_id, event_id, agent_hostname, action_process_image_command_line, action_process_image_name, actor_process_instance_id | comp count() as event_count, values(agent_id) as agent_id, values(event_id) as event_id, values(action_process_image_name) as processes, values(action_process_image_command_line) as commands by agent_hostname, _time, actor_process_instance_id | filter processes contains "su" and processes contains "curl" |
結論
公開されている情報の量、使いやすさ、Copy Failエクスプロイトの有効性に基づいて、パロアルトネットワークスは、ベンダーが発行したカーネル アップデートを直ちに適用することを強く推奨します。このオプションが実行不可能な場合は、暫定的な緩和策に従って、パッチが適用できるまで脆弱なモジュールを無効にすることを推奨します。
信頼性の高い概念実証(PoC)スクリプトが公開済みであり、予備的なテスト活動が観察されていることを考えると、これは特に重要です。
パロアルトネットワークスのお客様は、以下に示す当社製品により保護されています。
CVE-2026-31431に関するパロアルトネットワークス製品の保護
パロアルトネットワークスのお客様は、さまざまな製品保護、アップデートを活用して、本脅威を特定し組織を保護いただけます。
情報漏えいの可能性がある場合、または緊急の案件がある場合はUnit 42インシデント レスポンス チームにアクセスするか電話でご連絡ください:
- 北米:フリーダイヤル: +1 (866) 486-4842 (866.4.UNIT42)
- 英国: +44.20.3743.3660
- ヨーロッパおよび中東: +31.20.299.3130
- アジア: +65.6983.8730
- 日本: +81.50.1790.0200
- オーストラリア: +61.2.4062.7950
- インド: 000 800 050 45107
- 韓国: +82.080.467.8774
Advanced Threat Preventionを搭載した次世代ファイアウォール
Advanced Threat Preventionを搭載した次世代ファイアウォールセキュリティ サブスクリプションを使用すると、次の脅威防御シグネチャを使用して、エクスプロイト スクリプトのネットワーク経由の送信をブロックできます:97176 - Linuxカーネル権限昇格の脆弱性。
Cortex XDRおよびXSIAM
コンテンツ アップデート2240-35441以降のLinux用Cortex XDRエージェントには、Copy Fail脆弱性に関連する既知のサンプルの検出および防止機能が含まれています。
Cortex XDRおよびXSIAMは、Advanced WildFire、エンドポイント保護モジュール(EPM)、Behavioral Threat Protection、およびローカル分析モジュールを含む多層保護アプローチを使用して、エクスプロイト前およびエクスプロイト後のアクティビティから保護します。
Cortex Cloud
Cortex Cloudエンドポイントプロテクションは、この記事で述べられている脅威から組織を保護するのに役立ちます。Cortex Cloud 2.1は、行動分析およびAI対応分析を使用して、攻撃者がコンテナや仮想マシンを含むLinuxエンドポイントを標的とするタイミングを検出し、悪意のある操作を防止することができます。さらに、対象となるエンドポイントに関連するクラウド プラットフォームのIAMポリシーが悪用されていることを検出し、アセットがこうした脅威にさらされやすくなっている場合にチームに警告を発することができます。
2026年5月6日午後3時15分(PT)更新。Cortex XDRとXSIAMのカバレッジを拡大し、高度な脅威防御機能を備えた次世代ファイアウォールを追加。
2026年5月7日午後2時00分(PY)更新。Cortex XDRのコンテンツ バージョンを変更。