🔍 CVE-2024-43803

4.9
CVSS Score
MEDIUM
2024-09-03
2026-04-15 00:35
✅ 완료

🇰🇷 한글 설명

Bare Metal Operator (BMO)의 BareMetalHost CRD가 다른 네임스페이스의 Kubernetes Secret을 접근할 수 있는 취약점입니다. 네임스페이스 접근 권한이 있는 사용자가 userData, metaData, networkData 필드를 통해 다른 네임스페이스의 Secret을 참조하여 정보를 탈취할 수 있습니다. 멀티테넌트 환경에서 테넌트 격리가 우회될 수 있는 심각한 정보 유출 취약점입니다.

💡 쉬운 설명

쿠버네티스에서 서버를 관리하는 도구(BMO)가 실수로 다른 팀의 비밀정보에 접근할 수 있게 만들어 놓았습니다. 제한된 권한의 사용자가 이를 악용해 다른 팀의 암호나 토큰을 몰래 복사할 수 있습니다.

🇺🇸 원문 (English)

The Bare Metal Operator (BMO) implements a Kubernetes API for managing bare metal hosts in Metal3. The `BareMetalHost` (BMH) CRD allows the `userData`, `metaData`, and `networkData` for the provisioned host to be specified as links to Kubernetes Secrets. There are fields for both the `Name` and `Namespace` of the Secret, meaning that versions of the baremetal-operator prior to 0.8.0, 0.6.2, and 0.5.2 will read a `Secret` from any namespace. A user with access to create or edit a `BareMetalHost` can thus exfiltrate a `Secret` from another namespace by using it as e.g. the `userData` for provisioning some host (note that this need not be a real host, it could be a VM somewhere). BMO will only read a key with the name `value` (or `userData`, `metaData`, or `networkData`), so that limits the exposure somewhat. `value` is probably a pretty common key though. Secrets used by _other_ `BareMetalHost`s in different namespaces are always vulnerable. It is probably relatively unusual for anyone other than cluster administrators to have RBAC access to create/edit a `BareMetalHost`. This vulnerability is only meaningful, if the cluster has users other than administrators and users' privileges are limited to their respective namespaces. The patch prevents BMO from accepting links to Secrets from other namespaces as BMH input. Any BMH configuration is only read from the same namespace only. The problem is patched in BMO releases v0.7.0, v0.6.2 and v0.5.2 and users should upgrade to those versions. Prior upgrading, duplicate the BMC Secrets to the namespace where the corresponding BMH is. After upgrade, remove the old Secrets. As a workaround, an operator can configure BMO RBAC to be namespace scoped for Secrets, instead of cluster scoped, to prevent BMO from accessing Secrets from other namespaces.

📍 영향받는 시스템

Bare Metal Operator v0.8.0 미만, v0.6.2 미만, v0.5.2 미만 버전

⚔️ 공격 벡터

BareMetalHost 생성/수정 권한이 있는 사용자가 userData/metaData/networkData 필드에서 다른 네임스페이스의 Secret을 참조하여 탈취

🛡️ 대응 방법

BMO를 v0.7.0, v0.6.2 또는 v0.5.2 이상으로 업그레이드하고 RBAC을 네임스페이스 범위로 제한

🔧 검증 코드

출력된 이미지 태그의 버전 번호가 v0.7.0 이상, v0.6.2 이상 또는 v0.5.2 이상인지 확인하여 취약한 버전 여부 판단

Shell / Script
kubectl get deployment -n baremetal-operator-system baremetal-operator-controller-manager -o jsonpath='{.spec.template.spec.containers[0].image}'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Kubernetes