
CVE-2022-0185에 대한 개념 증명 익스플로잇으로, Linux 커널의 legacy_parse_param 함수(fs/fs_context.c)에서 발생하는 힙 기반 버퍼 오버플로우입니다. 이 취약점을 통해 로컬의 비특권 사용자가 root로 권한을 상승시킬 수 있습니다.
원본 익스플로잇: Crusaders of Rust. 전체 분석 문서: https://www.willsroot.io/2022/01/cve-2022-0185.html
이 버그는 legacy_parse_param() 내부의 경계 검사에서 발생하는 정수 언더플로우입니다. 내부 버퍼 size가 4095바이트에 도달하면, 부호 없는 뺄셈이 순환(wrap around)하여 검사를 우회하고, kmalloc-4k 슬래브에서 무제한 힙 오버플로우를 가능하게 합니다.
영향을 받는 커널: Linux 5.1 – 5.15 패치된 버전: Linux 5.16+
| 파일 | 설명 |
|---|---|
exploit_fuse.c | FUSE + SYSVIPC를 사용하는 Ubuntu LPE 익스플로잇 |
exploit_kctf.c | 파이프 + ROP 체인을 사용하는 kCTF 컨테이너 탈출 |
fakefuse.c / .h | 경쟁 조건을 위한 사용자 정의 FUSE 파일시스템 |
util.c / .h | 공용 유틸리티 |
libfuse/, libfuse3.a | 정적으로 컴파일된 libfuse (dl_open 없음) |
Makefile | 빌드 스크립트 |
make
# Enter a user namespace to get CAP_SYS_ADMIN
unshare -Urm
# Run the exploit — makes /bin/bash SUID
./exploit_fuse
# Get a root shell
bash -p
Ubuntu 커널 ≥ 5.7에서 동작합니다. 커널 버전에 맞게
exploit_fuse.c의single_start및modprobe_path오프셋을 조정하세요.
./exploit_kctf
약 50%의 신뢰성, Kubernetes 1.22(커널 5.10) 대상.
교육 및 연구 목적으로만 사용하십시오. 소유하지 않았거나 테스트에 대한 명시적 허가가 없는 시스템에 사용하지 마십시오.