2026年5月、IPAが注意喚起を出した権限昇格の脆弱性「Copy Fail」(CVE-2026-31431)。一般ユーザーの権限でログインできれば管理者権限を奪われる可能性がある、Linuxカーネルの深刻な不具合です。パッチをまだ当てていなくても、unprivileged user namespace(一般ユーザーが自分専用の仮想的な権限空間を作れる仕組み。コンテナ技術の基盤だが悪用もされる)の作成を制限する設定が効いていれば、影響を受けにくくできます。この記事では、自分のUbuntu/Debian環境がその設定になっているかをコマンドで確認する方法をまとめます。

Copy Fail(CVE-2026-31431)とDirty Fragが狙う「入り口」

2026年に入ってLinuxカーネルの権限昇格の脆弱性が立て続けに見つかっています。今回取り上げる2件は、どちらも「一般ユーザーとしてログインできれば」という条件が付く点で共通しています。

通称

CVE番号

公開時期

備考

Copy Fail

CVE-2026-31431

2026年5月(IPA注意喚起)

Linux 4.14以降が対象

Dirty Frag

CVE-2026-43284 / CVE-2026-43500

2026年4〜5月

実行可能なPoC(概念実証コード)が公開済み

いずれも「不特定多数がSSHでログインできるサーバー」「複数人が使う共用PC」ほどリスクが上がります。逆に、自分1人だけがsudo権限で使う個人サーバーなら緊急度は下がります。まずは自分の環境がどちらに近いかを意識してから、以下のチェックに進んでください。

カーネル自体のバージョンとパッチ適用状況の確認は、以前の記事uname -aとlivepatchでカーネル点検2026年9月で扱った内容がそのまま使えます。今回はパッチの有無に関わらず効く「入り口を狭める設定」の話です。

sysctl kernel.apparmor_restrict_unprivileged_userns で制限状態を見る(Ubuntu)

何を見ているコマンドか

Ubuntuは独自に、一般ユーザーがuser namespaceを作るときにAppArmor(アプリごとに動作を制限する仕組み)のプロファイルによる許可を必須にする機能を持っています。この機能が有効かどうかを見るのが次のコマンドです。sudoは不要です。

sysctl kernel.apparmor_restrict_unprivileged_userns

出力例と判断基準

kernel.apparmor_restrict_unprivileged_userns = 1
  • 0 ... 制限なし。誰でも自由にuser namespaceを作れる状態で、Copy Fail・Dirty Frag系の攻撃の入り口が開いている
  • 1 ... 制限あり(既定値)。AppArmorプロファイルで許可されたアプリ以外は作成不可

Ubuntu 24.04 LTS以降はこの値が既定で1になっています。もし0になっていたら、過去に何らかの理由(古いDocker設定の手順書など)で誰かが緩めた可能性があります。心当たりがなければ元に戻すのが安全です。

0だった場合の対処と戻し方

設定変更にはsudoが必要です。次のコマンドで一時的に1へ戻せます(再起動で元の設定ファイルの値に戻るため、恒久的に直すなら該当する/etc/sysctl.d/配下のファイルを探して値を修正してください)。

sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=1

ただし、rootless Docker/Podman(root権限を使わずにコンテナを動かす仕組み)など、意図的にuser namespaceを使うツールを入れている場合、値を変えると動かなくなることがあります。変更前に、自分がそうしたツールを使っているか確認してから作業してください。

Debianではkernel.unprivileged_userns_cloneを確認する

DebianにはUbuntuのAppArmor連携機能がありません。代わりに、user namespaceの作成自体をオン/オフする古くからのパラメータがあります。

sysctl kernel.unprivileged_userns_clone
  • 1 ... 一般ユーザーがuser namespaceを作成できる(既定)
  • 0 ... 作成不可。Copy Fail・Dirty Frag系の攻撃経路そのものを塞げるが、rootless container等の機能も使えなくなる

用途がサーバー1台でWebアプリやDBを動かすだけ、コンテナも使っていないという環境なら、0にしてしまって差し支えありません。変更方法はUbuntuと同じsysctl -wです(コマンド名の後ろの値だけkernel.unprivileged_userns_clone=0に読み替えてください)。何か動かなくなったら1に戻せば即座に元通りです。

設定変更より先にやるべきこと:自分がその脆弱性の対象か確認する

sysctlの制限は「防御を厚くする」ものであって、脆弱性そのものを塞ぐパッチの代わりにはなりません。まずは今のカーネルが対象範囲に入っているかを確認しましょう。

uname -r

Copy Fail(CVE-2026-31431)はLinux 4.14以降、Dirty Frag系(CVE-2026-43284/43500)もここ数年の主要カーネルが対象と報じられています。表示されたバージョンが極端に古い(4.14より前)場合を除き、大半の現行Ubuntu/Debian環境は対象に含まれると考えて、パッチ適用状況の確認に進んでください。手順はuname -aとlivepatchでカーネル点検2026年9月で解説した内容と同じです。

あわせて、2026年7〜8月には19年間見過ごされていたCVE-2026-43456(net/bonding)や、15年潜伏していたCVE-2026-43499(通称GhostLock)、XFSファイルシステムのCVE-2026-64600(通称RefluXFS)など、古いカーネルに潜んでいた権限昇格の脆弱性が相次いで報告されています。今回のsysctl設定はこれらにも共通して効く防御なので、1つ直せば複数の脆弱性への備えになります。パッケージの改ざん有無まで含めて足元を点検したい場合はXZ Utils教訓|debsumsで改ざん点検2026年9月最新もあわせて確認してみてください。

定期的な更新の仕組みも合わせて確認する

個別のCVEを追いかけ続けるのは現実的ではないので、更新が自動で入る状態になっているかも見ておきましょう。

systemctl status unattended-upgrades
  • active (running) ... セキュリティ更新が自動で適用される設定になっている
  • inactiveコマンドが見つからない ... 自動更新が入っていない。sudo apt install unattended-upgradesで導入できる(既存の運用に影響する変更ではなく、追加でパッケージを入れるだけなので比較的安全)

なお、Ubuntu 26.04 LTS(2026年4月リリース、8月に26.04.1)ではsudo自体がメモリ安全性の高いRust実装(sudo-rs)に置き換わるなど、OS側の作り込みも進んでいます。24.04系を使っている場合、26.04系への移行はまだ急がず、初期不具合が落ち着いた26.04.1以降に検討すれば十分です。

まとめ

Copy Fail(CVE-2026-31431)やDirty Frag(CVE-2026-43284/43500)は、パッチ未適用でもsysctl kernel.apparmor_restrict_unprivileged_userns(Ubuntu)やkernel.unprivileged_userns_clone(Debian)の値を確認し、必要に応じて制限を強めることで攻撃の入り口を狭められます。ただしrootless Docker/Podmanなどを使っている場合は動作に影響するため、変更前に用途を確認してください。あわせてuname -rでのカーネル確認、自動更新の設定も定期的に見直しておくと安心です。