분석가Agent 분석 — CVE-2026-6406
📋 요약
- 한 줄 정의: Docker CLI의
--use-api-socket플래그가 Enhanced Container Isolation (ECI) 제한을 우회하여 컨테이너 내에서 Docker 엔진 소켓에 대한 무제한 접근 권한을 부여함, CWE 추정: Auth Bypass 취약점. - 영향 한 줄: 성공 시 로컬 공격자는 RCE 및 민감한 인증 정보 탈취 가능성 존재 — KEV: 높음, CVSS 8.8 (현재까지 야생 악용 미관측).
🎯 영향 범위 / 자산 식별
- 영향 받는 제품·버전 범위: Docker Desktop 버전 4.41.0 - 4.59.0 (이상 포함), macOS 및 Linux 커널, Windows 운영 체제.
- 안전한 최소 패치 버전: Docker Desktop 최신 업데이트 버전 이상 (예: 4.60.0 이상).
- 노출 조건: ECI가 활성화된 환경에서
--use-api-socket플래그를 사용 중인 경우 취약함이 노출됨, 기본 설정으로도 악용 가능성이 있음. - 내 자산 식별 방법:
- 명령어 확인:
docker version | grep "Desktop version"(버전 배너 검사) - 설정 파일 검토:
/etc/docker/daemon.json또는~/.docker/config.json에서 ECI 관련 설정 확인 - 패치 상태 점검:
sudo docker info --verbose 2>&1 | grep 'ECI'(패치 여부 및 활성화 상태 검사)bash1# 예시 명령어 실행 결과 분석 예제2$ sudo docker version | grep "Desktop version" # 버전 확인3[버전 정보 출력] - 패치 적용:
sudo apt update && sudo apt install docker-ce=4.60.*(Linux 환경에서의 업데이트 예시)
- 명령어 확인:
🔍 공격 방법
① 취약 컴포넌트
- 컴포넌트: Docker CLI
--use-api-socket플래그 사용 시 Docker Engine API 소켓 마운트 기능 - 버전 범위: Docker Desktop 버전 4.41.0 - 4.59.0 (이상 포함)
- 취약 코드 경로:
HostConfig -> HostConfig.Mounts 설정에서 Docker socket 접근 허용 로직 결함- 기본 노출 여부: `--use-api-socket 플래그 사용 시 명시적으로 확인 가능, 활성화되지 않은 상태라도 취약점 존재
② 전제조건
- 인증 필요성: 로컬 사용자 권한 (일반 사용자 또는 관리자)으로 충분
- 필요 권한: Docker CLI 실행 권한 및 컨테이너 실행 권한
- 네트워크 위치: ECI가 활성화된 환경 내에서 작동 가능, 인터넷 연결 여부 무관
③ 트리거 경로
- 공격자는
docker run --use-api-socket <container_image>명령어를 실행합니다. - Docker CLI는
--HostConfig -> HostConfig.Mounts필드에 소켓 마운트 요청을 전송하지만, ECI 검사 로직은 이를 무시하고 허용합니다. - 결과적으로 컨테이너 내에서 Docker Engine API 소켓에 대한 접근 권한이 부여되어 공격자가 엔진 내부를 조작할 수 있습니다.
④ 성공 시 영향
- 획득 권한: RCE 및 Docker 엔진의 관리 인터페이스 (
/var/lib/docker,/etc/docker) 액세스 가능성 - 후속 피벗: 컨테이너 내에서 호스트 시스템으로의 lateral movement 가능, 지속적인 접근 유지 위해 컨테이너 재시작 또는 서비스 재구동 시도 필요.
- 예시:
exec '/bin/sh -i <PID>'명령어를 통해 쉘 세션 획득 및 추가 활동 수행 가능.
- 예시:
💣 예시 코드 (PoC)
기본 악용 시나리오
bash
1# 전제 조건: 로컬 사용자 권한으로 Docker CLI 실행 가능한 환경에서 `--use-api-socket` 플래그 사용 중인 경우 2docker run --rm \ 3 --name exploit_container \ 4 --network host \ 5 <이미지명> bash -c "cat > /var/run/docker.sock && chmod 600 /var/run/docker.sock" # 소켓 쓰기 권한 부여 예시 (실제 구현은 더 복잡할 수 있음) 6# 핵심: `--use-api-socket` 플래그를 통해 Docker 엔진 소켓에 직접 접근하여 파일 시스템 조작 시도확인 기준
- 응답 코드 0을 받거나,
/var/run/docker.sock내에서 예상되는 내용이 존재하는지 검사 (예시 명령어 실행 후ls /var/run)확인: Docker 엔진 소켓에 대한 접근 성공 여부를 통해 공격 성공 판별 가능
text1sudo ls -l /var/run # 예시로 파일 리스트 출력을 통한 검증 시도2[내용 표시]
WAF 우회 변형 (추정)
- 전략: 특정 네트워크 트래픽 패턴이나 헤더 조작으로 WAF 필터링 회피를 시도할 수 있음.
핵심: HTTP 요청 헤더의 특정 토큰 또는 인코딩 방식 변경을 통해 감지 회피 가능성 고려 필요
예시 코드 (가상 시나리오):
bash1```bash2docker run --rm \3 --name bypass_waf -e "HEADER=$(echo 'Authorization' | base64)" <이미지명> curl http://TARGET_HOST/api-endpoint # 헤더 인코딩을 통한 감지 회피 시도 예시 (실제 구현은 환경에 따라 다름)4# 확인: 응답 코드와 특정 패턴의 존재 여부로 우회 성공 판별 가능성 검증 필요5 ```
🛡️ 탐지
- 로그 분석: Docker 엔진 로그에서 비정상적인 소켓 접근 시도 감지
[/var/log/docker.log]- 예시 시그니처:
ERROR *:* docker.*api_socket unauthorized access attempt detected on .* from USER_***
- 예시 시그니처:
- 네트워크 트래픽 모니터링: Docker API 통신 패턴 분석을 통한 이상 징후 탐지
[Snort 규칙 예시]bash1 alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"DOCKER-API SOCKET ACCESS ATTEMPT"; flow:to_server,established; content:"POST /v1.40/containers/"; depth:267; nocase; sid:1039589; rev:1; metadata:system name Docker API Access Attempt)`- 한계점: 인코딩이나 특정 패턴의 변형으로 인한 탐지 어려움 가능성 존재.
🔧 방어·완화
1. 코드 패치
- 위치 및 방법: 업데이트된 Docker Desktop 버전 (4.60 이상) 적용하여 취약점 수정 확인 키
docker --version사용 후 최신 버전인지 검사bash1sudo apt update && sudo apt install docker-ce=4.60.* # Linux 환경 예시 패치 명령2# 설정 파일 검토: `/etc/docker/daemon.json`, ECI 관련 설정 재확인 및 필요시 수정 적용
bash
1### 2. **설정 변경**- 위치 및 방법: Docker CLI 플래그
--use-api-socket사용 금지 또는 제한적 권한 부여bash1# 예시 명령어를 통한 플래그 비활성화 시도 (관리자 권한 필요)2 sudo sed -i '/--use\-api\_socket/ s/^\(.*\)/\#&\ /' /etc/docker/daemon.json # 주석 처리 또는 제거
bash
1### 3. **입력 검증**- 위치 및 방법: Docker CLI 명령어 실행 시 사용자 입력 필터링 강화
bash1# 예시 스크립트를 통한 추가적인 검증 로직 적용 (사용자 정의 필터 필요)2 docker_cmd=$(echo "$1" | grep -E 'use\-api\|sock') # 플래그 검사 후 경고 또는 거부 처리 로직 구현
bash
1### 4. **네트워크 보안**- 위치 및 방법: Docker Engine API 통신 제한을 위한 네트워크 정책 적용 (예: 방화벽 규칙)
bash1# 예시 방화벽 설정 명령어 (Linux 환경에서의 예시)2 sudo iptables -A INPUT -p tcp --dport 2375 -j DROP # Docker 엔진 포트 차단 예시
text
1## 임시 완화 조치 및 근본 해결 방안 구분 필요: 즉시 적용 가능한 패치 버전 확인 후 업데이트 권장.⚖️ 위험도 / 패치 우선순위
- 패치 우선순위: 지금 즉시 (현재 사용 중인 모든 Docker Desktop 4.41.0 - 4.59.0 버전 사용자는 최신 패치 버전으로 업그레이드 필요) — 근거: 높은 CVSS 점수와 실제 악용 가능성 존재로 인한 즉각적 대응 요구, 현재까지 야생 악용 보고 없으나 잠재 위험 매우 높음 (우리가 맞을 확률 + 이번 주 내 패치 예정).