Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-21626-runcPOC — CVE-2024-21626에 대한 개념 증명, runc 컨테이너 탈출 취약점. 검증 스크립트, 두 가지 악용 방법(cron 리버스 셸 및 명령어 교체), 그리고 근본 원인과 패치 분석을 포함합니다. | Kitploit
도구/GitHubGitHub/v0wkeep3r/cve-2024-21626-runcpoc
Privilege EscalationContainer SecurityVulnerability AnalysisExploitationCloud SecurityContainer Escape
GitHubv0wkeep3r/cve-2024-21626-runcpoc

CVE-2024-21626-runcPOC

CVE-2024-21626에 대한 개념 증명, runc 컨테이너 탈출 취약점. 검증 스크립트, 두 가지 악용 방법(cron 리버스 셸 및 명령어 교체), 그리고 근본 원인과 패치 분석을 포함합니다.

저장소 보기
6172년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

【취약점 재현】CVE-2024-21626 docker runc 탈출 취약점

1. 취약점 개요

취약점 이름docker runc 탈출 취약점
취약점 번호CVE-2024-21626
공개 날짜2024-01-31
특징/
영향받는 버전runc @ [v1.0.0-rc93,1.1.11]

2. 취약점 이용 & POC/EXP

이용 조건은 다소 까다롭고 피해자의 상호작용이 필요하며, 개인적으로는 계륵(있으나 마나 한)이라고 생각합니다:

  1. 공격자의 악성 이미지(작업 디렉터리 설정 등 포함)로 컨테이너 생성
  2. 공격자가 컨테이너를 제어하고 명령을 실행할 수 있어야 함

취약점 존재 검증 및 파일 디스크립터 확인:

root@kitploit:~
git clone https://github.com/V0WKeep3r/CVE-2024-21626-runcPOC.git
cd CVE-2024-21626-runcPOC
bash verify.sh

아래 그림과 같이 취약점이 존재하며, 파일 디스크립터는 /proc/self/fd8입니다. verify.sh는 현재 머신 환경에 대응하는 fd의 구체적인 값을 찾아낼 수 있습니다. fd가 8이 아닐 경우 Dockerfile의 WORKDIR을 해당 값으로 수정하거나 docker run에서 -w로 지정해야 합니다.

탈출/권한 상승 검증: 여기서는 실전에 더 가깝게 구성했습니다. poc.sh는 cron 작업을 사용하여 리버스 셸을 띄웁니다. poc2.sh는 명령어 교체 방식을 사용합니다(주의: 이 방식을 사용할 경우 파일을 미리 백업해 두어야 파일 복구가 어렵지 않습니다).

root@kitploit:~
# 需要确认定时任务文件存在,不存在可以创建写,但是那样不能触发定时任务
# 只有crontab -e创建的,在crontab组的文件才会被定时执行。
docker build . -t poc1
docker run -it --rm poc1 bash /poc.sh

POC2:

root@kitploit:~
docker build . -t poc2
docker run -it --rm poc2 bash /poc.sh

# 另起一个terminal
/bin/bash.copy

3. 취약점 원리 분석

완전히 이해한 것은 아니지만, 패치와 함께 보면 대략적인 파악이 가능합니다.

docker exec 또는 docker run 과정에서 runc의 execve 함수가 호출됩니다. 그런데 runc exec 과정에서 fd 파일 디스크립터를 닫지 않아 호스트 머신의 파일 디스크립터가 컨테이너 환경에도 함께 누출됩니다. 사용자는 이 파일 디스크립터를 통해 호스트 머신의 파일을 읽고 쓸 수 있으며, 이를 통해 컨테이너 탈출을 수행할 수 있습니다.

4. 수정 방안/패치 분석

수정 방안 runc를 1.12 이상으로 업그레이드합니다. runc 공식 링크: https://github.com/opencontainers/runc/releases

패치 분석 diff commit: https://github.com/opencontainers/runc/commit/2a4ed3e75b9e80d93d1836a9c4c1ebfa2b78870e execve 실행 전에 내부 fds를 제때 닫습니다 init_linux.go는 chdir 이후 cwd(현재 작업 디렉터리)가 컨테이너 내부에 있는지 검증합니다

F. 참고 링크

  1. 취약점 설명: https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
  2. 패치: https://github.com/opencontainers/runc/commit/2a4ed3e75b9e80d93d1836a9c4c1ebfa2b78870e
도구 다운로드