🇰🇷 한글 설명
Docker Engine의 특수 제작된 API 요청을 통해 권한 검증 플러그인(AuthZ)을 우회할 수 있는 취약점입니다. 요청/응답 본문이 플러그인으로 전달되지 않아 권한 검증을 통과할 수 있으며, 특권 상승을 포함한 무단 동작을 초래할 수 있습니다. 2019년 수정되었던 이 문제가 이후 버전에서 회귀했습니다.
💡 쉬운 설명
Docker의 보안 검사를 통과하지 않고도 제어된 작업을 수행할 수 있는 방법이 발견되었습니다. 특정 API 요청에서 보안 정보가 누락되어 관리자가 거부했을 작업이 승인될 수 있습니다.
🇺🇸 원문 (English)
Moby is an open-source project created by Docker for software containerization. A security vulnerability has been detected in certain versions of Docker Engine, which could allow an attacker to bypass authorization plugins (AuthZ) under specific circumstances. The base likelihood of this being exploited is low.
Using a specially-crafted API request, an Engine API client could make the daemon forward the request or response to an authorization plugin without the body. In certain circumstances, the authorization plugin may allow a request which it would have otherwise denied if the body had been forwarded to it.
A security issue was discovered In 2018, where an attacker could bypass AuthZ plugins using a specially crafted API request. This could lead to unauthorized actions, including privilege escalation. Although this issue was fixed in Docker Engine v18.09.1 in January 2019, the fix was not carried forward to later major versions, resulting in a regression. Anyone who depends on authorization plugins that introspect the request and/or response body to make access control decisions is potentially impacted.
Docker EE v19.03.x and all versions of Mirantis Container Runtime are not vulnerable.
docker-ce v27.1.1 containes patches to fix the vulnerability. Patches have also been merged into the master, 19.03, 20.0, 23.0, 24.0, 25.0, 26.0, and 26.1 release branches. If one is unable to upgrade immediately, avoid using AuthZ plugins and/or restrict access to the Docker API to trusted parties, following the principle of least privilege.
📍 영향받는 시스템
Docker CE 27.1.1 미만의 대부분 버전, Mirantis Container Runtime의 영향받는 버전 (Docker EE 19.03.x는 제외)
⚔️ 공격 벡터
특수 제작된 Docker Engine API 요청으로 요청/응답 본문을 제거하여 AuthZ 플러그인 우회
🛡️ 대응 방법
Docker CE를 27.1.1 이상으로 업그레이드하거나, AuthZ 플러그인 비활성화 및 Docker API 접근을 신뢰할 수 있는 사용자로만 제한
🔧 검증 코드
27.1.1 이상이면 PATCHED 출력, 이전 버전이면 VULNERABLE 출력
docker version --format='{{.Server.Version}}' | grep -oP '\d+\.\d+\.\d+' | awk -F. '{if($1>27||($1==27&&$2>1)||($1==27&&$2==1&&$3>=1))print "PATCHED";else print "VULNERABLE"}'