🇰🇷 한글 설명
containerd의 특정 버전에서 32비트 정수로 파싱할 수 없는 숫자형 User 지시문을 사용자 이름으로 잘못 처리하여 runAsNonRoot 제한을 우회하는 취약점이 발견되었습니다. 공격자가 조작된 이미지를 통해 /etc/passwd 파일을 구성하면 컨테이너가 최종적으로 root 권한(UID 0)으로 실행될 수 있습니다. 이 문제는 1.7.32, 2.0.9, 2.2.4, 2.3.1 버전에서 수정되었습니다.
💡 쉬운 설명
컨테이너를 실행할 때 '루트 권한을 쓰지 마라'는 보안 규칙을 무력화할 수 있는 결함입니다. 숫자로 된 사용자 이름을 입력했을 때 시스템이 이를 이름으로 착각하여 보안 설정을 피해 루트 권한을 허용하게 됩니다.
🇺🇸 원문 (English)
containerd is an open-source container runtime. In versions prior to 1.7.32, 2.0.9, 2.2.4 and 2.3.1, containers launched with a numeric User directive that cannot be parsed as a 32-bit integer are incorrectly treated as a username, leading to runAsNonRoot evasion. If a crafted image provides an /etc/passwd file mapping this large numeric string to root, the container ultimately runs as root (UID 0). This allows the Kubernetes runAsNonRoot restriction to be bypassed, causing unexpected behavior for environments that require containers to run as a non-root user. This issue has been fixed in versions 1.7.32, 2.0.9, 2.2.4 and 2.3.1.
📍 영향받는 시스템
containerd versions prior to 1.7.32, 2.0.9, 2.2.4, and 2.3.1
⚔️ 공격 벡터
조작된 /etc/passwd 파일을 포함한 컨테이너 이미지를 사용하여 32비트 범위를 초과하는 숫자형 User 지시문을 전달함
🛡️ 대응 방법
containerd를 수정된 버전(1.7.32, 2.0.9, 2.2.4, 2.3.1 이상)으로 업데이트하십시오.
🔧 검증 코드
출력된 containerd 버전을 확인하여 취약한 버전 범위에 해당하는지 대조하십시오.
containerd --version 2>/dev/null || ctr version 2>/dev/null | grep -E 'containerd version'