🇰🇷 한글 설명
Moby의 클래식 빌더 캐시 시스템에서 발생하는 캐시 포이즈닝 취약점입니다. 공격자가 특정 이미지를 통해 캐시를 오염시키면, Dockerfile의 특정 지침 변경이 캐시 미스를 유발하지 않아 잘못된 빌드 결과가 생성될 수 있습니다.
💡 쉬운 설명
도커로 프로그램을 만들 때 사용하는 '기록 저장소(캐시)'를 공격자가 조작할 수 있는 문제입니다. 조작된 기록을 사용하게 되면 프로그램이 의도치 않게 변조된 상태로 만들어질 위험이 있습니다.
🇺🇸 원문 (English)
Moby is an open-source project created by Docker to enable software containerization. The classic builder cache system is prone to cache poisoning if the image is built FROM scratch. Also, changes to some instructions (most important being HEALTHCHECK and ONBUILD) would not cause a cache miss. An attacker with the knowledge of the Dockerfile someone is using could poison their cache by making them pull a specially crafted image that would be considered as a valid cache candidate for some build steps. 23.0+ users are only affected if they explicitly opted out of Buildkit (DOCKER_BUILDKIT=0 environment variable) or are using the /build API endpoint. All users on versions older than 23.0 could be impacted. Image build API endpoint (/build) and ImageBuild function from github.com/docker/docker/client is also affected as it the uses classic builder by default. Patches are included in 24.0.9 and 25.0.2 releases.
📍 영향받는 시스템
Docker 23.0 미만 버전 전체, 23.0 이상 버전 중 Buildkit을 비활성화(DOCKER_BUILDKIT=0)했거나 /build API를 사용하는 경우
⚔️ 공격 벡터
공격자가 설계한 특수 이미지를 사용자가 내려받게 유도하여 빌드 캐시를 오염시킴
🛡️ 대응 방법
Docker를 최신 패치 버전인 24.0.9 또는 25.0.2 이상으로 업데이트하거나 Buildkit을 활성화함
🔧 검증 코드
출력된 버전이 24.0.9 또는 25.0.2보다 낮은지 확인하여 취약 여부를 판단합니다.
docker version --format '{{.Server.Version}}'