やることが多そうで実はシンプル。CopyFail/DirtyFragのAWS影響確認と対応について
お久しぶりです、札幌のヨシエです。
年々、一年のスピードが早くなっていることを痛感しており、春っぽいと思ってた季節がいつの間にか夏のように暑くなってきました。皆様熱中症には気をつけましょう。
今回はタイトルで挙げている2つの脆弱性グループ(CopyFail・DirtyFrag)が気になったので調査、整理してみました。
対応方法に注力した内容にしたつもりですが、脆弱性のロジックに関する情報についても参考URLを付与しているので合わせてお役に立ててればと思います。
どういった脆弱性が見つかったのか?
今回取り上げた脆弱性はLinuxサーバーのカーネルモジュールにおいて一般ユーザーがroot権限を奪うことが出来るというもので、ページキャッシュを使用することでサーバー内のデータに対して直接上書きを行い、非特権ユーザーからrootユーザーを利用するといったものです。
下表は確認された脆弱性とCVE番号をまとめたものです。
| グループ名 | CVE番号 | 関係するモジュール | CVSS | 備考 |
|---|---|---|---|---|
| Copy Fail | CVE-2026-31431 | algif_aead | 7.8(HIGH) | カーネルに組み込まれている暗号化用APIモジュール |
| Dirty Frag | CVE-2026-43284 | esp4 / esp6 | 8.8(HIGH) | IPsec VPNの処理を担っているモジュール,Linuxサーバー上でIPsecを動作している場合、このモジュールへの操作によってIPsec通信に影響が出る可能性がある |
| Dirty Frag | CVE-2026-43500 | rxrpc | 8.8(HIGH) | AFS(分散ファイルシステム)通信プロトコルを担うモジュール。AFSクライアントを利用している環境のみ影響。一般的なクラウド環境での使用は極めてまれと考えられます。 |
補足: esp4/esp6 に関連する脆弱性としては、別途 Fragnesia(CVE-2026-46300) も存在します。ただし Dirty Frag とは別のカーネルパッチが必要であること、および一般的なクラウド環境での影響度は低いと考えられるため、本記事では割愛します。詳細は AWS Security Bulletin 2026-029 をご参照ください。
Dirty Frag(CVE-2026-43284)は IPsec VPN の処理を担う esp4/esp6 モジュールが対象であることから、VPN を利用している環境では影響範囲の確認が必要です。
AWS 上でも VPN 関連サービスは複数存在しますが、Linux カーネルを直接操作しているのはお客様自身が管理する EC2 ベースの構成のみとなります。下表は主な AWS VPN 構成における対応要否の参考情報です。
| 構成 | 対応要否 | 理由 |
|---|---|---|
| AWS Site-to-Site VPN の VGW / TGW 側 | 不要 | AWS マネージドサービスのため AWS 責任範囲,ユーザー対応不要と考えられます。 |
| AWS Client VPN(エンドポイント側) | 不要 | AWS マネージドサービスのため AWS 責任範囲,ユーザー対応不要と考えられます。 |
| ハードウェア VPN アプライアンス | 要確認 | Linux カーネルを使用していないアプライアンスであれば影響度は低いと考えられますが、ベンダーへの問い合わせをおすすめします。 |
| EC2 上で稼働するソフトウェア VPN(strongSwan / Libreswan / Openswan 等) | 要対応 | Linux カーネルが IPsec 処理を直接担うため、カーネルパッチの適用が必要と考えられます。 |
各脆弱性の対応方針
暫定対応について
今回の脆弱性は関連モジュールが明確なので、対象モジュールを使用しないことで回避することが可能と考えられます。
対象モジュールをブラックリストへ追加することでサーバー再起動後もロードが行われないことから暫定対応になりえると考えられます。
恒久対応
-
本件については既に各ベンダーにて修正済みカーネルが展開されております
-
各サーバーに対してカーネルアップデートを実施することで恒久対応が完了すると考えられます
-
複数台のサーバーやサービス提供中のLinuxサーバーを運用されている方向けとして脆弱性の有無について確認する場合はAWS Inspector、調査コマンド実行や複数台サーバーへの一括コマンド実行はAWS Systems Managerの導入をおすすめします。
-
以下はAWS公式情報で書かれている脆弱性情報のリンク先となります
今回の脆弱性影響が発生する可能性があるAWSサービスを整理しました。
| AWSサービス | Why(なぜ対応が必要か) | What(何をするか) | How(どうやって) | 対応要否 |
|---|---|---|---|---|
| EC2 | ホストOSのカーネルを直接使用するため、脆弱なカーネルがそのまま攻撃対象になる | カーネルパッチ適用またはパッチ済みAMIへの入れ替え | SSM Patch Manager / Run Command / ASGインスタンスリフレッシュ | 必要 |
| Elastic Beanstalk | 内部的にEC2インスタンスを使用するため、ホストカーネルの脆弱性を受ける | 環境内EC2インスタンスのカーネルアップデート | Beanstalk環境のローリング更新またはインスタンス置換 | 必要 |
| Amazon Lightsail | EC2ベースのサービスのため、ホストカーネルの脆弱性を受ける | インスタンスのカーネルアップデートと再起動 | SSH接続してカーネル更新コマンドを実行 | 必要 |
| ECS(EC2起動タイプ) | Container InstanceがEC2のホストカーネルを使用するため影響を受ける | ECS Optimized AMIの更新、Container Instanceの置換 | Container Instanceドレイン後、新AMIで置換(ASGリフレッシュ) | 必要 |
| ECS(Fargate) | ホストOSはAWSが管理・自動更新するため、ユーザーが対応する必要はない | 対応不要 | — | 不要 |
| EKS(Managed / Self-managed Node Group) | Worker NodeがEC2インスタンスのホストカーネルを使用するため影響を受ける | EKS Optimized AMIへのノードグループ更新 | eksctl upgrade nodegroup / AWS Console / kubectl drain & replace | 必要 |
| EKS(Fargate Profile) | ホストOSはAWSが管理するため、ユーザーが対応する必要はない | 対応不要 | — | 不要 |
| AWS Lambda | 実行環境はAWSが管理するが、カスタムコンテナイメージを使用する場合はベースOSの確認が推奨される | 標準ランタイムは対応不要。カスタムコンテナイメージ使用時のみベースOSのパッケージ最新化を確認 | Dockerfile更新 & イメージ再ビルド & 再デプロイ | 場合によっては必要 |
| AWS App Runner | ホストOSはAWSが管理するため、ユーザーが対応する必要はない | 対応不要 | — | 不要 |
| AWS Batch(EC2 / Spot) | EC2インスタンス上で実行されるため、ホストカーネルの脆弱性を受ける | コンピューティング環境のAMI更新(AWSマネージドの場合は自動対応) | カスタムAMI使用時は最新パッチ済みAMIへ更新;マネージドは自動 | 場合によっては必要 |
| AWS Batch(Fargate) | ホストOSはAWSが管理するため影響なし | 対応不要 | — | 不要 |
サーバー状態の確認方法(EC2インスタンス対象)
対応例としてパッチ適用前のAmazonLinux2とAmazonLinux2023のAMIIDを利用し、あえて脆弱性が残っている状態から対応までの内容を記載します。
①サーバーごとの確認方法
カーネルバージョンとOS確認
# OSディストリビューションとバージョンの確認
cat /etc/os-release
# カーネルバージョン確認
uname -r
脆弱モジュールのロード状況確認
# 対象モジュールが現在ロードされているか確認
lsmod | grep -E 'algif_aead|^esp4 |^esp6 |rxrpc'
メッセージ出力がない場合、該当モジュールがロードされていない状況であり、
メッセージ出力がある場合、該当モジュールがロード済みです。
ブラックリスト適用状況の確認
# 既存の緩和策適用確認
grep -r -E 'algif_aead|esp4|esp6|rxrpc' /etc/modprobe.d/
②AWSサービスを利用した確認方法
②-1 AWS Systems Managerを使った調査
aws ssm send-command \
--document-name "AWS-RunShellScript" \
--targets "Key=tag:Environment,Values=xxx" \
--parameters 'commands=[
"echo === OS Version ===",
"cat /etc/os-release | grep -E \"^NAME|^VERSION\"",
"echo === Kernel Version ===",
"uname -r",
"echo === Vulnerable Modules Loaded ===",
"lsmod | grep -E \"algif_aead|^esp4 |^esp6 |rxrpc\" || echo NONE",
"echo === Blacklist Status ===",
"grep -r -E \"algif_aead|esp4|esp6|rxrpc\" /etc/modprobe.d/ || echo NOT_APPLIED"
]'
②-2. Amazon Inspectorによる脆弱性スキャン
aws inspector2 list-findings \
--filter-criteria '{
"vulnerabilityId": [
{"comparison": "EQUALS", "value": "CVE-2026-31431"},
{"comparison": "EQUALS", "value": "CVE-2026-43284"},
{"comparison": "EQUALS", "value": "CVE-2026-43500"},
{"comparison": "EQUALS", "value": "CVE-2026-46300"}
]
}' \
--region ap-northeast-1 \
--query 'findings[].{
CVE: packageVulnerabilityDetails.vulnerabilityId,
Severity: severity,
Status: status,
InstanceId: resources[0].id,
PackageName: packageVulnerabilityDetails.vulnerablePackages[0].name,
PackageVersion: packageVulnerabilityDetails.vulnerablePackages[0].version,
FixedVersion: packageVulnerabilityDetails.vulnerablePackages[0].fixedInVersion
}' \
--output table
StatusがACTIVEになっているCVEは脆弱性が残っている状態となります。
--------------------------------------------------------------------------------------------------------------------------------
| ListFindings |
+----------------+-----------------------------+----------------------+--------------+-----------------+------------+----------+
| CVE | FixedVersion | InstanceId | PackageName | PackageVersion | Severity | Status |
+----------------+-----------------------------+----------------------+--------------+-----------------+------------+----------+
| CVE-2026-46300| 0:4.14.355-282.729.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | ACTIVE |
| CVE-2026-31431| 1:6.12.80-106.156.amzn2023 | i-yyy | kernel6.12 | 6.12.74 | HIGH | ACTIVE |
| CVE-2026-46300| 1:6.12.83-115.161.amzn2023 | i-yyy | kernel6.12 | 6.12.74 | HIGH | ACTIVE |
| CVE-2026-31431| 0:4.14.355-281.727.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | ACTIVE |
| CVE-2026-43284| 1:6.12.83-113.160.amzn2023 | i-yyy | kernel6.12 | 6.12.74 | HIGH | ACTIVE |
| CVE-2026-43500| 0:4.14.355-282.728.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | ACTIVE |
| CVE-2026-43284| 0:4.14.355-282.728.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | ACTIVE |
+----------------+-----------------------------+----------------------+--------------+-----------------+------------+----------+
恒久対応(AmazonLinux2,AmazonLinux2023更新手順)
Inspectorで確認できているPackageNameを参照してアップデートコマンドを実行いただければと思います。
AmazonLinux2ではkernelですが、AmazonLinux2023ではKernel6.12となっておりますのでご注意ください。
また、OS再起動は必要作業として、対応計画を策定いただければと思います。
Amazon Linux 2 (AL2)
sudo yum update kernel -y
sudo reboot
uname -r
Amazon Linux 2023 (AL2023)
sudo dnf --releasever=latest update kernel6.12 -y
sudo reboot
uname -r
aws inspector2 list-findings \
--filter-criteria '{
"vulnerabilityId": [
{"comparison": "EQUALS", "value": "CVE-2026-31431"},
{"comparison": "EQUALS", "value": "CVE-2026-43284"},
{"comparison": "EQUALS", "value": "CVE-2026-43500"},
{"comparison": "EQUALS", "value": "CVE-2026-46300"}
]
}' \
--region ap-northeast-1 \
--query 'findings[].{
CVE: packageVulnerabilityDetails.vulnerabilityId,
Severity: severity,
Status: status,
UpdatedAt: updatedAt,
InstanceId: resources[0].id,
PackageName: packageVulnerabilityDetails.vulnerablePackages[0].name,
PackageVersion: packageVulnerabilityDetails.vulnerablePackages[0].version,
FixedVersion: packageVulnerabilityDetails.vulnerablePackages[0].fixedInVersion
}' \
--output table
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
| ListFindings |
+----------------+-----------------------------+----------------------+--------------+-----------------+-----------+----------+------------------------------------+
| CVE | FixedVersion | InstanceId | PackageName | PackageVersion | Severity | Status | UpdatedAt |
+----------------+-----------------------------+----------------------+--------------+-----------------+-----------+----------+------------------------------------+
| CVE-2026-46300| 0:4.14.355-282.729.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | CLOSED | 2026-06-15T14:15:14.838000+09:00 |
| CVE-2026-31431| 1:6.12.80-106.156.amzn2023 | i-yyy | kernel6.12 | 6.12.74 | HIGH | CLOSED | 2026-06-15T15:15:39.150000+09:00 |
| CVE-2026-46300| 1:6.12.83-115.161.amzn2023 | i-yyy | kernel6.12 | 6.12.74 | HIGH | CLOSED | 2026-06-15T15:15:39.276000+09:00 |
| CVE-2026-31431| 0:4.14.355-281.727.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | CLOSED | 2026-06-15T14:15:14.838000+09:00 |
| CVE-2026-43284| 1:6.12.83-113.160.amzn2023 | i-yyy | kernel6.12 | 6.12.74 | HIGH | CLOSED | 2026-06-15T15:15:38.785000+09:00 |
| CVE-2026-43500| 0:4.14.355-282.728.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | CLOSED | 2026-06-15T14:15:14.838000+09:00 |
| CVE-2026-43284| 0:4.14.355-282.728.amzn2 | i-xxx | kernel | 4.14.355 | HIGH | CLOSED | 2026-06-15T14:15:14.838000+09:00 |
+----------------+-----------------------------+----------------------+--------------+-----------------+-----------+----------+------------------------------------+
補足情報
1. モジュールがロードされていないなら作業は不要なのか?
→いいえ。未ロードでも今後ロードされる可能性があります。
ブラックリスト登録をしたうえでカーネルパッチを適用を行うことが安全と思われます。
2. カーネル更新に再起動が必要か?
→カーネルはサーバー起動中に書き換えることができません。
更新したカーネルファイルをディスクに書き込むのは再起動前に完了しますが、実際に新しいカーネルで動かすには再起動が必要となります
また、再起動なしにカーネルパッチを適用する「ライブパッチ」をサポートしているOSレベルディストリビューションがありますが、すべての脆弱性に対応しているとは限らないため、今回の脆弱性への適用可否はベンダーに確認して頂くのが良いかと思われます。
3. コンテナ内でも対応が必要?
→コンテナ内のアプリを更新しても、この脆弱性には対応できません。
コンテナはホストOSのカーネルを共有しているため、対応するのはホストOSとなります。
Fargateの場合はAWSが自動で対応済みです。
4. Amazon Linux 2 のサポートが2026年6月30日に終わるが、今回の対応は必要か?
→必要になります。
Amazon Linux 2 は本脆弱性のパッチをすでに提供されておりますが、記事冒頭で記載しているようにEOL後は新たなセキュリティパッチが提供されなくなることから、今回の対応と合わせてAmazon Linux 2023への移行計画を進めることをおすすめします。
5. IPsecを使っているLinuxサーバーへの対応はどうしたらよいか?
→モジュールのブラックリスト登録よりもカーネルパッチを先に当てることを優先して対応計画を検討してください。
6. Amazon Linux 2023 でカーネルアップデートが反映されない場合は?
→ AL2023 はリポジトリのバージョンが固定されている設定になっている場合があり、dnf update kernel6.12 だけでは最新パッチが取得されないことがあります。
パッケージ更新の際は --releasever=latest を付与し、最新リポジトリを参照するコマンドを実行してください。
sudo dnf --releasever=latest update kernel6.12 -y
sudo reboot
uname -r






