
CVE-2026-31431(Copy Fail)에 대한 Ubuntu 24.04 영구 완화 스크립트로, 취약한 algif_aead 커널 모듈을 블랙리스트에 등록하고 재부팅 후에도 유지되도록 initramfs를 업데이트합니다.
이 저장소는 Ubuntu 시스템에서 CVE-2026-31431이라는 별명 "Copy Fail" 로 알려진 심각한 취약점을 무력화하도록 설계된 스크립트를 포함합니다.
[!IMPORTANT] 호환성: 이 스크립트는 Ubuntu Server 24.04 LTS에 맞춰 제작되었으며 테스트되었습니다. 다른 배포판의 경우 로직은 유사하지만 Debian 또는 다른 Linux 배포판에서는 테스트되지 않았습니다.
패치를 적용하기 전에 공식 탐지 스크립트(rootsecdev가 개발)를 다운로드하여 시스템의 현재 상태를 검증하십시오:
# 탐지 스크립트 다운로드
wget https://raw.githubusercontent.com/rootsecdev/cve_2026_31431/main/test_cve_2026_31431.py
# python3이 설치되어 있는지 확인
python3 --version
CVE-2026-31431 취약점($CVSS\ 7.8$)은 Linux 커널의 암호화 하위 시스템(algif_aead 모듈)에 영향을 미칩니다.
로컬 사용자는 splice() 함수의 "in-place" 최적화 결함을 악용하여 시스템의 페이지 캐시(Page Cache) 를 손상시킬 수 있습니다. 이를 통해 공격자는 커널이 읽기 전용이어야 하는 파일(예: SUID 바이너리 또는 민감한 시스템 파일)의 메모리 페이지에 임의의 데이터(시퀀스 번호)를 쓰도록 강제할 수 있습니다.
modprobe -r만으로 충분하지 않은 이유Linux 커널은 자동 로딩(auto-loading) 이라는 메커니즘을 사용합니다. 프로세스나 스크립트(예: 탐지기)가 AF_ALG 유형의 소켓을 요청하면 커널은 모듈이 수동으로 제거되었더라도 자동으로 다시 로드합니다. 이 패치에서 사용된 방법("하드 블록(Hard Block)")은 커널이 모듈 바이너리를 로드하지 못하도록 물리적으로 차단합니다.
현재 커널이 노출되었는지 확인하려면 테스터를 실행하십시오:
python3 test_cve_2026_31431.py
스크립트가 [!] VULNERABLE을 표시하면 다음 단계로 진행하십시오.
patch-CVE-2026-31431.sh 스크립트는 공격 벡터를 영구적으로 무력화합니다. /etc/modprobe.d/에 구성 파일을 생성하고 initramfs를 업데이트하여 재부팅 후에도 차단이 유지되도록 합니다.
chmod +x patch-CVE-2026-31431.sh
sudo ./patch-CVE-2026-31431.sh
탐지 스크립트를 다시 실행하십시오. 이제 사전 요구 사항이 충족되지 않았음을 나타내는 메시지가 표시되어야 합니다:
[+] Precondition not met ('authencesn(...) cannot be instantiated).
이는 모듈이 성공적으로 무력화되었음을 확인합니다.
Ubuntu가 커널 업데이트를 통해 공식 수정 사항을 릴리스하면(apt upgrade 노트에서 CVE-2026-31431 확인), 기본 암호화 기능을 복원해야 합니다:
chmod +x unpatch-CVE-2026-31431.sh
sudo ./unpatch-CVE-2026-31431.sh
보호는 /etc/modprobe.d/cve-2026-31431-mitigation.conf 내의 다음 지시문에 의존합니다:
blacklist algif_aead
install algif_aead /bin/true
install 명령은 커널이 모듈을 로드하려는 시도를 /bin/true로 리디렉션하며, 이는 취약한 코드를 실행하지 않고 "성공" 종료 코드를 반환합니다.