
🌐 English | Português | Español | 中文 | Íslenska
CVE-2026-31431 に対するワンコマンドの緩和策およびパッチです。Linuxカーネルの「Copy Fail」ローカル権限昇格の脆弱性に対応します。このスクリプトは、影響を受ける algif_aead モジュールを無効化し、apt 経由でカーネルをアップグレードし、(任意で)システムを最新に保つための systemd タイマーをインストールします。
Ubuntuサーバー向けに設計されています(Debianベースのシステムにも対応)。
⚠️ 実行前にスクリプトを確認してください。 これはroot権限で実行されるセキュリティツールです。
sudoにパイプする前にcopyfail.shを読んでください。可能な場合は、常にディストリビューションの公式カーネル更新プロセスを優先してください。
CVE-2026-31431(「Copy Fail」)は、カーネルの algif_aead(ユーザー空間暗号APIのAEADソケットインターフェース)における論理的な欠陥です。ローカルの非特権ユーザーは、setuidバイナリを含む任意の読み取り可能なファイルのページキャッシュへの決定的な4バイト書き込みを引き起こし、数秒でrootアクセスを取得できます。この欠陥は2017年(コミット 72548b093ee3)に導入され、2017年から修正までの間に構築されたすべてのカーネルに影響します。このスクリプトは、ディストリビューションのカーネルパッチを適用している間に、脆弱なモジュールを無効化します。
apt-get と awk が利用可能sudo)wget -O copyfail.sh https://raw.githubusercontent.com/paulorlima9/copyfail-fix/main/copyfail.sh
chmod +x copyfail.sh
sudo ./copyfail.sh
初回実行時、スクリプトは以下を実行します:
/etc/modprobe.d/disable-algif.conf を作成し、algif_aead モジュールをブラックリストに登録algif_aead をアンロードapt-get update && apt-get upgrade -y を実行し、パッチ適用済みカーネルを取得アップグレード後、新しいカーネルをロードするために再起動が必要です。
sudo ./copyfail.sh [options]
完全修正 — 緩和策を適用し、カーネルをアップグレード:
sudo ./copyfail.sh
ステータスのみ確認:
sudo ./copyfail.sh --check
緩和策のみ(カーネルのアップグレードなし):
sudo ./copyfail.sh --mitigate
カーネルがパッチ適用され再起動されたことを確認後、緩和策を元に戻す:
sudo ./copyfail.sh --revert
毎日の自動更新を有効化(Supervision):
sudo ./copyfail.sh --supervision
Supervision機能は、24時間ごとに apt-get upgrade を実行する systemdタイマー をインストールし、ディストリビューションがカーネルパッチを公開するとすぐに取得できるようにします。
有効にすると、2つのsystemdユニットが作成されます:
copyfail-fix-supervision.service — --upgrade でスクリプトを実行するワンショットサービスcopyfail-fix-supervision.timer — サービスを毎日(および起動後5分)トリガーするタイマー# タイマーのステータスを確認
systemctl status copyfail-fix-supervision.timer
# 次のスケジュール実行を表示
systemctl list-timers copyfail-fix-supervision.timer
# 自動更新を無効化
sudo systemctl stop copyfail-fix-supervision.timer
sudo systemctl disable copyfail-fix-supervision.timer
# 更新を手動でトリガー
sudo systemctl start copyfail-fix-supervision.service
/etc/modprobe.d/disable-algif.conf に install algif_aead /bin/false を書き込み、次回起動時にモジュールがロードされないようにするrmmod algif_aead を呼び出して実行中のカーネルからアンロード(モジュールが使用中の場合はスキップ — 再起動が必要)apt-get update に続いて非対話型の apt-get upgrade を実行し、最新のカーネルパッケージをインストール--check では、uname -r、lsmod、modprobeファイル、最新のインストール済み linux-image-* パッケージを検査--revert では、modprobeファイルを削除し、modprobe 経由でモジュールを再ロード実行中、スクリプトは進行状況インジケーターを表示します:
+(緑) — アクションが適用された-(赤) — アクションが元に戻された.(グレー) — アクションがスキップされた(すでに適用済みまたは該当なし)!(黄) — 警告(例:再起動が必要)MIT
| オプション | 短縮形 | 説明 |
|---|
--help | -h | ヘルプメッセージを表示 |
--mitigate | -m | 緩和策のみ適用(algif_aead モジュールを無効化) |
--upgrade | -u | カーネル/パッケージのみアップグレード(apt-get upgrade) |
--check | -c | 現在のステータスを表示(カーネルバージョン、モジュール、緩和策) |
--revert | -r | 緩和策を元に戻す(カーネルがパッチ適用され再起動した後) |
--supervision | -s | systemdタイマーによる毎日の自動更新を有効化 |