needhelp
← Back to blog

Dirty Frag: 리눅스 커널 제로카피 권한 상승 취약점

by xingwangzhe
Linux
Kernel
Security
LPE
Dirty Frag
CVE

Dirty Frag: 리눅스 커널 제로카피 경로의 취약점 체인으로 페이지 캐시 쓰기를 오염, xfrm-ESP와 RxRPC 취약점 연결. 2017년 이후 거의 모든 주류 배포판에 영향, 비밀번호 없는 루트 권한 상승 가능.


또 왔다

솔직히 말해, 이렇게 빨리 또 커널 권한 상승 글을 쓰게 될 줄은 몰랐다.

Copy Fail 기사에서 고작 8일 만이다. algif_aead 블랙리스트가 겨우 터미널에 입력되고, 패치도 따뜻해지기 전에 — Dirty Frag가 터졌다.

더 어이없는 것은 Copy Fail의 완화 조치가 Dirty Frag에 완전히 무효라는 점이다. 이번에는 완전히 다른 커널 서브시스템(xfrm-ESP와 RxRPC 암호화 경로)을 공격하므로 algif_aead를 비활성화하든 말든 전혀 차이가 없다.

Dirty Pipe (2022), Copy Fail (2026.04), Dirty Frag (2026.05)… 매번 “2017년 이후 거의 모든 배포판 영향.” 무슨 뜻일까? 지난 10년 가까이, 시스템에 로그인한 모든 비권한 계정이 조용히 루트가 될 기회가 있었다는 뜻이다.

하지만 생각해보면, 이게 전적으로 커널 개발자들의 잘못일까? 꼭 그렇지는 않다.

최근 몇 년간 AI 기반 코드 감사 도구의 폭발적 성장으로 보안 연구원들이 몇 시간 만에 거의 10년 동안 숨어있던 취약점을 스캔할 수 있게 됐다. 이전에는 수동 라인별 검토가 필요했던 버그가 AI에 의해 일괄로 털려나오고 있다.


타임라인

날짜 이벤트
2017-01 xfrm-ESP 취약점 도입 (commit cac2661c53f3, 9년간 잠복)
2023-06 RxRPC 취약점 도입 (commit 2dc334f1a63a)
2026-04-29 한국 연구원 Hyunwoo Kim (@v4bel)이 RxRPC 취약점 및 전체 익스플로잇을 security@kernel.org에 보고
2026-05-07 linux-distros 메일링 리스트에 취약점 세부 정보 제출, 5일 엠바고 합의
2026-05-07 당일, 제3자가 ESP(xfrm) 취약점 세부 정보와 익스플로잇을 공개, 엠바고 즉시 파기
2026-05-07 배포판 메인테이너와 협의 후 전체 Dirty Frag 문서 공개. 이 시점 CVE, 공식 패치 없음

영향 분석

지표 세부사항
CVE 아직 없음
취약점 유형 결정적 로직 결함, 레이스 조건 아님
익스플로잇 성공률 100%, 첫 실행 시 보장된 성공
영향 범위 2017년 이후 거의 모든 주류 리눅스 배포판
디스크 영향 영구 수정 없음 — 인메모리 페이지 캐시만 오염
Copy Fail 우회 Copy Fail의 algif_aead 비활성화가 완전히 무효

역대 커널 LPE 취약점 비교:

특징 Dirty Cow (2016) Dirty Pipe (2022) Copy Fail (2026) Dirty Frag (2026)
레이스 조건 필요 불필요 불필요 불필요
영향 범위 특정 버전 5.8+ 2017+ 모든 배포판 2017+ 모든 배포판
익스플로잇 복잡도 복잡 복잡 10줄 Python 단일 파일 C
디스크 영향 있음 있음 없음 없음
패치 상태 수정됨 수정됨 수정됨 공식 패치 없음

작동 원리: 왜 “Dirty Frag”인가?

한 문장 핵심

splice()읽기 전용 파일의 페이지 캐시 참조를 네트워크 전송 버퍼(skb)의 frag 슬롯에 이식 → 수신 커널이 frag에 대해 제자리 암호화 연산(in-place crypto, src == dst가 같은 메모리) 수행 → 암호문에 대한 복호화 연산이 읽기 전용 페이지 캐시에 직접 쓰는 STORE 원시가 됨 → su의 머신 코드가 루트 셸 ELF로 대체.

“Dirty”는 페이지 캐시 오염, “Frag”는 skb frag 메커니즘 악용. 합쳐서 — Dirty Frag.


PoC 분석

완전한 익스플로잇은 github.com/V4bel/dirtyfrag에서 오픈소스. 단 한 줄로 컴파일 및 실행:

Terminal window
git clone https://github.com/V4bel/dirtyfrag.git
cd dirtyfrag && gcc -O0 -Wall -o exp exp.c -lutil && ./exp

전체 프로세스가 디스크 파일을 전혀 건드리지 않는다. 온디스크 /usr/bin/su는 그대로, md5도 원래 md5다. 하지만 커널의 페이지 캐시에서 비밀리에 교체됐다.


긴급 대응: 취약 모듈 임시 비활성화

2026년 5월 8일 현재, 공식 커널 패치가 아직 출시되지 않았다. 패치가 나올 때까지 유일한 임시 완화는 세 가지 취약 모듈을 언로드하고 블랙리스트에 추가하는 것이다.

Terminal window
# 시스템 영향 확인
lsmod | grep -E '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"
sudo rmmod esp4 esp6 rxrpc 2>/dev/null
# PoC가 이미 실행됐다고 의심되면 페이지 캐시 정리
echo 3 | sudo tee /proc/sys/vm/drop_caches

부작용:

  • esp4/esp6 비활성화는 IPsec VPN 터널을 중단시킴. IPsec VPN(strongSwan, Libreswan) 사용 시 평가 필요
  • rxrpc 비활성화는 AFS 사용이 아닌 한 영향 최소

AI 가속 취약점 군비 경쟁

Dirty Frag의 노출은 더 깊은 질문을 강제한다: 왜 최근 커널 LPE 취약점이 연속으로 터져나오는가?

취약점 발견 시간 주요 도구 보고부터 공개까지
Dirty Pipe 2022 수동 감사 표준 절차
Copy Fail 2026-04 Xint Code (AI) 약 1개월
Dirty Frag 2026-05 수동 감사 8일 (당일 엠바고 파기)

뒤에는 AI 기반 코드 감사 도구의 폭발적 성장이 있다. AI가 몇 시간 만에 전체 서브시스템을 스캔해 모든 잠재적 제로카피 경로, 제자리 연산, 공유 참조를 뽑아낸다. 더 나은 도구, 더 높은 효율성, 자연히 더 많은 취약점이 “발견”된다 — 커널이 갑자기 나빠진 것이 아니라 구석에 숨은 오래된 빚이 AI에 의해 하나씩 드러나고 있는 것이다.

더 충격적인 것은 공개 생태계의 변화다. Dirty Frag의 엠바고는 제3자에 의해 의도적으로 파기됐으며, 연구원이 security@kernel.org에 제보한 날로부터 전 세계 해커가 무기를 얻는 데 단 8일 만에 이뤄졌다. 패치 윈도우 — 사라졌다.

AI는 취약점 발견을 더 빠르게 만들고, 무기화도 더 빠르게 만든다.

References

Share this page