
Checks whether a Linux system is affected by CVE-2026-99999 (PwnEscape) and prints or applies the distribution-specific kernel fix
English | 한국어
리눅스 시스템이 CVE-2026-99999 ("PwnEscape") 에 영향을 받는지 점검하는 셸 스크립트입니다. 판정 근거를 보여 준 뒤, 그 배포판에 맞는 패치 방법을 출력하거나 직접 패치하고 재부팅합니다.
스크립트에 들어 있는 벤더 데이터는 2026-10-20 기준입니다. 보안 공지는 빠르게 바뀌므로 각 배포판 보안 트래커도 꼭 확인하세요.
| 구성요소 | 리눅스 커널 IPv4 스택 (skb_checksum_help → ip_do_fragment) |
| 원인 | virtio-net 헤더·패킷 소켓이 넘긴 checksum_start / csum_offset 을 IPv4 헤더와 대조하지 않아, 체크섬을 완료할 때 이미 검증된 헤더 길이를 덮어쓸 수 있음 (CWE-20) |
| 영향 | 게스트 VM → 호스트: 호스트 메모리 유출, 호스트 크래시, 호스트 root 권한 코드 실행 |
| 심각도 | CVSS 3.1 9.3 Critical (커널 CNA) · 8.8 Important (Red Hat) |
| 영향 범위 | 2.6.27 이후 모든 커널 |
| 수정 | 업스트림 커밋 6785011f8b16 "ipv4: validate checksum_start before completing checksum" |
| 우회책 | 공개된 우회책 없음. 수정된 커널로 부팅하는 것이 유일한 해결책 |
가장 위험한 곳은 신뢰할 수 없는 게스트를 실행하는 가상화 호스트(KVM/QEMU, Firecracker, Proxmox, 클라우드·VPS 호스트)입니다. 게스트 커널만 패치해서는 호스트가 보호되지 않습니다.
| 파일 | 설명 |
|---|---|
scanner-cve-2026-99999.sh | 스캐너, 영어 출력 |
scanner-cve-2026-99999_kr.sh | 같은 스캐너, 한국어 출력 |
두 파일의 동작은 같고, 출력 문구와 주석만 다릅니다.
| 파일 | SHA-256 | MD5 |
|---|---|---|
scanner-cve-2026-99999.sh | 65c3c226487d5bd80d436c06cc5256304cfa17011be82d8404c54355998801a6 | 8ab38c22ed737986775f6f64f5a800aa |
scanner-cve-2026-99999_kr.sh | 05d4af248ab2cab26566c81067ed35dd0a8c966f7fa8459867597c56ac43a805 | 6223f8db3c1a8dec361fe301a7193ff4 |
실행 전에 파일이 변조되지 않았는지 확인하세요.
echo "05d4af248ab2cab26566c81067ed35dd0a8c966f7fa8459867597c56ac43a805 scanner-cve-2026-99999_kr.sh" | sha256sum -c
echo "6223f8db3c1a8dec361fe301a7193ff4 scanner-cve-2026-99999_kr.sh" | md5sum -c
이 값은 v1.0.0 릴리스의 파일 기준입니다. 이후 커밋의 파일은 값이 다를 수 있습니다.
릴리스에서 받기 (권장):
curl -LO https://github.com/sqzer-x/cve-2026-99999-scanner/releases/download/v1.0.0/scanner-cve-2026-99999_kr.sh
echo "05d4af248ab2cab26566c81067ed35dd0a8c966f7fa8459867597c56ac43a805 scanner-cve-2026-99999_kr.sh" | sha256sum -c
sudo bash scanner-cve-2026-99999_kr.sh
저장소에서 받기:
git clone https://github.com/sqzer-x/cve-2026-99999-scanner.git
cd cve-2026-99999-scanner
sudo bash scanner-cve-2026-99999_kr.sh
컨테이너 안이 아니라 호스트에서 실행하세요. 점검은 일반 사용자로도 되며, root 권한(sudo)은 메뉴 1번에만 필요합니다.
배포판(/etc/os-release)과 실행 중인 커널(/proc)을 확인합니다.
커널을 판정합니다.
라이브패치 적용 여부(kpatch, Canonical Livepatch, SUSE kernel-livepatch, Ksplice), 설치만 되고 아직 부팅하지 않은 수정 커널, 다음 부팅 커널의 수정 여부를 확인합니다.
노출 위험 요소를 보여 줍니다: /dev/kvm, vhost_net, TUN/TAP 장치, VM 프로세스(QEMU, Firecracker, Proxmox kvm 등), 사용자 네임스페이스 설정.
안전하지 않으면 메뉴를 띄웁니다.
1. 지금 패치 (수정 커널 설치 후 재부팅)
2. 나중에 수동 패치 (명령어 보기)
3. 종료
터미널이 아닌 곳(cron, 파이프, 출력을 파일로 돌린 경우)에서는 메뉴 없이 2번처럼 명령어만 출력합니다.
| 옵션 | 설명 |
|---|---|
-l, --list | 배포판별 현황표만 출력 |
--no-color | 색상 없이 출력 (NO_COLOR 환경 변수도 지원) |
--os-release 파일 | /etc/os-release 대신 지정한 파일 사용 |
--uname-r 문자열 | 실행 중인 커널 대신 지정한 커널 릴리스로 판정 (로컬 검사 생략) |
--uname-v 문자열 | 커널 빌드 문자열(uname -v). Debian 커널을 --uname-r 로 판정할 때 필요 |
-h, --help | 도움말 |
| 코드 | 의미 |
|---|---|
| 0 | 안전 (수정됨, 영향 없음, 라이브패치 적용) |
| 1 | 취약 — 수정 커널이 나와 있음 |
| 2 | 수정 커널 설치됨 — 재부팅 필요 |
| 3 | 취약 — 벤더 수정본 미출시 또는 지원 종료 |
| 4 | 판단 불가 (알 수 없는 커널, 컨테이너 안에서 실행 등) |
종료 코드를 이용해 구성 관리 도구나 모니터링에서 쓸 수 있습니다.
bash scanner-cve-2026-99999_kr.sh --no-color > report.txt; echo "종료 코드: $?"
다른 곳에서 모은 값으로도 판정할 수 있습니다. 예를 들어 컨테이너 안에 있거나 자산 목록만 가지고 있을 때입니다.
# 대상 서버에서: uname -r ; uname -v ; cat /etc/os-release > os-release.txt
bash scanner-cve-2026-99999_kr.sh --uname-r 5.14.0-570.12.1.el9_6.x86_64 --os-release os-release.txt
bash scanner-cve-2026-99999_kr.sh --uname-r 6.1.0-38-amd64 \
--uname-v '#1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-08-02)' --os-release os-release.txt
bash scanner-cve-2026-99999_kr.sh --list 로도 같은 표를 볼 수 있습니다.
| 배포판 | 상태 | 수정 버전 |
|---|---|---|
| 업스트림 (kernel.org) | 수정됨 | 5.10.272 · 5.15.223 · 6.1.190 · 6.6.159 · 6.12.113 · 6.18.57 · 7.2.11 · 7.3-rc7. 그 밖의 브랜치는 지원 종료 |
| AlmaLinux 8 / 9 / 10 | 수정됨 (almalinux-testing 저장소, 2026-10-16) | kernel-4.18.0-553.174.2.el8_10 · kernel-5.14.0-687.57.2.el9_8 · kernel-6.12.0-211.66.2.el10_2 |
| AlmaLinux Kitten 10 | 다음 정기 커널 업데이트에 포함 예정 | — |
| RHEL 7 / 8 / 9 / 10 | 영향 받음, 수정본 미출시 | — |
| Rocky Linux, CentOS Stream, 기타 RHEL 호환 | 공개된 수정본 없음 | — |
| Oracle Linux UEK | 수정됨 | UEK R6 5.4.17-2136.360.3.1 (ELSA-2026-500397) · UEK R7 5.15.0-325.221.6.4 (ELSA-2026-500398) · UEK R8 6.12.0-207.111.5.4 (ELSA-2026-500399) |
| Oracle Linux RHCK | 공지 없음 | — |
| Amazon Linux 2 | 수정됨 | 4.14 4.14.355-287.753 (ALAS2-2026-3962) · 5.4 5.4.302-229.498 (ALAS2KERNEL-5.4-2026-131) · 5.10 5.10.269-270.1108 (ALAS2KERNEL-5.10-2026-133) · 5.15 5.15.221-157.262 (ALAS2KERNEL-5.15-2026-117) |
| Amazon Linux 2023 | 수정됨 | kernel 6.1.188-233.385 (ALAS2023-2026-3197) · kernel6.12 6.12.110-135.201 (ALAS2023-2026-3196) · kernel6.18 6.18.54-121.166 (ALAS2023-2026-3192) |
| Debian | 수정됨 | bookworm 6.1.190-1 (DLA-4841-1) · trixie 6.12.113-1 (DSA-6568-1) · forky/sid 7.2.11-1. bullseye 이하는 추적 대상 아님 |
| Ubuntu 14.04 – 26.04 | Needs evaluation, 수정본 미출시 | — |
| SLES 12 SP5 / 15 SP4–SP7 / 16.x, SLE Micro, openSUSE Leap 16 | 영향 받음, Pending | — |
| openSUSE Leap 15.x, SLES 15 SP1–SP3 | 지원 종료 | — |
| Fedora, Arch, openSUSE Tumbleweed, Alpine, Gentoo | 업스트림 stable 을 따름 | 업스트림 행 참고 |
AWS 는 EC2·Lambda·Fargate 호스트 인프라가 영향을 받지 않는다고 발표했습니다. 다만 Amazon Linux 인스턴스 자체의 커널은 따로 업데이트해야 합니다.
dnf/yum update 'kernel*', Debian/Ubuntu 에서는 설치된 linux-* 패키지만 --no-remove 로 올립니다. 원래 자동 설치였던 패키지는 그 표시를 유지하므로 오래된 커널은 계속 apt autoremove 로 정리됩니다.pacman -Syu, zypper dup, apk upgrade, transactional-update dup, Proxmox apt-get dist-upgrade./boot 여유 공간이 100MB 미만이면 패치를 시작하지 않습니다.grubby 기본값, 없으면 가장 최신 설치 커널, SLE Micro / MicroOS 는 다음 btrfs 스냅샷) 그 커널 이미지와 initramfs 가 있을 때만 재부팅합니다.GRUB_DEFAULT 가 0 이 아니거나, bash 가 없으면 카운트다운 대신 yes 를 입력해야 합니다.bash, awk, sed, grep, coreutils 가 있는 리눅스. sh 로 실행해도 스스로 bash 로 다시 실행합니다.rpm / dpkg, systemd-detect-virt, grubby, gzip, stat, df, btrfs.grubby 가 없는 GRUB 시스템은 가장 최신 설치 커널이 다음에 부팅된다고 가정합니다 (GRUB_DEFAULT=0).