🔍 CVE-2026-35172

7.5
CVSS Score
HIGH
2026-04-06
2026-09-09 13:19
✅ 완료

🇰🇷 한글 설명

Distribution 3.1.0 이전 버전에서 Redis 캐시와 delete 활성화 시 삭제된 blob 파일이 repo 간 캐시 재생성으로 인해 다시 접근 가능해지는 취약점. 명시적 삭제 후 stale repo-scoped membership이 남아있어 다른 저장소 접근 시 공유 descriptor가 재생성되면서 원본 저장소에서 deleted blob이 읽힐 수 있음.

💡 쉬운 설명

컨테이너 저장소에서 파일을 삭제해도 캐시 때문에 실제로는 지워지지 않는 문제입니다. 다른 컨테이너에서 같은 파일에 접근하면 캐시가 다시 생성되어 원래 저장소에서도 삭제된 파일을 읽을 수 있게 됩니다.

🇺🇸 원문 (English)

Distribution is a toolkit to pack, ship, store, and deliver container content. Prior to 3.1.0, distribution can restore read access in repo a after an explicit delete when storage.cache.blobdescriptor: redis and storage.delete.enabled: true are both enabled. The delete path clears the shared digest descriptor but leaves stale repo-scoped membership behind, so a later Stat or Get from repo b repopulates the shared descriptor and makes the deleted blob readable from repo a again. This vulnerability is fixed in 3.1.0.

📍 영향받는 시스템

Distribution < 3.1.0 (storage.cache.blobdescriptor=redis, storage.delete.enabled=true 설정된 환경)

⚔️ 공격 벡터

인증된 공격자가 의도적으로 blob을 삭제한 후 다른 저장소에서 접근하여 캐시 재생성 유도, 원래 저장소에서 삭제된 blob 접근

🛡️ 대응 방법

Distribution을 3.1.0 이상으로 업그레이드하거나 Redis 캐시 또는 delete 기능 중 하나 비활성화

🔧 검증 코드

Distribution 버전이 3.1.0 이상인지 확인하고, storage.cache.blobdescriptor와 storage.delete.enabled 설정값을 확인하여 둘 다 활성화되지 않았는지 검증

Shell / Script
distribution --version 2>/dev/null | grep -oE '([0-9]+\.[0-9]+\.[0-9]+)' && docker inspect $(docker ps -q) 2>/dev/null | grep -i 'distribution' || echo 'Distribution not found'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

💻 영향받는 소프트웨어

Redis