
ファイルレスLPE CVE‑2026‑31431(“Copy Fail”)をKali Linux上で再現し、ディスクに痕跡を残さないこのステルスなカーネルエクスプロイトを検知するためのauditd、Sigma & YARA検出ルールを構築しました。
このリポジトリは、カーネル 4.14〜7.0-rc に影響する重大な Linux カーネルローカル権限昇格脆弱性である CVE-2026-31431("Copy Fail") に関する、エンドツーエンドの再現、検出エンジニアリング、インシデントレスポンスを文書化したものです。
Copy Fail はメモリ破損ではなくロジック欠陥です。決定論的であり、2017年以降に出荷された実質的にすべての Linux ディストリビューションに影響し、完全にファイルレスです。従来のファイル整合性監視(AIDE、Tripwire)では検知できません。動作する概念実証はわずか Python 732バイト に収まります。
| コンポーネント | 詳細 |
|---|---|
| ハイパーバイザー | VirtualBox |
| ターゲットVM | Kali Linux 2026.1 |
| カーネル | 6.18.12+kali-amd64 |
| エクスプロイトPoC | theori-io/copy-fail-CVE-2026-31431 |
| 検出 | auditd、Sigma、YARA |
ラボは、ターゲットが脆弱なカーネルを実行していることを確認することから始まります。
Kali Linux 2026.1 リリースとカーネルの詳細。
脆弱なカーネル 6.18.12+kali-amd64 を示す uname -r の出力。
このエクスプロイトには、algif_aead カーネルモジュールと authencesn 暗号テンプレートが必要です。
モジュール読み込み
lsmod と modinfo が algif_aead が利用可能であることを確認。/proc/crypto に脆弱な authencesn テンプレートが表示されます。
PoC は Python 3.10+ を必要とする os.splice を使用します。インタープリターを確認します。
Pythonバージョン Python 3.12 がインストールされており、使用可能です。
本格的なエクスプロイトを実行する前に、安全なチェッカーがシステムの脆弱性を確認します。
チェッカーは "potentially vulnerable" と報告し、悪用への道を開きます。
特別な権限を持たない攻撃者をシミュレートするため、非特権の testuser アカウントを作成します。
id が UID 1001 を示し、root 以外のアクセスであることを確認します。
公式の Theori PoC をクローンし、非特権アカウントから実行します。
エクスプロイトリポジトリのクローンに成功しました。
エクスプロイト実行
Python エクスプロイトがページキャッシュを上書きし、破損した /usr/bin/su バイナリを起動します。
whoami と id の出力が完全な root 権限昇格を証明します。
このエクスプロイトはメモリ内のページキャッシュのみを破損させます。ディスク上の /usr/bin/su は元のチェックサムを維持します。
SHA256一致
悪用後も sha256sum が元のパッケージハッシュと一致し、ディスクが変更されていないことを確認します。
Copy Fail はファイル整合性監視では検出できません。その代わりに、この脆弱性が使用するシステムコールレベルのプリミティブに焦点を当てます。
以下をトリガーするカスタム auditd ルールを展開します:
AF_ALG ソケット作成(ファミリー 38)splice() システムコールの使用
すべてのカスタムルールが有効であることを auditctl -l で確認しました。
エクスプロイトを2回目に実行すると、使用された正確なシステムコールに対するアラートが表示されます:
ausearch が testuser プロセスからの AF_ALG ソケット作成イベントを表示しています。
ausearch が同じ PID からの splice() イベントを表示しており、強い相関を示しています。
Sigma ルールは、auditd の検出結果をベンダーニュートラルな SIEM 形式に変換します。
AF_ALG ソケット作成と splice() 呼び出しを検出する Sigma YAML ルール。
YARA ルールは、ディスク上の Copy Fail エクスプロイトコードを特定するのに役立ちます。
PoC に含まれる authencesn 文字列、ソケット定数、splice() 参照と一致する YARA ルール。
完全なインシデントレスポンスレポートは reports/incident-copy-fail.md で入手できます。内容は以下のとおりです:
即時緩和策(再起動不要):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead
| レイヤー | 検出対象 | ステータス |
|---|
| auditd | AF_ALG ソケット + splice システムコール | ✅ 展開済み |
| Sigma | SIEM経由のシステムコールパターン | ✅ ルール準備完了 |
| YARA | ディスク上の PoC コード | ✅ ルール準備完了 |
| FIM(AIDE/Tripwire) | ファイル変更 | ❌ 検知不可 – ディスク書き込みは発生しない |