
CVE-2026-31431(Copy Fail)에 대한 Ubuntu/Debian VPS용 빠른 완화 및 패치 스크립트
🌐 English | Português | Español | 中文 | Íslenska
CVE-2026-31431 — Linux 커널의 "Copy Fail" 로컬 권한 상승 취약점에 대한 원커맨드 완화 및 패치입니다. 이 스크립트는 영향을 받는 algif_aead 모듈을 비활성화하고, apt를 통해 커널을 업그레이드하며, (선택적으로) 시스템을 최신 상태로 유지하는 systemd 타이머를 설치합니다.
Ubuntu 서버용으로 설계되었습니다 (Debian 기반 시스템에서도 호환).
⚠️ 실행 전에 스크립트를 검토하세요. 이 도구는 루트 권한으로 실행되는 보안 도구입니다.
sudo로 파이프하기 전에copyfail.sh를 읽어보세요. 가능하면 항상 배포판의 공식 커널 업데이트 프로세스를 우선 사용하세요.
CVE-2026-31431 ("Copy Fail")은 커널의 algif_aead (사용자 공간 crypto API의 AEAD 소켓 인터페이스)에 있는 논리적 결함입니다. 로컬의 권한이 없는 사용자는 setuid 바이너리를 포함한 읽기 가능한 모든 파일의 페이지 캐시에 결정적인 4바이트 쓰기를 트리거하여 몇 초 만에 루트 권한을 얻을 수 있습니다. 이 결함은 2017년(커밋 72548b093ee3)에 도입되었으며, 2017년부터 수정 시점까지 빌드된 모든 커널에 영향을 미칩니다. 이 스크립트는 배포판의 커널 패치를 적용하는 동안 취약한 모듈을 비활성화합니다.
apt-get 및 awk 사용 가능sudo)wget -O copyfail.sh https://raw.githubusercontent.com/paulorlima9/copyfail-fix/main/copyfail.sh
chmod +x copyfail.sh
sudo ./copyfail.sh
첫 실행 시 스크립트는 다음을 수행합니다:
/etc/modprobe.d/disable-algif.conf를 작성하여 algif_aead 모듈을 블랙리스트에 등록algif_aead를 언로드apt-get update && apt-get upgrade -y 실행업그레이드 후 새 커널을 로드하려면 재부팅이 필요합니다.
sudo ./copyfail.sh [options]
전체 수정 — 완화 적용 및 커널 업그레이드:
sudo ./copyfail.sh
상태 확인만:
sudo ./copyfail.sh --check
완화만 (커널 업그레이드 없음):
sudo ./copyfail.sh --mitigate
커널이 패치되고 재부팅되었는지 확인한 후 완화 되돌리기:
sudo ./copyfail.sh --revert
일일 자동 업데이트 활성화 (Supervision):
sudo ./copyfail.sh --supervision
Supervision 기능은 24시간마다 한 번씩 apt-get upgrade를 실행하는 systemd 타이머를 설치하여, 배포판이 커널 패치를 게시하는 즉시 적용되도록 합니다.
활성화되면 두 개의 systemd 유닛이 생성됩니다:
copyfail-fix-supervision.service — --upgrade로 스크립트를 실행하는 oneshot 서비스copyfail-fix-supervision.timer — 서비스를 매일 (및 부팅 후 5분 뒤) 트리거하는 타이머# 타이머 상태 확인
systemctl status copyfail-fix-supervision.timer
# 다음 예약 실행 확인
systemctl list-timers copyfail-fix-supervision.timer
# 자동 업데이트 비활성화
sudo systemctl stop copyfail-fix-supervision.timer
sudo systemctl disable copyfail-fix-supervision.timer
# 수동으로 업데이트 트리거
sudo systemctl start copyfail-fix-supervision.service
/etc/modprobe.d/disable-algif.conf에 install algif_aead /bin/false를 작성하여 다음 부팅 시 모듈이 로드되지 않도록 함rmmod algif_aead를 호출하여 실행 중인 커널에서 언로드 (모듈이 사용 중이면 건너뜀 — 재부팅 필요)apt-get update 후 비대화형 apt-get upgrade를 실행하여 최신 커널 패키지 설치--check 사용 시 uname -r, lsmod, modprobe 파일 및 최신 설치된 linux-image-* 패키지 검사--revert 사용 시 modprobe 파일을 삭제하고 modprobe를 통해 모듈 재로드실행 중 스크립트는 진행 표시기를 표시합니다:
+ (녹색) — 작업 적용됨- (빨간색) — 작업 되돌려짐. (회색) — 작업 건너뜀 (이미 적용되었거나 해당 없음)! (노란색) — 경고 (예: 재부팅 필요)MIT
| 옵션 | 단축 | 설명 |
|---|
--help | -h | 도움말 메시지 표시 |
--mitigate | -m | 완화만 적용 (algif_aead 모듈 비활성화) |
--upgrade | -u | 커널/패키지만 업그레이드 (apt-get upgrade) |
--check | -c | 현재 상태 표시 (커널 버전, 모듈, 완화 상태) |
--revert | -r | 완화 되돌리기 (커널 패치 및 재부팅 후) |
--supervision | -s | systemd 타이머를 통한 자동 일일 업데이트 활성화 |