
각 배포판별 CVE-2026-31431("Copy Fail") Linux 커널 LPE 완화 스크립트.
CVE-2026-31431("Copy Fail")에 대한 배포판별 완화 스크립트 — 2017년 이후 출시된 사실상 모든 배포판에 영향을 미치는 Linux 커널 algif_aead 로컬 권한 상승 취약점입니다.
각 스크립트는 배포판 저장소에서 패치된 커널을 설치하거나(사용 가능한 경우), 사용할 수 없으면 취약한 algif_aead 커널 모듈을 블랙리스트에 등록하여 패치된 커널로 재부팅할 때까지 익스플로잇 경로를 차단합니다.
배포판에 맞는 스크립트를 선택하고, 감사한 후 root로 실행하세요.
# Ubuntu
sudo bash scripts/ubuntu.sh
# Debian
sudo bash scripts/debian.sh
# RHEL / Rocky / AlmaLinux / CentOS Stream
sudo bash scripts/rhel.sh
# Fedora
sudo bash scripts/fedora.sh
# Arch
sudo bash scripts/arch.sh
# openSUSE Leap / Tumbleweed
sudo bash scripts/opensuse.sh
# Alpine
sudo bash scripts/alpine.sh
# 기타 (Gentoo, NixOS, 불변 배포판 등)
sudo bash scripts/universal.sh
아무것도 변경하지 않는 미리보기를 원하면 먼저 --check를 사용하세요.
배포판별 스크립트는 다음 알고리즘을 실행합니다. 는 4~5단계를 건너뜁니다.
universal.shsudo로 재실행합니다.--force가 없으면 호스트와 일치하지 않는 배포판에서 실행을 거부합니다.uname -r 읽기.PATCHED_KERNEL_VERSION이 기록되어 있고 실행 중인 커널이 해당 버전 이상이면 스크립트는 남은 완화 파일을 제거하고 종료합니다.--yes로 건너뛰기). 설치 후 수동으로 재부팅합니다./etc/modprobe.d/cve-2026-31431.conf에 blacklist algif_aead 및 install algif_aead /bin/true를 작성한 다음 AF_ALG 소켓 바인드 프로브를 통해 익스플로잇 경로가 차단되었는지 확인합니다.PATCHED_KERNEL_VERSION = PENDING은 해당 배포판에 대해 유지관리자가 아직 수정된 커널 버전을 기록하지 않았음을 의미합니다. 각 행은 한 줄 PR을 통해 업데이트됩니다.
| 배포판 | 커널 패키지 | 패치된 버전 | 마지막 확인 |
|---|---|---|---|
| Ubuntu (24.04) | linux-image-generic | PENDING | 2026-05-01 |
| Debian | linux-image-amd64 | PENDING | 2026-05-01 |
| RHEL / Rocky / Alma | kernel | PENDING | 2026-05-01 |
| Fedora | kernel | PENDING | 2026-05-01 |
| Arch | linux | PENDING | 2026-05-01 |
| openSUSE | kernel-default | PENDING | 2026-05-01 |
| Alpine | linux-lts | PENDING | 2026-05-01 |
| 플래그 | 의미 |
|---|---|
-y, --yes | 비대화형; 커널 설치 프롬프트를 건너뜁니다. |
--force | 배포판 불일치 확인을 우회합니다. |
--check | 읽기 전용 미리보기; 수행할 작업을 출력하고 아무것도 변경하지 않습니다. |
--undo | /etc/modprobe.d/cve-2026-31431.conf를 제거합니다. 패치된 커널 설치 후 사용하세요. |
-h, --help | 사용법 정보. |
스크립트는 이 프로브를 자동으로 실행합니다. 직접 확인하려면:
python3 - <<'PY'
import socket, errno
try:
s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0)
s.bind(("aead", "authencesn(hmac(sha1),cbc(aes))"))
print("BAD: bind succeeded — host is NOT mitigated")
s.close()
except OSError as e:
print(f"OK: bind blocked, errno={e.errno} ({e.strerror})" if e.errno == errno.ENOENT
else f"INCONCLUSIVE: errno={e.errno}")
PY
완화 또는 패치된 호스트는 OK: bind blocked, errno=2 ...를 출력합니다.
배포판에서 수정된 커널을 게시하고 재부팅한 후, AF_ALG aead를 합법적으로 사용하는 애플리케이션이 다시 작동할 수 있도록 modprobe 블랙리스트를 제거하세요:
sudo bash scripts/<your-distro>.sh --undo
배포판에서 수정된 커널을 게시하면:
scripts/<distro>.sh에서 한 줄을 편집하세요 — PATCHED_KERNEL_VERSION을 수정된 패키지 버전으로 설정합니다(dpkg-query -W / rpm -q VERSION-RELEASE / pacman -Q가 반환하는 형식).<distro>: fix shipped in <version> 제목의 PR을 열어주세요.보안 완화 도구입니다. 인터넷에서 찾은 스크립트를 sudo bash로 실행하기 전에 반드시 감사하세요. 유지관리자는 MIT 라이선스에 따라 어떠한 책임도 지지 않습니다.
MIT.