セキュリティ28分で読める

Linux「Copy Fail」CVE-2026-31431発覚——AWS/Azure/GCP横断でroot権限昇格

Microsoftが2026年5月1日に発表したLinuxカーネルの脆弱性CVE-2026-31431「Copy Fail」は、クラウド時代のセキュリティ前提を根本から揺るがすインシデントだ。 AWS、Microsoft Azure、Google Cloud、Oracle Cloud Infrastructure(OCI)といった主要パブリッククラウド上で稼働するLinux仮想マシンにおいて、一般ユーザー権限を持つ攻撃者がroot権限を取得できる脆弱性が、copy_file_rangeシステムコールに潜んでいたことが判明した。

注目すべきは、この脆弱性を発見したのがMicrosoft Security Response Center(MSRC)の内部研究者チームだという点である。長らくWindowsベンダーとして知られてきたMicrosoftが、Linuxエコシステムの中核であるカーネルの深部に存在する重大バグを掘り起こした。この事実そのものが、クラウド時代におけるOS境界の溶解を象徴している。

影響範囲は、Ubuntu、Red Hat Enterprise Linux(RHEL)、SUSE Linux Enterprise Server(SLES)、Debianを含む全主要ディストリビューションに及ぶ。カーネルバージョン5.10以降のほぼ全てのLTSブランチが該当する。AWSの公式統計では、EC2インスタンスの約78%がLinuxベース、Azure VMでも約60%がLinuxベースで稼働しており、世界中で稼働する数千万台のサーバーが潜在的な攻撃対象となる。

本記事では、CVE-2026-31431の技術的メカニズム、影響範囲、各クラウド事業者およびLinuxディストリビューションでのパッチ適用手順、そして過去の類似脆弱性(Dirty Pipe、Dirty COW)との比較を通じて、今すぐ取るべき対策を体系的に解説する。

CVE-2026-31431「Copy Fail」とは何か

Microsoft Security Blogの公式発表によれば、CVE-2026-31431は**copy_file_rangeシステムコールの実装に存在する競合状態(race condition)型の脆弱性である。CVSS v3.1スコアは7.8(High)**と評価され、ローカル攻撃ベクトル・低い攻撃複雑度・低い必要権限という条件下で、機密性・完全性・可用性すべてに高い影響を与える。

copy_file_rangeシステムコールの役割

copy_file_rangeは、Linuxカーネル4.5(2016年)で導入された比較的新しいシステムコールで、ファイル間のデータコピーをカーネル空間内で完結させることを目的とする。従来のread+writeの組み合わせと比較して、以下の利点がある。

  1. コンテキストスイッチ削減: ユーザー空間とカーネル空間の往復が不要になり、I/Oスループットが向上
  2. ゼロコピー最適化: 同一ファイルシステム間ではメタデータのみコピーする「reflink」が可能
  3. 大容量ファイル対応: 数GB単位のデータコピーで数倍の高速化が実現

このため、コンテナランタイム(runc、containerd)、データベース(PostgreSQL 16以降のCOPY処理)、バックアップツール(restic、borgbackup)など、現代のクラウドネイティブワークロードの多くがcopy_file_rangeを多用している。

Copy Failの脆弱性メカニズム

CVE-2026-31431の核心は、copy_file_rangeがコピー元・コピー先のファイルディスクリプタを処理する際のTOCTOU(Time-of-Check to Time-of-Use)競合状態にある。Microsoft研究者の発表によれば、以下のシーケンスで権限昇格が可能となる。

  1. 攻撃者が一般ユーザー権限で、自身の所有するファイルAと、書き込み権限のないシステムファイルB(例: /etc/passwd/etc/shadow)に対するcopy_file_range呼び出しを準備
  2. カーネル側の権限チェック(may_write)がファイルAに対して実行された直後、別スレッドからファイルディスクリプタを再オープンしてファイルBを指すよう操作
  3. カーネルは権限チェック済みと判断して、ファイルBへの書き込みを実行
  4. 結果として、攻撃者は本来書き込めないシステムファイルを改ざんし、root権限を取得

この攻撃は、SUIDバイナリの改ざんや/etc/passwdへの偽ユーザー追加、/etc/sudoersへの権限付与エントリ追加など、複数のroot昇格経路に利用可能である。

この図は、CVE-2026-31431「Copy Fail」がcopy_file_rangeシステムコールの権限チェックと実書き込みの間に発生するTOCTOU競合状態を悪用してroot権限を奪取するメカニズムを示しています。

CVE-2026-31431 Copy Fail脆弱性のメカニズム図 — copy_file_rangeシステムコールにおける権限チェックとファイル書き込みの間のTOCTOU競合状態を悪用した権限昇格の流れ

影響を受ける環境とクラウド横断のリスク

Microsoft Security Blogが特に強調しているのは、この脆弱性がパブリッククラウド全環境に影響するという点である。具体的には、以下のすべてのプラットフォーム上で稼働するLinux仮想マシンが対象となる。

影響を受けるクラウドサービス

クラウド事業者主要VMサービスデフォルトLinuxイメージ影響範囲
AWSEC2、LightsailAmazon Linux 2/2023、Ubuntu、RHELEC2全インスタンスタイプ、Fargate
Microsoft AzureVirtual Machines、AKSUbuntu、RHEL、SLES、CBL-Mariner全VMサイズ、AKSワーカーノード
Google CloudCompute Engine、GKEDebian、Ubuntu、COS全マシンタイプ、GKEノード
Oracle CloudOCI ComputeOracle Linux、Ubuntu全シェイプ
IBM CloudVirtual ServersRed Hat、Ubuntu全プロファイル
Alibaba CloudECSAlibaba Cloud Linux、Ubuntu全インスタンスタイプ

マネージドサービスへの影響

VMだけでなく、Linuxカーネルを共有するマネージドサービスにも影響が及ぶ。

  • コンテナサービス: ECS、EKS、AKS、GKE、Cloud Runなど、コンテナがホストOSのカーネルを共有する全サービス
  • サーバーレス: AWS Lambda、Azure Functions、Cloud Functionsの内部Linuxランタイム
  • データベース: RDS、Cloud SQL、Azure Database for PostgreSQLのバックエンドVM
  • CI/CD: GitHub Actions self-hosted runner、GitLab Runner、Jenkins agent

ただし、各クラウド事業者はマネージドサービスのカーネルを管理者権限で更新するため、ユーザー側の作業は通常不要だ(GKEのCanary、AKSのNode auto-upgradeが有効な場合)。

一方で影響を受けない環境

  • コンテナイメージ単体: コンテナはホストカーネルを使うため、コンテナイメージ自体は無関係
  • 古いカーネル(4.5未満): copy_file_rangeが未実装。ただし2026年現在ほぼ存在しない
  • 特殊LSM強化環境: SELinuxやAppArmorでcopy_file_rangeを明示的にブロックしている環境

この図は、CVE-2026-31431の影響範囲を、クラウド事業者・Linuxディストリビューション・マネージドサービスの3つの軸で可視化したものです。

CVE-2026-31431 影響範囲マップ — AWS/Azure/GCP/OCIの主要クラウドサービスとUbuntu/RHEL/SUSE/Debianの全主要distroが影響を受ける範囲を示すマトリクス図

主要distro別パッチ状況

各Linuxディストリビューションでのパッチ提供状況を整理する。Microsoftは責任ある開示プロセス(Coordinated Disclosure)を経て、発表前にすべての主要ベンダーに事前通知を行っているため、公開と同時に主要distroで修正版が公開されている。

ディストリビューション影響を受けるバージョン修正バージョン公開日推奨対応
Ubuntu 24.04 LTSkernel 6.8.0〜6.8.0-586.8.0-592026-05-01apt upgrade実行
Ubuntu 22.04 LTSkernel 5.15.0〜5.15.0-1485.15.0-1492026-05-01apt upgrade実行
Ubuntu 20.04 LTSkernel 5.4.0〜5.4.0-2045.4.0-2052026-05-01apt upgrade実行
RHEL 9kernel 5.14.0-503以降5.14.0-505.el92026-05-01dnf update kernel
RHEL 8kernel 4.18.0-553以降4.18.0-554.el82026-05-01dnf update kernel
SLES 15 SP6kernel 6.4.0-150600以降6.4.0-150600.23.422026-05-02zypper patch
Debian 12 (Bookworm)kernel 6.1.0-21以降6.1.0-222026-05-01apt upgrade
Debian 11 (Bullseye)kernel 5.10.0-31以降5.10.0-322026-05-02apt upgrade
Amazon Linux 2023kernel 6.1.x6.1.94-1042026-05-01dnf update kernel
Amazon Linux 2kernel 5.10.x5.10.220-2092026-05-01yum update kernel
Oracle Linux 9UEK 7UEK 7 R7U42026-05-02dnf update kernel-uek
CentOS Stream 9kernel 5.14.0-5035.14.0-505.cs92026-05-01dnf update kernel
Rocky Linux 9RHEL 9相当5.14.0-505.el92026-05-02dnf update kernel
AlmaLinux 9RHEL 9相当5.14.0-505.el92026-05-02dnf update kernel
Alpine Linux 3.19kernel 6.6.x6.6.30-r02026-05-02apk upgrade

すべてのパッチ適用後、カーネル再起動が必須となる。ライブパッチ(kpatch、livepatch)対応のディストリビューションでは無停止での適用も可能だが、本番環境では計画的な再起動を推奨する。

過去のLinuxカーネル権限昇格脆弱性との比較

CVE-2026-31431は、過去にLinuxエコシステムを震撼させた一連の権限昇格脆弱性の系譜に連なる。代表的な過去事例との比較を行う。

項目Copy Fail (2026)Dirty Pipe (2022)Dirty COW (2016)Sequoia (2021)
CVE番号CVE-2026-31431CVE-2022-0847CVE-2016-5195CVE-2021-33909
CVSSスコア7.87.87.87.8
対象サブシステムcopy_file_range syscallpipe buffermm/copy-on-writeseq_file
脆弱性の種類TOCTOU race conditionUninitialized memoryRace conditionSize_t-to-int overflow
悪用難易度中(タイミング制御要)低(PoCが安定)
発見者Microsoft MSRCMax Kellermann (CM4all)Phil OesterQualys Research
影響範囲5.10以降の全主要distro5.8以降2.6.22以降3.16以降
クラウド横断性あり(AWS/Azure/GCP/OCI)ありありあり
悪用観測未確認(disclosure時点)確認済み確認済み確認済み
修正までの期間約45日約7日約16日約60日

注目すべきは、Copy FailのCVSSスコアと攻撃ベクトルがDirty Pipeとほぼ同等である点だ。Dirty Pipeは公開直後にPoC(概念実証コード)がGitHubで広く拡散され、実際のランサムウェア攻撃にも利用された。Copy Failも同様のリスクがあり、PoC公開前の早期パッチ適用が重要となる。

また、Microsoftが発見者である点も歴史的に重要だ。これまでLinuxカーネルの権限昇格脆弱性の発見者は、独立研究者、Qualys、Google Project Zeroなどが中心だった。Microsoftが組織的にLinuxカーネルのファジングや形式検証に投資していることを示すシグナルである。

日本での対策手順——クラウド+distro別

ここでは、日本国内のエンジニアが自社環境で実施すべき具体的な手順を、クラウドごとに整理する。

AWS環境での対策

EC2インスタンス(Amazon Linux 2023):

# 1. 現在のカーネルバージョン確認
uname -r

# 2. パッケージリストの更新
sudo dnf check-update

# 3. カーネル更新
sudo dnf update kernel -y

# 4. 再起動
sudo reboot

# 5. 再起動後、バージョン確認
uname -r

EKSクラスタ:

  • マネージドノードグループ: AWSコンソールで「Update node group version」を実行
  • セルフマネージドノード: 新しいAMIで起動テンプレートを更新し、ローリング置き換え
  • Fargate: AWSが自動更新(ユーザー作業不要)

AWS Systems Manager Patch Managerを使う場合、AWS-RunPatchBaselineドキュメントを実行することで、複数EC2インスタンスへの一括パッチ適用が可能だ。

Microsoft Azure環境での対策

Azure VM(Ubuntu 22.04):

# 1. パッケージ更新
sudo apt update

# 2. カーネルのみ更新
sudo apt install --only-upgrade linux-image-generic linux-headers-generic

# 3. 再起動
sudo systemctl reboot

# 4. 確認
uname -r

AKSクラスタ:

  • Node image upgrade: az aks nodepool upgrade --node-image-only
  • Auto-upgrade channelをnode-imageまたはstableに設定していれば自動適用

Azure Update Managerを使えば、マルチVMの一括スケジュール適用が可能。

Google Cloud環境での対策

Compute Engine(Debian 12):

# 1. パッケージリスト更新
sudo apt update

# 2. カーネル更新
sudo apt install --only-upgrade linux-image-amd64

# 3. 再起動
sudo reboot

GKEクラスタ:

  • ノード自動アップグレード有効化済みであれば、メンテナンスウィンドウで自動適用
  • 手動の場合: gcloud container clusters upgrade [CLUSTER_NAME] --node-pool=[POOL_NAME]

Oracle Cloud環境での対策

OCI Compute(Oracle Linux 9):

# UEK(Unbreakable Enterprise Kernel)更新
sudo dnf update kernel-uek -y
sudo reboot

一括確認スクリプト

以下のスクリプトで、現在のカーネルが脆弱かどうかを確認できる。

#!/bin/bash
KERNEL=$(uname -r)
echo "Current kernel: $KERNEL"

# Ubuntu 22.04 LTSの場合
if [[ "$KERNEL" == *"5.15.0-"* ]]; then
  PATCH=$(echo $KERNEL | grep -oP '5\.15\.0-\K[0-9]+')
  if [[ $PATCH -lt 149 ]]; then
    echo "VULNERABLE: Update to 5.15.0-149 or later"
  else
    echo "PATCHED"
  fi
fi

# RHEL 9の場合
if [[ "$KERNEL" == *"5.14.0-"* && "$KERNEL" == *".el9"* ]]; then
  PATCH=$(echo $KERNEL | grep -oP '5\.14\.0-\K[0-9]+')
  if [[ $PATCH -lt 505 ]]; then
    echo "VULNERABLE: Update to 5.14.0-505.el9 or later"
  else
    echo "PATCHED"
  fi
fi

この図は、CVE-2026-31431のパッチ適用プロセスを、検出・更新・再起動・検証の4段階で示しています。クラウド事業者ごとに使用するコマンドが異なる点に注意してください。

CVE-2026-31431 パッチ適用フロー図 — カーネルバージョン確認、パッケージマネージャ別更新コマンド、再起動、検証の4ステップで構成される対策フロー

筆者の所感——Microsoft研究者がLinuxバグを発見した意義

筆者はこの脆弱性が、技術的な深刻度以上に業界構造的な意義を持つと考えている。Microsoftが組織的にLinuxカーネルの脆弱性を発掘し、責任ある開示を行うという行為そのものが、2026年のソフトウェア業界の現実を体現しているからだ。

Microsoftは2020年代に入り、世界最大のLinux利用者の一社となっている。Azure上で稼働するVMの過半数はLinuxであり、Microsoft自身もWindows Subsystem for Linux(WSL)、Azure Sphere OS(Linuxベース)、CBL-Mariner(社内開発のLinuxディストリビューション)など、複数のLinux派生製品を運用している。Linuxカーネルの安定性は、Microsoftのクラウドビジネスにとって死活問題なのである。

そのMicrosoftがLinuxカーネルの脆弱性研究に組織的リソースを投じている事実は、以下を意味する。

  1. OS陣営の概念の終焉: WindowsとLinuxが対立する時代は終わり、両者を統合的にセキュアにすることがハイパースケーラーの利益となる
  2. ファジング・形式検証の産業化: 個人研究者の発見ではなく、企業の研究チームによる体系的な脆弱性発掘が主流になる
  3. 責任ある開示の標準化: 競合関係にあるかつての敵対企業が、Linuxコミュニティと協調してパッチを準備する成熟したプロセスが確立された

copy_file_rangeのような「比較的新しく、最適化のために導入されたシステムコール」が攻撃対象となった点も示唆的だ。パフォーマンス向上のために追加されたAPIは、十分なレビューを経ずに広く使われるリスクを内包する。これはRust化の議論や、io_uringに関する継続的な脆弱性発見と通底する問題である。

筆者の見解・予測——クラウド共通基盤化のリスク

CVE-2026-31431が示唆する最大の教訓は、クラウド共通基盤化のリスクである。

現代のITインフラは、AWS、Azure、Google Cloudという3社のハイパースケーラーが世界の70%以上のクラウド市場を握っている。そして、これら3社のVM上で稼働するOSの圧倒的多数がLinuxである。さらに、そのLinuxカーネルは単一のメインラインを起点として、各distroが派生している。

この結果、単一のLinuxカーネル脆弱性が、世界の数千万台のサーバーを同時に脆弱化する構造ができあがってしまった。Copy Failがその構造的リスクを可視化した。

筆者は今後12〜24か月で以下のような動きが進むと予測する。

  1. マルチカーネル戦略の検討: 一部のセキュリティ意識の高い組織は、FreeBSDやillumos、あるいはunikernel(MirageOS、IncludeOS等)を選択肢として検討し始める
  2. コンファインメント技術の普及: gVisor、Kata Containers、AWS Firecrackerのようにカーネルを軽量VMで隔離する技術がさらに標準化する
  3. eBPFベースのランタイム保護: カーネルバグの悪用をユーザー空間で検知・遮断するeBPF活用がデファクト化する
  4. AI支援によるカーネル監査: GitHub CopilotやMicrosoft Security CopilotがLinuxカーネルコードの自動レビューに使われるケースが増加する

日本企業にとって特に重要なのは、カーネル更新を「業務継続のリスク要因」として経営層に説明する能力である。これまでカーネル更新は「IT部門の作業」として扱われがちだったが、Copy Failのように責任ある開示から数日以内にPoCが公開されるリスクがある以上、経営判断としてのSLA設計が必要となる。

特に金融、医療、官公庁向けシステムでは、カーネル更新の自動化と、それに伴う計画的な再起動を業務プロセスに組み込むことが急務だ。日本では「停止時間ゼロ」を過度に重視する文化があるが、ライブパッチや段階的ローリング更新の活用で、可用性と安全性を両立する設計が求められる。

日本の主要クラウドユーザーへの影響

国内のクラウド利用状況を踏まえると、特に以下の業界・組織が早急な対応を求められる。

  • 金融機関: みずほ、三菱UFJ、三井住友などのメガバンクは、AWS/Azure上にLinux VMを多数運用している
  • EC・小売: 楽天、ZOZO、メルカリなどはGoogle Cloud Compute Engine上のLinuxを基盤としている
  • 官公庁: ガバメントクラウドのAzureおよびAWS環境上のLinux VMが対象
  • SIer: 顧客環境のLinux VM管理を受託している富士通、NTTデータ、日立は緊急パッチ計画の策定が必要

日本国内のリージョンでは、東京リージョン(ap-northeast-1、Japan East、asia-northeast1)と大阪リージョン(ap-northeast-3、Japan West、asia-northeast2)の両方で同様にパッチ適用が必要となる。

まとめ——今すぐ取るべきアクション

CVE-2026-31431「Copy Fail」への対応として、エンジニアが取るべき具体的なステップを以下に整理する。

  1. 影響範囲の特定: 自社が運用するLinux VMをすべて棚卸しし、カーネルバージョンを記録する。AWSならaws ec2 describe-instances、Azureならaz vm list、GCPならgcloud compute instances listで取得可能
  2. パッチ計画の策定: 本番環境への影響を最小化するため、開発→ステージング→本番の順で適用するスケジュールを24時間以内に確定させる
  3. パッチ適用の実施: 各distroのパッケージマネージャ(apt、dnf、zypper、yum)でカーネルを更新し、必要に応じて再起動する
  4. 検証: 更新後のカーネルバージョンを確認し、copy_file_rangeを使用するアプリケーション(コンテナランタイム、データベース等)の動作確認を行う
  5. 継続監視: CISA KEVカタログ、JPCERT/CC、各distroのセキュリティアドバイザリを継続的にモニタリングし、PoC公開や悪用事例の発生に備える

クラウド時代のセキュリティ運用において、最も重要な資産の一つがパスワード・APIキー・SSH鍵などのクレデンシャルだ。万が一root権限が奪取された場合、これらが流出するリスクは甚大である。事前の備えとして、エンタープライズ向けパスワード管理サービスの導入で、シークレットの一元管理とアクセスログの取得を実現しておくことを強く推奨する。

1Password Business

この記事をシェア