【CVE-2026-31431】Linux カーネルのローカル権限昇格脆弱性「Copy Fail」の解説と対応方法

CVE・脆弱性情報

この記事の概要

CVSSスコア 7.8・CISA KEV掲載・悪用実績あり・PoC公開済み。緊急対応が必要です。

2026年5月1日、CISA(米国サイバーセキュリティ・インフラセキュリティ庁)は、Linuxカーネルに存在するローカル権限昇格(LPE)脆弱性 CVE-2026-31431(通称:Copy Fail)をKnown Exploited Vulnerabilities(KEV)カタログに追加しました。

本脆弱性は2017年以降にリリースされた事実上すべてのLinuxディストリビューションに影響し、非特権ローカルユーザーが732バイトのPythonスクリプトでroot権限を取得できます。
PoC(概念実証コード)はすでに公開されており、GoおよびRust実装も確認されています。
クラウド・コンテナ環境においては特に深刻なリスクをもたらします。

この脆弱性について

項目 内容
CVE-ID CVE-2026-31431
通称 Copy Fail
CVSSスコア 7.8(High)
脆弱性の種類 ローカル権限昇格(Local Privilege Escalation / LPE)
対象カーネルバージョン 2017年以降の全Linuxカーネル
影響ディストリビューション Ubuntu 24.04 LTS、Amazon Linux 2023、RHEL 10.1、SUSE 16 等
修正済みバージョン Linux kernel 6.18.22 / 6.19.12 / 7.0
公開日 2026年4月29日
CISA KEV追加日 2026年5月1日
FCEB対応期限 2026年5月15日

本脆弱性は、Theori と Xint のセキュリティ研究者によって発見・命名されました。
攻撃ベクターはローカル(AV:L)であり、低い権限・ユーザー操作不要で悪用可能です。
単独での遠隔悪用はできませんが、SSHアクセスや悪意あるCIジョブ、コンテナフットホールドと組み合わせることで高い脅威となります。

原因

本脆弱性の根本原因は、Linuxカーネルの暗号化サブシステム(algif_aead モジュール)に存在するロジックバグです。

algif_aead は、ユーザー空間プログラムがカーネルの暗号化機能を利用するためのインターフェース(AF_ALGソケット)を提供するモジュールです。
このモジュールに、2011年・2015年・2017年に行われた3つの個別には無害なコードコミットが組み合わさることで、意図しない動作が発生します。

具体的には、攻撃者はこのロジックバグを利用してカーネルのページキャッシュ(page cache)に4バイトの制御された書き込みを行うことができます。
ページキャッシュとは、ディスク上のファイルをメモリ上にキャッシュした領域で、実行バイナリの「メモリ上のイメージ」でもあります。

通常のページキャッシュの役割:
ディスク上の /usr/bin/su → ページキャッシュ → 実行時に参照

攻撃後のページキャッシュ:
algif_aead のバグ → ページキャッシュに4バイト書き込み → setuid バイナリ改ざん → 実行時にroot権限コードが走る

ページキャッシュはディスクを経由せずに実行バイナリを書き換えるため、ディスク上のファイルには変化が生じません
これにより検出が非常に困難です。Kaspersky は「このエクスプロイトは正規のシステムコールのみを使用するため、通常のアプリケーション動作と区別が難しい」と指摘しています。

影響範囲

影響を受ける環境

2017年以降のLinuxカーネルを搭載するすべての環境が対象です。
主要ディストリビューションでの影響は以下の通りです。

  • Ubuntu 24.04 LTS 以前
  • RHEL(Red Hat Enterprise Linux) 10.1 以前
  • Amazon Linux 2023
  • SUSE 16 以前
  • Debian 系各バージョン

攻撃が成立する条件

  • ローカルユーザーアクセス(非特権ユーザーで十分)
  • 対象カーネルバージョンが稼働していること
  • algif_aead モジュールがロードされていること(多くの環境でデフォルト有効)

コンテナ・クラウド環境への特別なリスク

Docker・LXC・Kubernetes はデフォルトでコンテナ内プロセスに AF_ALG サブシステムへのアクセスを許可しており、algif_aead モジュールがホストカーネルにロードされている場合に影響を受けます。

Wiz のセキュリティ研究者は以下のように警告しています。

「ページキャッシュは実行ファイルのメモリ上の表現であるため、これを改ざんすることでディスクに触れずに実行時バイナリを書き換えられる。これにより攻撃者は特権バイナリ(例:`/usr/bin/su`)にコードを注入し、root権限を得ることができる」

クラウドマルチテナント環境では、コンテナブレイクアウト・物理マシンの乗っ取り・横断移動(ラテラルムーブメント)のリスクが生じます。

対応策・回避策

1. カーネルアップデートの適用(推奨・最優先)

各ディストリビューションのパッケージマネージャーでカーネルをアップデートし、再起動してください。

Ubuntu / Debian 系:

sudo apt update
sudo apt upgrade linux-image-$(uname -r)
sudo reboot

RHEL / CentOS Stream / Amazon Linux 系:

sudo dnf update kernel
sudo reboot

SUSE / openSUSE 系:

sudo zypper update kernel-default
sudo reboot

2. algif_aead モジュールの無効化(暫定回避策)

パッチ適用が即時に行えない場合、algif_aead カーネルモジュールをブロックすることで脆弱性を緩和できます。

# モジュールのブロック設定
echo "install algif_aead /bin/true" | sudo tee /etc/modprobe.d/disable-algif-aead.conf

# 現在ロードされているモジュールを即時アンロード(エラーが出る場合は再起動で適用)
sudo modprobe -r algif_aead 2>/dev/null || true

**注意:** `algif_aead` を利用するアプリケーション(一部のVPN・暗号化ツール等)が動作しなくなる可能性があります。アンロード前に影響範囲を確認してください。

3. コンテナ環境での追加対策

Kubernetes 環境では、securityContextCAP_NET_RAW を削除し、seccompProfile を適用することでリスクを低減できます。

securityContext:
  capabilities:
    drop:
      - ALL
  seccompProfile:
    type: RuntimeDefault
  runAsNonRoot: true
  allowPrivilegeEscalation: false

Docker の場合は以下のように --security-opt を使用します。

docker run --security-opt seccomp=default.json --cap-drop=ALL <image>

確認方法

自環境が影響を受けるかを確認するには、まずカーネルバージョンを確認します。

uname -r

修正済みカーネル(6.18.22、6.19.12、7.0 以降)であればパッチ適用済みです。

algif_aead モジュールのロード状態も確認できます。

lsmod | grep algif_aead

出力がある場合、モジュールはロードされており、未パッチ環境では脆弱な状態です。

ディストリビューション固有のセキュリティアドバイザリ適用状態は以下で確認できます。

# RHEL / CentOS 系
rpm -q --changelog kernel | grep CVE-2026-31431

# Ubuntu 系
apt-cache show linux-image-$(uname -r) | grep CVE-2026-31431

まとめ

CVE-2026-31431(Copy Fail)は、2017年以降のすべてのLinuxカーネルに影響する深刻な権限昇格脆弱性です。
CISA KEVへの掲載・PoC公開・実際の悪用確認という三拍子が揃っており、パッチ未適用環境は早急な対応が必要です。
特にコンテナ・クラウド環境ではコンテナブレイクアウトのリスクもあるため、KubernetesクラスターやマネージドサービスのノードOSも含めてカーネルバージョンを確認し、アップデートを優先してください。
暫定措置として algif_aead モジュールの無効化も有効ですが、依存アプリケーションへの影響確認を忘れずに行ってください。

参考リンク

コメント