
Copy Fail (CVE-2026-31431)는 Linux 커널의 authencesn 암호화 템플릿에 존재하는 논리 버그입니다. 이 버그는 권한이 없는 로컬 사용자가 시스템의 읽기 가능한 모든 파일의 페이지 캐시에 결정적이고 통제된 4바이트 쓰기를 트리거할 수 있게 합니다.
CVE-2026-31431에 대한 고급 바이트 단위 정밀 로컬 권한 상승(LPE) 개념 증명(PoC)으로, Linux 커널의 암호화 하위 시스템(algif_aead)의 논리적 결함을 악용합니다.
이 저장소는 AF_ALG 소켓 인터페이스와 splice() 시스템 호출을 조작하여 읽기 전용 Page Cache 메모리를 안정적으로 덮어쓰는 고도로 최적화된 C 구현을 포함합니다.
"Copy Fail"이라는 이름의 이 취약점은 권한이 없는 로컬 공격자가 커널이 암호화 작업 출력을 시스템의 모든 파일의 메모리 매핑된 페이지에 직접 쓰도록 강제할 수 있게 합니다. /usr/bin/su를 대상으로 하여, 이 PoC는 디스크의 실제 바이너리를 수정하지 않고도 제로 카피 메모리 주입을 달성하여 즉시 루트 셸을 획득합니다.
다양한 최신 Linux 배포판에서 악용 가능성 범위를 확인하고 패치 동작을 관찰하기 위해 광범위한 테스트가 수행되었습니다.
패치된 커널(예: 6.19.14+ 및 7.0.0+)에서는 악용 코드가 충돌하거나 EINVAL을 발생시키지 않고 실행됩니다(무음 실패). 커널은 원시 Netlink rtattr 헤더를 성공적으로 파싱하지만 splice() 쓰기-백 단계에서 VM_MAYWRITE 페이지 권한을 올바르게 적용합니다. /usr/bin/su의 읽기 전용 Page Cache를 덮어쓰는 대신 안전한 버퍼를 조용히 할당합니다.
gcc copy_fail_exp.c -o copy_fail_exp
chmod +x copy_fail_exp
./copy_fail_exp
[*] CVE-2026-31431 Research - Ultimate C Implementation
[+] Page Cache completely overwritten.
[+] Detonating modified binary...
# whoami
root
이 코드는 교육, 방어 연구 및 위협 모델링 목적으로만 공개됩니다. 프로덕션 시스템이나 명시적 승인 없이 접근할 수 없는 환경에서 실행하지 마십시오.
| 운영 체제 | 커널 버전 | 취약 여부 | 관찰 결과 / 근본 원인 |
|---|
| Kali Linux 2026.1 | 6.18.12+kali-amd64 | ✅ 예 | 완벽한 악용. 루트 셸 획득. |
| Linux Mint 22.3 | 6.14.0-37-generic | ✅ 예 | 완벽한 악용. 루트 셸 획득. |
| Ubuntu 22.04.5 LTS | 6.8.0-111-generic | ✅ 예 | 완벽한 악용. 루트 셸 획득. |
| Ubuntu 24.04.4 LTS | 6.8.0-111-generic | ❌ 아니요 | Protocol not available. OS가 기본적으로 필요한 AF_ALG netlink 작업을 제한/비활성화합니다. |
| Kali Linux 2026.1 | 6.19.14+kali-amd64 | ❌ 아니요 | 패치됨(무음 실패). su가 정상적으로 비밀번호를 요청합니다. |
| Ubuntu 26.04 LTS | 7.0.0-15-generic | ❌ 아니요 | 패치됨(무음 실패). su가 정상적으로 비밀번호를 요청합니다. |