
CVE-2026-31431(Copy Fail)을 Linux에서 탐지하고 완화하며, AF_ALG 취약점을 프로빙하고 선택적으로 영향을 받는 모듈을 블랙리스트에 등록합니다.
Linux 호스트에서 CVE-2026-31431("Copy Fail")을 탐지하고 (선택적으로) 완화합니다.
이 취약점은 AF_ALG 소켓 패밀리에서 authencesn(hmac(sha256),cbc(aes)) AEAD 변환을 통해 도달할 수 있는 페이지 캐시 쓰기 프리미티브입니다. 이 스크립트는 Theori가 시연한 것과 동일한 프리미티브를 재현하지만, setuid 바이너리가 아닌 자체 생성한 임시 파일을 대상으로 하므로 테스트 자체는 비파괴적입니다.
커널이 취약한 경우, 스크립트는 완화 조치 적용을 제안합니다: /etc/modprobe.d/disable-algif-aead.conf를 통해 algif_aead를 블랙리스트에 등록하고 모듈을 언로드합니다. 완전한 수정을 위해서는 여전히 커널 업데이트가 필요합니다.
os.splice 필요)uvsudo / root — 완화 조치 적용에 필요합니다 (/etc/modprobe.d에 쓰기 및 ); 탐지만으로는 권한 없이 실행되지만, 스크립트는 패치 여부를 대화형으로 묻습니다rmmodsudo $(which uv) run --python 3.10 /path/to/copy_fail_test.py
$(which uv)는 sudo가 PATH에서 올바른 uv 바이너리를 유지하도록 사용됩니다.
스크립트는 다음을 수행합니다:
AF_ALG + authencesn(hmac(sha256),cbc(aes))에 도달할 수 있는지 확인합니다.✅ NOT VULNERABLE — 종료 코드 0🚨 VULNERABLE — 완화 조치 적용을 묻고, 이후 재테스트⚠️ INCONCLUSIVE — 종료 코드 2 (예: splice/sendmsg 호출이 오류로 종료됨)프롬프트를 수락하면 스크립트는 다음을 수행합니다:
/etc/modprobe.d/disable-algif-aead.conf에 install algif_aead /bin/false를 작성합니다.rmmod algif_aead를 실행합니다.모듈이 커널에 내장된 경우(로드 가능하지 않은 경우), 블랙리스트가 적용되려면 재부팅이 필요합니다. 어느 경우든, 업데이트가 제공되면 커널을 패치하세요 — 블랙리스트는 하나의 진입점만 제거합니다.
수동 동일 명령:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
탐지 단계는 생성 후 삭제하는 tempfile.NamedTemporaryFile에 쓰기를 수행합니다; 시스템 파일은 건드리지 않습니다. 완화 단계만이 호스트를 수정하는 유일한 부분이며, 프롬프트에서 확인한 경우에만 수행됩니다.