
CVE-2026-31431, également connu sous le nom de Copy Fail, peut être atténué en une seule ligne avec bpftrace.
CVE-2026-31431, également connue sous le nom de Copy Fail, peut être corrigée en une seule ligne de commande via bpftrace, sans compilation de kpatch ni compilation cargo
Pour exploiter cette vulnérabilité, il faut se lier à l'interface AF_ALG et utiliser l'algorithme de chiffrement authencesn, ce que la grande majorité des programmes ne font jamais. C'est là que le code de correction intervient.
├── kfunc.sh
├── kprobe.sh
├── tests
│ └── bind_af_alg.py
└── tracepoint.sh
La version originale de tracepoint.sh a été écrite par @天擎智能云, et son code original a été publié sur WeChat
J'ai testé ce code, et il fonctionne effectivement.
Cependant, inspiré par https://github.com/Jannik2099/copyfail-ebpf-mitigation, j'ai découvert que si un programme se lie simplement à l'interface AF_ALG sans utiliser l'algorithme de chiffrement authencesn, le processus est également tué sans condition.
L'explication est un peu vague, voir le code.
C'est pourquoi, avec l'aide de Deepseek, j'ai passé 1 jour à tester et à valider 2 autres codes de correction. Ils permettent de journaliser et refuser tous les processus qui tentent de se lier à l'interface AF_ALG et d'utiliser l'algorithme de chiffrement authencesn.
| tracepoint | kprobe | kfunc | |
|---|---|---|---|
| Ubuntu 20.04 | ✅ | ✅ | ❌ |
| Rocky 8.4 | ✅ | ✅ | ❌ |
| Gentoo rolling | ✅ | ✅ | ✅ |
| tracepoint | kprobe | kfunc | |
|---|---|---|---|
| version du noyau (minimum) | 4.7 (4.9+ recommandé) | 4.1 | 5.5 |
| version de bpftrace (minimum) | 0.9.4 | 0.9.0 | 0.12 |
| paramètres du noyau | 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 optionnel: 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 |