Linuxのルート権限が奪取される「Copy File」とは?

管理者·

2026/4/29に公開された 「Copy Fail」(CVE-2026-31431) というLinuxカーネルのローカル権限昇格(LPE)脆弱性になります。

何が問題なのか?

Linuxカーネルの暗号サブシステム(authencesnテンプレート、AF_ALG経由のAEAD復号)にあるロジックバグで、以下の特徴があります。

攻撃の仕組み

  • 非特権ローカルユーザーが、任意の読み取り可能ファイルのpage cache(メモリ上のキャッシュ)に4バイトの任意書き込みが可能
  • setuidバイナリのpage cacheを書き換えることで、即座にroot権限へ昇格
  • 2017年に追加されたin-place AEAD復号の最適化と、splice()による直接的なpage cache参照の組み合わせが原因

過去のLPE(Dirty COW/Dirty Pipe)と異なり凶悪な点

レース条件不要で、同じエクスプロイトが多くのシステムで動作する
ディスク上のファイルは変更せず、メモリ上のキャッシュだけを書き換えるため、ハッシュ検証やファイル監視ツールでは検知不可能
732バイトのPython PoCが公開済み、認証済みユーザーであれば2017年以降のほぼ全Linuxディストリビューションでrootが取れる
page cacheがホスト全体で共有されているため、Kubernetesのコンテナ脱出プリミティブとしても利用可能

影響範囲

2017年以降にリリースされたカーネルを使うすべてのLinuxディストリビューションが対象です。(結構ヤバい)
リモート単独では悪用不可だが、Web RCEで非特権アカウントに着地、SSHフットホールド、CIランナーへの悪意あるPRなど、ローカルコード実行が取れる経路と連鎖させると即root奪取可能

対策

カーネル更新
主要ディストリビューション(Ubuntu, RHEL, SUSE, Amazon Linux)はすでにパッチをリリース済み。修正はcommit a664bf3d603d で、リスクのあるin-place最適化を元に戻し、脆弱なscatterlistパスに到達できないようにするもの。

即時パッチ不可な場合の緩和策
algif_aeadモジュールをブラックリスト化して無効化する

echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead 2>/dev/null || true

NixOSでの対策
configuration.nix に以下を追加。

boot.blacklistedKernelModules = [ "algif_aead" ];
シェア: