
이 저장소는 CVE-2019-5736에 대한 고충실도 기술 분해 및 프로덕션 준비 완료형 익스플로잇 스위트를 제공합니다. 컨테이너 내부의 root 사용자가 OverlayFS 마운트와 ld.so.preload 조작을 통해 호스트의 runc 바이너리를 덮어써서 호스트 루트 셸을 획득할 수 있는 방법을 시연합니다.
= doi.org/10.5281/zenodo.18304765
= orcid.org/0009-0007-7728-256X
호스트 루트 탈출에 대한 고급 퍼플 팀링 및 포렌식 분석
이 저장소는 runc(버전 1.0-rc1 ~ 1.0-rc6)의 치명적인 취약점인 CVE-2019-5736에 대한 고충실도 해부 및 개념 증명(PoC)을 포함합니다. 이 익스플로잇은 루트 권한을 가진 악성 컨테이너가 호스트의 runc 바이너리를 덮어쓰고 완전한 호스트 루트 액세스를 획득할 수 있게 합니다.
취약점 유형: CWE-59 (Improper Link Resolution Before File Access).
CVSSv3 점수: 8.6 HIGH.
이 익스플로잇은 결정적(Deterministic) 다단계 실행 경로를 따릅니다:
네임스페이스 해방: unshare -rm을 사용하여 새로운 마운트 네임스페이스를 생성하고 초기 컨테이너 제한을 우회합니다.
파일시스템 브리징: OverlayFS를 활용하여 호스트 루트 디렉터리(/)를 컨테이너가 제어하는 쓰기 가능한 디렉터리에 마운트합니다.
동적 링커 하이재킹: 호스트의 /etc/ld.so.preload를 덮어써 악성 페이로드(/bin/sh -p)를 모든 새 프로세스에 주입합니다.
실행 트리거: 표준 호스트 바이너리(예: /usr/bin/ping)를 실행하여 로더를 트리거하고 호스트 루트 셸을 생성합니다.
통제된 환경(Ubuntu 18.04 + Docker 18.09.2)에서 테스트하려면:
# [cite_start]Setup vulnerable host [cite: 384-388]
docker run -d --name vuln_host --privileged ubuntu:18.04 sleep infinity
docker exec vuln_host apt update && apt install -y curl git
docker exec vuln_host curl -sSL https://get.docker.com | sh
취약한 환경 내에서 다음을 실행하여 호스트 루트를 획득하십시오:
chmod +x runc_root_escape.sh
./runc_root_escape.sh
| 대상 환경 | 상태 | 잠재적 영향 | | --- | --- | --- | | 독립형 Docker | ✅ 취약 | 호스트 탈취, 데이터 파괴 ($10M+) | | Kubernetes 클러스터 | ✅ 피벗 준비 완료 | 클러스터 관리자 시크릿 탈취 ($50M+) | | 퍼블릭 클라우드 (AWS/GCP) | ✅ 취약 | IAM 역할 탈취, 클라우드 피벗 ($100M+) |
블루 팀 모니터링을 위해 다음 침해 지표(IoC)에 집중하십시오:
파일시스템: /etc/ld.so.preload에 대한 예기치 않은 쓰기.
프로세스: 컨테이너 내부의 unshare 및 mount 호출 모니터링.
기록: /var/spool/cron/crontabs/root에 자동 지속성(automated persistence)이 있는지 확인.
이 자료는 교육 및 승인된 보안 테스트 목적으로만 **SASTRA_ADI_WIGUNA [Purple_Elite_Teaming]**에서 제공됩니다. 이 정보를 불법 활동에 사용하는 것은 엄격히 금지됩니다.
Falco/Sysdig 탐지 규칙 통합.
레드 팀 운영을 위한 정리 스크립트 자동화.
MITRE ATT&CK T1611 (Escape to Host) 매핑.