
CVE-2026-43284/CVE-2026-43500 'DirtyFrag' 무해 패치 및 완화 탐지 스크립트
TL;DR: 두 가지 새로운 Linux 커널 버그가 있습니다. 이 스크립트는 시스템이 취약한지 알려줍니다. 패치를 적용하세요.
2026년 5월 7일, 보안 연구원 Hyunwoo Kim(@v4bel)이 Dirty Frag라는 취약점 클래스를 공개적으로 공개했습니다. 패치가 준비되기 전에 엠바고가 깨지면서 예정보다 일찍 공개된 것입니다.
이 취약점은 권한이 없는 로컬 사용자가 루트 권한을 얻을 수 있게 합니다. 레이스 컨디션도, 타이밍 윈도우도 없습니다. 신뢰성이 매우 높습니다.
영향을 받는 두 개의 서브시스템은 다음과 같습니다:
| CVE | 서브시스템 | 모듈 | 도입 시점 | 수정 시점(업스트림) |
|---|---|---|---|---|
| CVE-2026-43284 | IPsec ESP | esp4, esp6 | 2017년 1월 (cac2661c53f3) | 2026년 5월 7일 (f4c50a4034e6) |
| CVE-2026-43500 | RxRPC | rxrpc | 2023년 6월 (2dc334f1a63a) | 2026년 5월 10일 (aa54b1d27fe0) |
두 버그 중 어느 하나만으로는 완전히 신뢰할 수 없습니다. ESP 경로는 사용자 네임스페이스를 생성할 수 있는 권한이 필요하며(Ubuntu의 AppArmor가 차단함), RxRPC 경로는 rxrpc.ko가 로드되어 있어야 합니다(대부분의 배포판이 기본적으로 로드하지 않음). 이 둘을 함께 사용하면 서로의 사각지대를 보완하여 사실상 모든 주요 배포판에서 공격 체인이 작동합니다.
공개 PoC(개념 증명)가 공개되어 있습니다. 이미 활발히 사용되고 있다고 가정하세요.
이 스크립트는 악용을 가능하게 하는 조건이 시스템에 있는지 확인하고, 단순히 예/아니오가 아니라 구체적으로 왜 노출되었는지 알려줍니다.
이 스크립트는 아무것도 수정하지 않습니다. 아무것도 악용하지 않습니다. 시스템의 진실만 알려줍니다.
python3 dirty_frag_detect.py
이것이 전부입니다. 색상으로 구분된 출력, 각 발견 사항에 대한 구체적인 이유, 마지막에 완화 조치 요약이 제공됩니다.
[
]
진짜 해결책은 커널을 패치하는 것입니다. 배포판의 보안 권고를 확인하세요:
| 배포판 | 확인 위치 |
|---|---|
| Ubuntu / Debian | sudo apt-get update && sudo apt-get dist-upgrade |
| RHEL / AlmaLinux / Rocky |
기다리는 동안(또는 배포판에 패치가 아직 없는 경우) 취약한 모듈을 블랙리스트에 등록하세요:
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; \
echo 3 > /proc/sys/vm/drop_caches"
⚠️ 이 작업을 하기 전에:
esp4/esp6블랙리스트는 IPsec 터널(strongSwan, Libreswan, WireGuard는 영향 없음)을 중단시킵니다. VPN 게이트웨이에는 적용하지 마세요.rxrpc블랙리스트는 AFS 분산 파일시스템 클라이언트를 중단시킵니다. 거의 아무도 사용하지 않지만 — 먼저 확인하세요.
중요: 완화 조치가 적용되기 전에 시스템이 공격 대상이 되었을 수 있다면, 악용 코드는 디스크를 건드리지 않고 페이지 캐시의 바이너리를 수정할 수 있습니다. 디스크 체크섬을 확인하는 파일 무결성 도구(Tripwire, AIDE)는 아무 문제도 발견하지 못합니다. 재부팅하면 페이지 캐시가 지워지고 디스크 상태가 복원됩니다.
두 버그 모두 커널의 제자리 복호화(in-place decryption) 고속 경로에 있습니다. 소켓 버퍼가 커널이 개인적으로 소유하지 않은 페이징된 프래그먼트를 전달할 때 — 예를 들어 splice() 또는 sendfile()을 통해 연결된 파이프 페이지 — ESP 및 RxRPC 수신 경로는 먼저 복사하지 않고 외부 지원 페이지 위에서 직접 복호화합니다.
공격자는 /usr/bin/su(또는 다른 읽기 가능한 파일)의 캐시에서 페이지를 이러한 복호화 경로 중 하나로 유도하고, 자신의 키를 사용하여 "복호화된 출력"이 자신이 선택한 바이트가 되도록 할 수 있습니다. 커널은 해당 바이트를 su의 메모리 내 캐시 복사본에 직접 기록합니다. 디스크의 파일은 건드리지 않습니다. 커널은 페이지를 더티로 표시하지 않습니다.
이 시점부터 su를 실행하는 모든 프로세스는 공격자의 버전을 실행합니다 — drop_caches 또는 재부팅 전까지.
ESP 변종(cac2661c53f3)과 RxRPC 변종(2dc334f1a63a)은 동일한 싱크를 공유하지만 서로 상쇄되는 서로 다른 전제 조건을 가지므로, 모든 주요 구성에서 공격 체인이 신뢰할 수 있습니다.
전체 기술 문서는 V4bel/dirtyfrag를 참조하세요.
크레딧: 원본 연구, 공개 및 PoC에 대한 Hyunwoo Kim(@v4bel)
탐지 전용입니다. 평가 권한이 있는 시스템에만 사용하세요.
| 확인 항목 | 무엇을 확인하는가 |
|---|
| 커널 버전 | 이 커널이 영향을 받는 범위에 속하는가? |
| 패치 — CVE-2026-43284 | esp4/esp6 수정(f4c50a4034e6)이 커널 패키지에 포함되어 있는가? |
| 패치 — CVE-2026-43500 | 배포판이 rxrpc 수정(aa54b1d27fe0)을 백포트했는가? |
esp4 모듈 | 로드됨, 로드 가능, 또는 블랙리스트됨? |
esp6 모듈 | 로드됨, 로드 가능, 또는 블랙리스트됨? |
rxrpc 모듈 | 로드됨, 로드 가능, 또는 블랙리스트됨? |
| XFRM netlink 소켓 | 권한 없는 사용자가 지금 열 수 있는가? |
| AF_RXRPC 소켓 | 권한 없는 사용자가 지금 열 수 있는가? |
| 완화 조치 | AppArmor, SELinux, 권한 없는 사용자 네임스페이스, 블랙리스트 파일 |
sudo dnf update kernel |
| Arch | sudo pacman -Syu linux |
| CloudLinux | CloudLinux 권고 |
| 날짜 | 이벤트 |
|---|
| 2026-04-30 | Linux 커널 보안 팀에 보고됨 |
| 2026-05-07 | 제3자에 의해 엠바고가 깨짐; Hyunwoo Kim이 예정보다 일찍 공개 |
| 2026-05-07 | 공개 PoC 공개; CVE-2026-43284 지정 |
| 2026-05-07 | CVE-2026-43284 수정(f4c50a4034e6)이 netdev/net.git에 병합됨 |
| 2026-05-08 | CVE-2026-43500 예약됨; 배포판이 CVE-2026-43284 패치 커널 배포 시작 |
| 2026-05-10 | CVE-2026-43500 수정(aa54b1d27fe0)이 메인라인에 병합됨 |
| 2026-05-11 | CVE-2026-43500 배포판 백포트 진행 중 |