
이 저장소에는 Linux 로컬 권한 상승 문제로 XFRM/ESP 페이지 캐시 쓰기 경로와 관련된 DirtyFrag CVE-2026-43284에 대한 실습 검증 보고서와 탐지 아티팩트가 포함되어 있습니다. 주요 초점은 auditd 텔레메트리, 이벤트 상관관계 및 SOC 중심 탐지 로직입니다.
범위: CVE-2026-43284와 관련된 XFRM/ESP 경로에 초점을 맞춘 Linux 로컬 권한 상승(LPE) 검증.
이 저장소에는 공개 DirtyFrag PoC에 대한 통제된 실험실 검증 결과인 영문 보고서와 증거 자료가 포함되어 있습니다. 초점은 악용 가이드를 제공하는 것이 아니라 Linux 감사 로그에서 무엇이 관찰되었는지, 그리고 그러한 이벤트를 실용적인 SOC 탐지 로직으로 어떻게 변환할 수 있는지 문서화하는 데 있습니다.
전체 PDF 보고서:
EN: reports/DirtyFrag_CVE-2026-43284_EN.pdf
PL: reports/DirtyFrag_CVE-2026-43284_PL.pdf
이 테스트는 취약한 실험실 VM에서 일반 로컬 사용자가 루트 셸을 획득할 수 있는지, 그리고 auditd로 어떤 이벤트를 캡처할 수 있는지 확인하기 위해 수행되었습니다.
CVE-2026-43284는 ESP/IPsec 작업 중 공유 페이지 조각에 대한 부적절한 처리와 관련이 있습니다. 특정 조건에서 로컬 공격자는 페이지 캐시의 데이터에 영향을 줄 수 있으며 권한을 상승시킬 수 있습니다. Ubuntu Security는 이 취약점을 CVSS 3.1: 7.8 High로 평가합니다.
| 취약점 | 범위 | 구성 요소 | CVSS |
|---|---|---|---|
| CVE-2026-43284 | XFRM/ESP 페이지-캐시 쓰기 | XFRM / ESP, esp4/esp6 | 7.8 High |
기술 참고 자료:
전체 시스템 기준 정보: evidence/logs/system-info-table.md
PoC 실행 전, 테스트 컨텍스트는 일반 사용자 계정이었습니다. ./exp 실행 후 루트 셸이 획득되었으며 whoami와 id로 확인되었습니다.

테스트 후 auditd 로그와 요약 출력이 로컬 증거 디렉터리로 내보내진 후 이 저장소에 복사되었습니다.






가장 유용한 탐지는 단일 이벤트가 아닙니다. 가장 강력한 신호는 짧은 시간 창에서 관찰된 전체 체인입니다:
user namespace -> vmsplice/splice -> ESP/XFRM -> su -> root shell with AUID of a normal user
IF
dirty_frag_unshare by auid>=1000
AND count(dirty_frag_vmsplice + dirty_frag_splice by same exe or pid) >= 3 within 600s
AND MAC_IPSEC_EVENT / XFRM activity within 1200s
AND (dirty_frag_su_exec OR execve with euid=0 and auid>=1000) within 1200s
THEN
alert = "Possible DirtyFrag CVE-2026-43284 Linux LPE"
severity = high/critical
euid=0 이벤트만으로 알림을 발생시키지 마십시오. 이는 합법적인 sudo 사용도 포착합니다.unshare, vmsplice, splice, XFRM/ESP 활동, su 및 루트 프로세스 생성을 상호 연관시킵니다.kernel.unprivileged_userns_clone 제한을 고려합니다.lost는 0을 유지해야 합니다.수집된 auditd 상태는 lost=2555를 보여주었으며, 이는 일부 감사 이벤트가 누락되었을 수 있음을 의미합니다. 핵심 체인은 여전히 확인할 수 있지만, 향후 테스트에서는 감사 백로그를 늘리고 PoC 실행 전에 lost=0을 확인해야 합니다.
이 보고서는 SOC 탐지 범위가 다른 DirtyFrag 관련 경로와 섞이지 않도록 의도적으로 CVE-2026-43284 / XFRM/ESP에 초점을 맞춥니다.
| 매개변수 | 값 |
|---|
| 배포판 | Ubuntu 24.04.4 LTS / noble |
| 테스트 커널 | 6.17.0-23-generic |
| 아키텍처 | x86_64 |
| 가상화 | Oracle VirtualBox |
| CPU | 12th Gen Intel(R) Core(TM) i5-12450H, 1 vCPU |
| RAM | 12 GiB |
| 루트 파일시스템 | ext4 |
| 테스트 사용자 | uid=1000(user), gid=1000(user), 그룹에 sudo, adm, lpadmin 포함 |
| unprivileged_userns_clone | 1 |
| auditd | 활성, DirtyFrag/LPE 감사 규칙 로드됨 |
| AppArmor | 활성; 로그에 unprivileged_userns 프로파일 표시됨 |
| 경로 | 설명 |
|---|
docs/DirtyFrag_CVE-2026-43284_auditd_detection_report.docx | 영문 DOCX 보고서. |
evidence/logs/audit.log | 원시 이벤트를 포함한 전체 auditd 로그. |
evidence/logs/dirtyfrag-filtered.log | DirtyFrag/LPE 관련 이벤트를 포함한 필터링된 로그. |
evidence/logs/dirty_frag_vmsplice.log | PoC 프로세스의 vmsplice 이벤트. |
evidence/logs/dirty_frag_splice.log | PoC 프로세스의 splice 이벤트. |
evidence/logs/dirty_frag_execve_su.log | PoC 활동 후 /usr/bin/su 실행. |
evidence/logs/lpe_root_exec_from_user_session.log | 원래 사용자 세션에서 루트로 실행된 프로세스. |
evidence/logs/audit-key-summary.txt | auditd 키별 이벤트 수 요약. |
evidence/logs/audit-exec-summary.txt | aureport의 실행 파일 요약. |
evidence/logs/audit-rules-loaded.txt | 활성 auditd 탐지 규칙. |
evidence/logs/system-info-table.md | 시스템 기준 정보 표. |
evidence/screenshots/01-dirtyfrag-root-shell.png | 사용자 → 루트 셸 전환을 확인하는 스크린샷. |
tools/generate-system-info-table.sh | 시스템 정보 표를 생성하는 데 사용된 도우미 스크립트. |
| 키 | 의미 |
|---|
dirty_frag_unshare | 권한이 없는 사용자가 실행한 unshare; 사용자 네임스페이스 준비를 나타냄. |
dirty_frag_vmsplice | 사용자 프로세스의 vmsplice 활동; 주요 페이지-캐시 신호. |
dirty_frag_splice | 사용자 프로세스의 splice 활동; vmsplice와 상관 관계가 있음. |
dirty_frag_su_exec / dirty_frag_execve_su | 페이지-캐시 단계 이후 /usr/bin/su 실행. |
lpe_root_exec_from_user_session | auid>=1000이 소유한 세션에서 euid=0으로 실행된 execve; 상관 분석 시 강력한 LPE 증거. |
| 시간 | 이벤트 | 아티팩트 | 의미 |
|---|
| 21:10:48 | auditd 규칙 로드됨 | audit-rules-loaded.txt, audit.log | PoC 실행 전에 모니터링이 활성화되어 있었음. |
| 21:11:32 | ./exp에 의한 unshare | dirtyfrag-filtered.log | 사용자 프로세스가 unprivileged_userns에 진입함. |
| 21:11:32-21:11:39 | ./exp에 의한 vmsplice / splice | dirty_frag_vmsplice.log, dirty_frag_splice.log | 시스템 콜 텔레메트리를 통해 페이지-캐시 동작이 관찰됨. |
| 21:11:32-21:11:39 | MAC_IPSEC_EVENT / XFRM ESP | audit.log | SPI 0xdeadbeXX를 사용한 127.0.0.1에서의 SAD-add 및 SA-icv-failure 이벤트. |
| 21:11:39 | su - | dirty_frag_execve_su.log | PoC 실행 후 루트 셸 진입 시도. |
| 21:11:39 | 루트로 실행된 sh / dash | lpe_root_exec_from_user_session.log | AUID=user 상태에서 UID=root 및 EUID=root. |
| 21:11:48 | 루트로 실행된 whoami | lpe_root_exec_from_user_session.log, 스크린샷 | 권한 상승 성공을 수동으로 확인함. |
| 21:11:49 | 루트로 실행된 id | lpe_root_exec_from_user_session.log, 스크린샷 | uid=0(root)를 수동으로 확인함. |