‘Copy Fail’(CVE-2026-31431)이 발견된 지 일주일 후, 연구원 김현우는 동일한 광범위한 영역인 IPsec ESP 및 rxrpc에서 두 번째 리눅스 커널 로컬 권한 상승 취약점을 공개하고 이를 ‘Dirty Frag’라고 명명했다. 이 취약점에 대한 작동 가능한 공개 개념 증명(PoC)이 존재한다. 권한이 없는 로컬 사용자라면 누구나 이를 이용해 단 한 줄의 명령어로 루트 권한을 획득할 수 있다.
KernelCare 엔지니어링 팀은 취약점이 공개된 지 24시간 이내에 해당 벤더의 수정 공지를 앞지르며 전체 EL8 커널 제품군을 위한 라이브 패치를 배포했으며, EL9, Ubuntu, Debian 및 Proxmox VE도 동일한 릴리스 주기에 맞춰 뒤를 이었습니다. 이 패치는 실행 중인 커널에 적용되며 재부팅 없이도 즉시 효력을 발휘합니다.
“Copy Fail 2: Electric Boogaloo”라는 이름의 두 번째 공개 익스플로잇은 이 별칭으로 동일한 취약점을 지칭합니다. 별도의 “Copy Fail 2” CVE는 존재하지 않습니다. 본 권고문의 모든 내용이 적용됩니다.
배경: 공개 PoC 및 기술 문서 · oss-security 공개 · CVE-2026-43284에 대한 NVD 등록 정보 · 업스트림 수정 사항
이 문제가 시급한 이유
이 결함은 esp4, esp6 및 rxrpc의 인플레이스(in-place) 복호화 경로에 있습니다. 수신 경로가 커널이 독점적으로 소유하지 않은 페이지화된 버퍼(예: splice(2) / sendfile(2)를 통해 소켓에 도달하는 파이프 페이지)를 통해 복호화할 때, 권한이 없는 프로세스가 결과 평문(plaintext)에 대한 참조를 유지할 수 있으며, 이로 인해 페이지 캐시에 쓰기 연산이 발생하게 됩니다. 공개된 PoC는 이 연산을 단 한 번의 명령어로 루트 권한을 획득하는 데 활용합니다.
배포처들이 대응을 조율하기도 전에 2026년 5월 7일, 책임 있는 공개(responsible disclosure)에 대한 공개 금지 조치가 해제되었습니다. CVE 식별자가 할당되기도 전이고, 공급업체의 수정 패치가 준비되기도 전에 작동하는 익스플로잇이 공개되었습니다. 신뢰할 수 없는 사용자가 코드를 실행할 수 있는 모든 시스템에서는 이 문제를 당일 패치 적용이 필요한 사건으로 간주해야 합니다.
CVE 할당 현황 업데이트:
- xfrm-ESP 페이지 캐시 쓰기 취약점은 CVE-2026-43284 로 등록되어 있습니다.
- rxrpc 페이지 캐시 쓰기 취약점은 CVE-2026-43500으로 지정되었습니다(NVD 등록 대기 중).
KernelCare 라이브 패치: 지금 바로 이용 가능, 재부팅 불필요
KernelCare는 지원되는 배포판 전반에 걸쳐 벤더의 오류 수정 공지가 나오기 전에 실시간 패치를 제공했습니다:
- EL8 계열 (RHEL 8, CentOS 8, Oracle Linux 8, CloudLinux 8, CloudLinux 7 Hybrid, AlmaLinux 8, Rocky Linux 8)
- EL9 계열 (RHEL 9, AlmaLinux 9, Oracle Linux 9, Rocky Linux 9)
- Ubuntu 22.04 LTS (Jammy), AWS 및 HWE 변형 포함
- 데비안 12 (Bookworm)
- Proxmox VE 7 (5.15 커널) 및 Proxmox VE 8
사용자는 다음 kcarectl –update 실행 시 자동으로 수정 사항을 적용받게 됩니다.
FIPS 커널용 ELS도 다루고 있습니다
TuxCare의 AlmaLinux 9.2 및 9.6용 ‘Endless Lifecycle Support(ELS)’ FIPS 인증 커널에 패치가 적용되었습니다. ELS-FIPS 고객은 별도의 조치 없이 동일한 KernelCare 배포 채널(각각 릴리스 K20260508_20 및 K20260508_19)을 통해 이 수정 사항을 받게 됩니다.
KernelCare 고객께서 취해야 할 조치
대부분의 경우 별다른 조치가 필요하지 않습니다. kcarectl 자동 업데이트가 활성화되어 있는 경우(기본 설정), 다음 예약된 폴링 시점에 패치가 가져와 적용됩니다. 즉시 적용하려면:
kcarectl --update
패치가 적용되었는지 확인하는 방법
로드된 패치의 빌드 시간을 확인하세요:
kcarectl --info | grep kpatch-build-time
2026년 5월 8일 또는 그 이후에 배포된 모든 패치에는 해당 수정 사항이 포함되어 있습니다. 대신 CVE 참조 번호를 통해 확인하려면:
kcarectl --patch-info | grep -i 'CVE-2026-43284\|CVE-2026-43500\|dirty.frag\|xfrm'
uname -r 명령어가 반환하는 커널 버전 문자열은 KernelCare를 사용해도 변경되지 않습니다. 이는 실행 중인 커널이 디스크에서 교체되는 것이 아니라 메모리 내에서 패치되기 때문입니다.
임시 대응 조치 (즉시 업데이트할 수 없는 경우)
지금 당장 KernelCare 라이브 패치를 적용할 수 없다면, esp4, esp6 및 rxrpc 모듈이 로드되지 않도록 블랙리스트에 추가하고, 이미 로드되어 있다면 이를 언로드하십시오:
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
라이브 패치가 적용된 후 원상태로 되돌리려면:
sudo rm /etc/modprobe.d/dirtyfrag.conf
호환성: esp4 및 esp6는 IPsec에서 사용하는 커널 측 ESP 변환 방식입니다. 이를 비활성화하면 해당 시스템에서 커널 데이터 경로를 사용하는 IPsec 터널이 작동하지 않게 됩니다. IPsec, strongSwan 또는 Libreswan 터널을 종단하거나 중계하는 호스트에는 이 완화 조치를 적용하지 마십시오. rxrpc는 AFS 클라이언트에서 거의 독점적으로 사용되는 AF_RXRPC 전송 방식이며, 일반적인 웹 호스팅 서버에는 존재하지 않습니다.
완화 조치 후 페이지 캐시 바이너리 복원
이 취약점은 루트 권한을 획득하는 과정에서 페이지 캐시에 있는 정상적인 시스템 바이너리를 변조할 수 있으므로, 해당 조치가 적용되기 전에 이미 공격을 받았을 가능성이 있는 시스템에서는 이 조치만으로는 충분하지 않습니다. 완화 조치를 적용한 후에는 페이지 캐시를 비워야 합니다:
echo 3 | sudo tee /proc/sys/vm/drop_caches
링크
- Canonical PoC (김현우 / V4bel)
- 연구자 소개 (dirtyfrag.io)
- OSS 보안 공개 스레드
- lore.kernel.org 게시물
- CVE-2026-43284에 대한 NVD 항목
- 상류 수정 사항 (netdev/net.git 커밋 f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4)
아직 KernelCare를 사용하지 않으시나요?
KernelCare는 재부팅이나 유지보수 시간 없이도 실행 중인 시스템에 커널 CVE에 대한 실시간 패치를 제공합니다. 공개된 지 24시간 만에 ‘Dirty Frag’ 문제를 해결했던 것과 동일한 배포 모델이 향후 모든 고위험 커널 CVE에 적용될 것입니다.
