
리눅스 커널 CVE-2026-31431(Copy Fail)에 대한 개념 증명 익스플로잇으로, AF_ALG를 악용하여 페이지 캐시의 setuid-root 바이너리를 손상시켜 권한 상승을 달성합니다. 백업/복원 및 무결성 검증 기능을 포함합니다.
Linux 커널 취약점 CVE-2026-31431(일명 Copy Fail)에 대한 개념 증명 익스플로잇 재현입니다.
크레딧: Copy Fail
/usr/bin/su)의 백업을 생성git clone https://github.com/MohamedKarrab/Copy-Fail-CVE-2026-31431.git
cd Copy-Fail-CVE-2026-31431
# 기본적으로 /usr/bin/su를 대상으로 함
python fail.py
# 또는 다른 setuid-root 바이너리(passwd, mount, chsh, sudo, pkexec...)
python fail.py /usr/bin/passwd
익스플로잇 실패 시 대상 바이너리가 원래 상태로 복원되지 않을 수 있습니다. 다음과 같이 해결하세요:
간단히 재부팅하세요. 재부팅하면 페이지 캐시가 지워집니다(익스플로잇은 디스크의 바이너리를 수정하지 않습니다).
또는 신뢰할 수 있는 패키지에서 깨끗한 /usr/bin/su(또는 선택한 바이너리)를 복원하세요.
Debian / Ubuntu:
sudo apt-get install --reinstall util-linux
Fedora / RHEL:
sudo dnf reinstall util-linux
Arch:
sudo pacman -S util-linux
이 익스플로잇은 AF_ALG AEAD 구현을 악용하여 /usr/bin/su(setuid-root 바이너리)의 커널 페이지 캐시에 임의의 4바이트 청크를 기록합니다.
sendmsg/splice 쌍을 사용하여 AES-CBC-HMAC 처리에 데이터를 주입/usr/bin/su의 메모리 내 .text 섹션을 손상시킴마지막으로 /usr/bin/su를 실행하면 오염된 페이지 캐시가 로드되어 setuid로 인해 주입된 코드가 root 권한으로 실행됩니다.
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null