🇰🇷 한글 설명
Docker SwarmKit 1.12.0에서 인증된 사용자가 반복적인 노드 조인 및 퇴출 시퀀스를 통해 클러스터 관리자의 메모리를 고갈시켜 새로운 노드 추가를 방지할 수 있는 서비스 거부 취약점입니다. 공급업체는 이를 보안 결함보다는 리소스 프로비저닝 문제로 주장하며 분쟁 중입니다.
💡 쉬운 설명
Docker Swarm 관리자에 연결하는 노드들을 반복적으로 추가했다가 제거하면 관리자의 메모리가 가득 차서 더 이상 새로운 노드를 받아들일 수 없게 됩니다. 하지만 공급업체는 이것이 시스템을 제대로 설정하지 않은 문제일 뿐 실제 보안 취약점이 아니라고 반박하고 있습니다.
🇺🇸 원문 (English)
The SwarmKit toolkit 1.12.0 for Docker allows remote authenticated users to cause a denial of service (prevention of cluster joins) via a long sequence of join and quit actions. NOTE: the vendor disputes this issue, stating that this sequence is not "removing the state that is left by old nodes. At some point the manager obviously stops being able to accept new nodes, since it runs out of memory. Given that both for Docker swarm and for Docker Swarmkit nodes are *required* to provide a secret token (it's actually the only mode of operation), this means that no adversary can simply join nodes and exhaust manager resources. We can't do anything about a manager running out of memory and not being able to add new legitimate nodes to the system. This is merely a resource provisioning issue, and definitely not a CVE worthy vulnerability.
📍 영향받는 시스템
Docker SwarmKit 1.12.0 및 이전 버전
⚔️ 공격 벡터
인증된 사용자가 장시간 반복되는 노드 join/quit 작업으로 관리자 메모리 고갈 유발
🛡️ 대응 방법
SwarmKit를 최신 버전으로 업그레이드하고, 클러스터 관리자의 리소스를 적절히 프로비저닝하며, 노드 추가 요청에 대한 속도 제한 및 접근 제어 강화
🔧 검증 코드
Docker 버전 정보에서 SwarmKit 버전 1.12.0을 확인하면 취약함, 이후 버전이면 패치됨
docker version | grep -i swarm || swarmctl version 2>/dev/null | grep -E '(version|1\.12)'