CVE-2026-31431(「Copy Fail」) 向けのディストリビューション別緩和スクリプト — 2017年以降に出荷されたほぼすべてのディストリビューションに影響するLinuxカーネル algif_aead のローカル権限昇格の脆弱性です。
各スクリプトは、ディストリビューションのリポジトリからパッチ適用済みカーネルをインストールするか(利用可能な場合)、利用できない場合は脆弱な algif_aead カーネルモジュールをブラックリスト化して、修正済みカーネルで再起動するまで悪用経路を遮断します。
自分のディストリビューションに合ったスクリプトを選び、監査して、rootで実行してください。
# Ubuntu
sudo bash scripts/ubuntu.sh
# Debian
sudo bash scripts/debian.sh
# RHEL / Rocky / AlmaLinux / CentOS Stream
sudo bash scripts/rhel.sh
# Fedora
sudo bash scripts/fedora.sh
# Arch
sudo bash scripts/arch.sh
# openSUSE Leap / Tumbleweed
sudo bash scripts/opensuse.sh
# Alpine
sudo bash scripts/alpine.sh
# その他(Gentoo、NixOS、イミュータブルディストリビューションなど)
sudo bash scripts/universal.sh
何も変更しないプレビューが必要な場合は、最初に --check を使用してください。
ディストリビューション別スクリプトは以下のアルゴリズムを実行します。 は手順4〜5をスキップします。
universal.shsudo の下で再実行します。--force が指定されていない限り、一致しないホストでは実行を拒否します。uname -r を読み取ります。PATCHED_KERNEL_VERSION が記録されており、実行中のカーネルがそのバージョン以上の場合、スクリプトは残りの緩和ファイルを削除して終了します。--yes)。インストール後、手動で再起動します。blacklist algif_aead と install algif_aead /bin/true を含む /etc/modprobe.d/cve-2026-31431.conf を書き込み、AF_ALG ソケットバインドプローブで悪用経路が閉じられていることを検証します。PATCHED_KERNEL_VERSION = PENDING は、メンテナがそのディストリビューションの修正済みカーネルバージョンをまだ記録していないことを意味します。各行は1行のPRで更新されます。
| ディストリビューション | カーネルパッケージ | パッチ適用済みバージョン | 最終確認日 |
|---|---|---|---|
| Ubuntu (24.04) | linux-image-generic | PENDING | 2026-05-01 |
| Debian | linux-image-amd64 | PENDING | 2026-05-01 |
| RHEL / Rocky / Alma | kernel | PENDING | 2026-05-01 |
| Fedora | kernel | PENDING | 2026-05-01 |
| Arch | linux | PENDING | 2026-05-01 |
| openSUSE | kernel-default | PENDING | 2026-05-01 |
| Alpine | linux-lts | PENDING | 2026-05-01 |
| フラグ | 意味 |
|---|---|
-y, --yes | 非対話型。カーネルインストールのプロンプトをスキップします。 |
--force | ディストリビューション不一致チェックをバイパスします。 |
--check | 読み取り専用プレビュー。何が起こるかを表示し、何も変更しません。 |
--undo | /etc/modprobe.d/cve-2026-31431.conf を削除します。パッチ適用済みカーネルのインストール後に使用します。 |
-h, --help | 使用方法の情報。 |
スクリプトはこのプローブを自動的に実行します。自分で確認するには:
python3 - <<'PY'
import socket, errno
try:
s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0)
s.bind(("aead", "authencesn(hmac(sha1),cbc(aes))"))
print("BAD: bind succeeded — host is NOT mitigated")
s.close()
except OSError as e:
print(f"OK: bind blocked, errno={e.errno} ({e.strerror})" if e.errno == errno.ENOENT
else f"INCONCLUSIVE: errno={e.errno}")
PY
緩和済みまたはパッチ適用済みのホストは OK: bind blocked, errno=2 ... を出力します。
ディストリビューションが修正済みカーネルを公開し、それで再起動した後、modprobeブラックリストを削除して、AF_ALG aeadを正当に使用するアプリケーションが再び動作できるようにします:
sudo bash scripts/<your-distro>.sh --undo
ディストリビューションが修正済みカーネルを公開した場合:
scripts/<distro>.sh の1行を編集 — PATCHED_KERNEL_VERSION を修正済みパッケージバージョンに設定します(dpkg-query -W / rpm -q VERSION-RELEASE / pacman -Q が返す形式)。<distro>: fix shipped in <version> というタイトルのPRを開きます。セキュリティ緩和ツールです。インターネットで見つけたスクリプトは、sudo bash にパイプする前に必ず監査してください。メンテナはMITライセンスの下でいかなる責任も負いません。
MIT。