
CVE-2026-31431, 일명 Copy Fail은 bpftrace로 한 줄로 완화할 수 있습니다.
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+ 권장) | 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 선택 사항: 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 |