
CVE-2026-31431、通称Copy Failは、bpftraceを使った1行で緩和できます。
CVE-2026-31431、別名 Copy Fail は、bpftraceコマンドを使えば一行のコードで修正できます。kpatchのコンパイルもcargoでのコンパイルも不要です。
この脆弱性を悪用するには、AF_ALGインターフェースにバインドし、かつ暗号化アルゴリズムauthencesnを使用する必要があります。これは大多数のプログラムでは使用されないものです。これこそが修正コードが機能するポイントです。
├── kfunc.sh
├── kprobe.sh
├── tests
│ └── bind_af_alg.py
└── tracepoint.sh
tracepoint.shの原作者は@天擎智能云氏で、彼のオリジナルコードは微信公式アカウントで公開されています。
このコードはテスト済みで、実際に動作することを確認しました。
しかし、https://github.com/Jannik2099/copyfail-ebpf-mitigation に触発されて、プログラムが単にAF_ALGインターフェースにバインドしているだけで、暗号化アルゴリズムauthencesnを使用していない場合でも、そのプロセスが無条件に強制終了されることを発見しました。
説明だけでは分かりにくいので、コード をご覧ください。
そこで、Deepseekの助けを借りて、1日かけてテストを行い、さらに2つの修正コードを検証しました。これらは、AF_ALGインターフェースにバインドし、かつ暗号化アルゴリズムauthencesnを使用しようとするすべてのプロセスを記録および拒否することができます。
| tracepoint | kprobe |
|---|
| kfunc |
|---|
| Ubuntu 20.04 | ✅ | ✅ | ❌ |
| Rocky 8.4 | ✅ | ✅ | ❌ |
| Gentoo rolling | ✅ | ✅ | ✅ |
| tracepoint | kprobe | kfunc |
|---|
| kernel version (minimum) | 4.7 (4.9+ recommended) | 4.1 | 5.5 |
| bpftrace version (minimum) | 0.9.4 | 0.9.0 | 0.12 |
| kernel parameters | CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_EVENTS=y CONFIG_FTRACE_SYSCALLS=y CONFIG_FUNCTION_TRACER=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_DEBUG_FS=y optional: CONFIG_BPF_JIT=y & CONFIG_HAVE_EBPF_JIT=y CONFIG_KPROBES=y CONFIG_KPROBE_EVENTS=y VENTS=y | CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_KPROBES=y CONFIG_KPROBE_EVENTS=y CONFIG_BPF_EVENTS=y | CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_EVENTS=y CONFIG_BPF_JIT=y CONFIG_HAVE_EBPF_JIT=y CONFIG_KPROBES=y CONFIG_KPROBE_EVENTS=y CONFIG_FUNCTION_TRACER=y CONFIG_HAVE_DYNAMIC_FTRACE=y CONFIG_DYNAMIC_FTRACE=y CONFIG_DEBUG_INFO_BTF=y CONFIG_DEBUG_INFO_BTF_MODULES=y CONFIG_DEBUG_FS=y |