
“Copy Fail & DirtyFrag: Linux Page Cache 계열 취약점” 관련 내용은 최근 Linux 커널에서 반복적으로 발견되는 매우 위험한 취약점 계열을 설명합니다. 핵심은 단순한 버그 하나가 아니라, Linux Kernel의 Page Cache / Pipe Buffer / Zero-copy 처리 구조 자체가 공격 표면(Attack Surface) 으로 활용되고 있다는 점입니다.
이번 이슈는 과거의 유명한 Linux 권한 상승 취약점들과 매우 유사한 계열입니다.
- Dirty COW (CVE-2016-5195)
- Dirty Pipe (CVE-2022-0847)
- Copy Fail (CVE-2026-31431)
- Dirty Frag (CVE-2026-43284, CVE-2026-43500)
즉, Linux Kernel 내부의 “페이지 캐시(Page Cache)” 처리 로직에서 반복적으로 비슷한 구조적 문제가 발견되고 있습니다.
핵심 개념 — 왜 위험한가?
Linux Page Cache란?
Linux는 파일 접근 성능 향상을 위해 메모리에 파일 내용을 캐싱합니다.
cat /etc/passwd
실제로는 디스크를 매번 읽는 것이 아니라
Disk -> Page Cache -> User Process
구조로 동작합니다.
문제는
일부 커널 기능이 “읽기 전용(Read-only)” 파일 페이지를 잘못 공유하거나 재사용하면서,
공격자가 해당 메모리 페이지를 수정할 수 있게 된다는 점입니다.
즉
읽기 전용 파일
↓
Page Cache
↓
공격자가 덮어쓰기 가능
가 되어버립니다.
Dirty Pipe → Copy Fail → Dirty Frag 흐름
Dirty Pipe (2022)
Dirty Pipe는 pipe buffer 초기화 문제로 인해
읽기 전용 파일 overwrite 가능
하게 만들었습니다.
대표 공격
/etc/passwd 수정
SUID 바이너리 변경
authorized_keys 삽입
Copy Fail (2026)
Dirty Pipe 이후에도 비슷한 로직 문제가 여러 곳에서 발견되었습니다.
Copy Fail
splice()
sendfile()
zero-copy path
등의 최적화 경로에서
커널이 페이지 ownership 검증 실패
를 일으켜 Page Cache overwrite가 가능했습니다.
Dirty Frag (2026)
이번 Dirty Frag는 또 다른 후속 계열입니다.
영향 영역
- xfrm-ESP (IPsec)
- RxRPC subsystem
공통 특징
in-place decryption
과정에서
pipe page reference
가 살아남아 Page Cache write primitive를 제공합니다.
즉
네트워크 패킷 처리
→ zero-copy 최적화
→ page reference 재사용
→ page cache corruption
→ root 권한 획득
흐름입니다.
왜 “Dirty” 계열이 계속 발생하는가?
여러 연구자들이 강조하는 핵심은
Linux Kernel이 성능 최적화를 위해 “복사 없는(zero-copy)” 구조를 많이 사용하면서
메모리 ownership 검증이 매우 복잡해졌다는 점입니다.
Zero-copy 구조
원래 안전한 방식
Kernel Buffer -> Copy -> User Buffer
Zero-copy 방식
Shared Page Reference
사용.
장점
- 빠름
- 메모리 절약
- 네트워크 고성능
단점
- ownership 추적 어려움
- reference count 오류
- stale pointer 문제
- writable 상태 전이 오류
공격 흐름
1) 일반 사용자 계정 확보
- SSH 계정 탈취
- 웹쉘
- 취약한 컨테이너
- 내부 사용자 악성 행위
2) Local Privilege Escalation 수행
PoC 실행
./exploit
3) Page Cache overwrite
/usr/bin/su
/bin/bash
/etc/passwd
수정.
4) root shell 획득
uid=0(root)
특히 위험한 이유
매우 안정적(deterministic)
Dirty COW는 race condition 기반이라 불안정했습니다.
하지만 Dirty Frag는
race condition 거의 없음
이라는 점이 매우 위험합니다.
- 재현 쉬움
- 성공률 높음
- crash 적음
- 탐지 어려움
Elastic Security Labs 탐지 포인트
1) 비정상 pipe/splice/sendfile 사용
splice()
sendfile()
vmsplice()
호출 증가. Elastic Defend/eBPF 기반 탐지 가능.
2) SUID 바이너리 overwrite
/bin/su
/usr/bin/passwd
/usr/bin/sudo
변경.
3) 비정상 root escalation
패턴
user -> su -> root
짧은 시간 내 발생.
4) ELF payload 생성
gcc exploit.c -o update
./update
행위 탐지.
Microsoft도 실제 공격에서
./update
실행 사례를 관찰했다고 언급했습니다.
보안 점검 포인트
이 취약점은
원격 RCE가 아니라 LPE(Local Privilege Escalation)
입니다.
즉
“이미 침투한 공격자가 root가 되는 단계”
에 사용됩니다.
반드시 함께 봐야 하는 것
| 영역 | 중요성 |
|---|---|
| SSH 침입 탐지 | 매우 중요 |
| Webshell 탐지 | 매우 중요 |
| 컨테이너 탈출 | 중요 |
| 내부 사용자 권한 남용 | 중요 |
| EDR 행위 기반 탐지 | 핵심 |
| 커널 패치 | 필수 |
실무 대응 방안
1) 즉시 커널 업데이트
가장 중요.
2) 임시 mitigation
Dirty Frag 대응 예시
sudo sh -c "
printf 'install esp4 /bin/false
install esp6 /bin/false
install rxrpc /bin/false
' > /etc/modprobe.d/dirtyfrag.conf
"
모듈 언로드
rmmod esp4 esp6 rxrpc
3) EDR 룰 추가
탐지 추천
splice()
vmsplice()
sendfile()
비정상 호출.
4) SUID 파일 무결성 검사
rpm -Va
debsums
AIDE
Wazuh FIM
osquery hash monitoring
5) Page Cache 초기화
공격 흔적 제거 목적
echo 3 > /proc/sys/vm/drop_caches
주의: 서비스 영향 가능.
Kubernetes / Container 환경 영향
컨테이너 내부 일반 사용자가
Container escape 이후
Host root 획득
가능성이 존재합니다.
- privileged container
- hostPID
- hostNetwork
- CAP_SYS_ADMIN
- kernel shared host
환경은 위험합니다.
의미하는 것
이번 계열이 의미하는 것은 단순 CVE 하나가 아닙니다.
Linux Kernel의 구조적 문제
최근 흐름
성능 최적화
→ zero-copy 확대
→ page sharing 증가
→ ownership 복잡성 증가
→ Dirty 계열 반복
입니다.
즉
“Page Cache 자체가 공격 표면이 되었다”
는 점이 핵심입니다.
조직 차원의 권장 사항
운영관리
- kernel live patch 도입 검토
- immutable infra 고려
- 최소 권한 사용자 운영
보안관리
- LPE 탐지 룰 강화
- EDR syscall telemetry 확보
- SUID integrity monitoring
- SSH 이상행위 탐지
DevOps/K8s
- privileged container 최소화
- host mount 제한
- seccomp/AppArmor 강화
- eBPF 기반 runtime monitoring
한 줄 요약
Dirty Frag / Copy Fail 계열은
Linux Kernel의 Page Cache와 Zero-copy 구조를 악용하여,
일반 사용자가 안정적으로 root 권한을 획득할 수 있는 최신 LPE 취약점 계열입니다.
그리고 가장 중요한 포인트는
앞으로도 비슷한 “Dirty 계열” 취약점이 계속 나올 가능성이 매우 높다는 점입니다.
댓글