
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 배포판에서 악용 가능성 범위를 확인하고 패치 동작을 관찰하기 위해 광범위한 테스트가 수행되었습니다.
| 운영 체제 | 커널 버전 | 취약 여부 | 관찰 결과 / 근본 원인 |
|---|---|---|---|
| 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가 정상적으로 비밀번호를 요청합니다. |
패치된 커널(예: 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
이 코드는 교육, 방어 연구 및 위협 모델링 목적으로만 공개됩니다. 프로덕션 시스템이나 명시적 승인 없이 접근할 수 없는 환경에서 실행하지 마십시오.