[방어] 분석 — CVE-2026-55887
Prevent host root compromise by blocking malicious OCI image labels that inject arbitrary
docker runarguments into the MCP Gateway.
📋 요약
- 심각도 high · CVSS 미상 · EPSS 미확보 · 악용난이도 moderate
🔍 공격 기법
공격자는 OCI 이미지의 io.docker.server.metadata 라벨에 악성 YAML 데이터를 삽입합니다. MCP Gateway는 이 라벨을 파싱하여 catalog.Server 구조체로 언마샬링(Unmarshal)하는데, 이때 검증 없이 Volumes, User, Command 등 런타임 설정 필드들이 그대로 할당됩니다. 이후 게이트웨이가 컨테이너를 실행할 때 해당 값들을 docker run 명령어의 플래그(-v, -u, --add-host 등)로 직접 전달함으로써, 공격자가 의도한 임의의 인자를 주입하는 Argument Injection이 발생합니다.
악용 가능성: 본 취약점의 공격 난이도는 Moderate 수준으로, 공격자가 제어하는 악성 OCI Image를 피해자가 사용하도록 유도하는 것이 핵심 전제조건입니다(AV:N, PR:N). 공격 표면은 MCP Gateway가 docker:// 프로토콜을 통해 이미지를 pull 하거나 카탈로그의 스냅샷을 참조하는 지점이며, 특히 io.docker.server.metadata 레이블 내의 YAML 파라미터들이 주입 경로가 됩니다. 공격자는 해당 레이블에 Volumes, User, Command와 같은 런타임 설정 필드를 악성으로 구성하여 Mass Assignment 취약점을 트리거할 수 있습니다. 이를 통해 docker run 명령행에 임의 인자를 삽입함으로써 호스트 파일시스템 마운트 및 Root 권한(UID 0) 획득, 최종적으로는 원격 코드 실행(RCE)이 가능합니다. 현재 KEV 미등재 및 EPSS unavailable 상태로 광범위한 자동화 공격 사례는 확인되지 않았으나, 신뢰하지 않는 이미지 저장소나 공용 카탈로그를 사용하는 환경에서는 실질적인 위협이 됩니다. 결과적으로 이론적 심각도는 매우 높지만, 특정 조건의 이미지 참조라는 트리거 단계가 필요하므로 악용 가능성은 Moderate로 판정됩니다.
💥 영향 분석
- 호스트 권한 탈취:
--privileged옵션이나-v /:/host와 같은 볼륨 마운트 설정을 통해 호스트 파일시스템에 접근하고 UID 0(root) 권한으로 임의 코드를 실행할 수 있습니다. - 컨테이너 이스케이프: 게이트웨이가 관리하는 격리 환경을 완전히 벗어나 호스트 OS 제어권을 획득하게 됩니다.
🔗 관련 취약점·체이닝
- Argument Injection: 외부 입력값이 쉘 명령어의 인자로 전달될 때 발생하는 전형적인 패턴입니다.
- Privilege Escalation: 낮은 권한의 이미지 배포자가 호스트의 최고 권한을 획득하는 권한 상승 체인으로 이어집니다.
🔎 탐지
본 취약점은 MCP Gateway가 외부 이미지를 pull 하여 실행하는 시점에 발생하므로, 게이트웨이 로그와 Docker 데몬의 감사 로그를 교차 분석해야 합니다.
1. 탐지 지표 및 패턴
- 로그 위치: MCP Gateway 애플리케이션 로그,
/var/log/audit/audit.log(Linux Auditd), Docker Daemon logs. - 핵심 필드:
execve시스템 콜의argv배열, 게이트웨이의 컨테이너 런칭 로그. - 위험 패턴:
docker run명령어에 평소 사용되지 않는 위험한 플래그가 포함된 경우.- 패턴 예시:
-v /:/,--privileged,--net=host,--pid=host,-u 0
- 패턴 예시:
2. 탐지 규칙 (SIEM 의사코드)
1-- Rule 1: 호스트 루트 파일시스템 마운트 시도 탐지 2SELECT timestamp, process_id, command_line 3FROM process_logs 4WHERE process_name = 'docker' 5 AND command_line LIKE '%run%' 6 AND (command_line REGEXP '\-v\s+/\s+:/' OR command_line REGEXP '\-v\s+/\s+/[^ ]*'); 7 8-- Rule 2: 권한 상승 및 특권 모드 실행 탐지 9SELECT timestamp, user_id, command_line 10FROM process_logs 11WHERE process_name = 'docker' 12 AND command_line LIKE '%run%' 13 AND (command_line LIKE '%--privileged%' OR command_line LIKE '%-u 0%');3. 오탐 튜닝 및 주의사항
- 오탐 시나리오: 관리자가 정기 점검이나 특정 인프라 도구(백업, 모니터링 에이전트)를 위해 의도적으로 특권 컨테이너를 실행하는 경우.
- 튜닝 방법: MCP Gateway가 실행하는
docker run프로세스의 부모 프로세스 ID(PPID)를 추적하여, 관리자 쉘이 아닌 게이트웨이 서비스 계정에서 발생한 특권 옵션 호출만 정밀 탐지하도록 필터링합니다.
🛡️ 완화 방안
본 리포트는 다중 소스 교차검증을 통해 데이터 일관성이 확인되었으며, EPSS 수치는 미확보 상태이나 실측 악용 예측 등급이 moderate로 분류되었습니다. CVSS 점수가 미상임에도 불구하고 Host Root 권한 탈취라는 치명적 영향으로 인해 '이번 주 내(scheduled)' 대응 우선순위가 결정되었습니다.
1. 즉시 (긴급 차단)
- 조치: 신뢰할 수 없는 외부 레지스트리(
docker://경로 등)로부터의 이미지 pull 및 실행을 일시적으로 전면 차단하거나, 내부 Private Registry로만 제한합니다. - 난이도/영향: 낮음 / 높음 (신규 이미지 배포 불가로 인한 비즈니스 영향 발생 가능).
- 검증: 외부 도메인 주소가 포함된 이미지 참조 요청 시 Gateway에서
403 Forbidden또는 에러가 발생하는지 확인.
2. 단기 (완화)
- 조치: MCP Gateway 앞단에 WAF나 프록시를 배치하여 OCI Label에 포함될 수 있는 위험 키워드(
--privileged,-v /)가 포함된 요청을 차단하거나, 호스트 OS 수준에서 Docker 데몬의 권한을 제한(Rootless Docker 도입)합니다. - 난이도/영향: 보통 / 보통 (인프라 설정 변경 필요).
- 검증: 악성 라벨이 포함된 테스트 이미지를 push 한 후 게이트웨이가 이를 실행하려 할 때 차단되는지 확인.
3. 근본 (해결)
- 조치: MCP Gateway의
catalog.Server언마샬링 로직을 수정하여, OCI Label에서 가져온 값 중 런타임 영향 필드(Volumes,User,Command등)를 삭제하거나 화이트리스트 기반으로 엄격히 필터링하는 패치를 적용합니다. - 난이도/영향: 높음 / 낮음 (코드 수정 후 재배포 필요, 운영 영향 적음).
- 검증: 정규식 및 토큰 검증 로직이 추가된 버전에서 특수문자나 위험 플래그가 포함된 라벨이 무시되는지 단위 테스트 수행.
잔여 리스크: 패치 이후에도 docker run에 전달되는 인자의 길이 제한이나 이스케이프 처리가 미흡할 경우, 다른 형태의 Argument Injection 가능성이 추정되므로 지속적인 모니터링이 필요합니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=미상 · non-KEV · EPSS=미확보 · exploit=moderate · in_scope=None