Описание
A flaw was found in KubeVirt's network annotation generator. When a tenant creates a VirtualMachineInstance with a Multus network configuration, the supplied networkName value is written verbatim into the launcher pod's v1.multus-cni.io/default-network annotation without format validation or sanitization. The only admission check rejects empty strings; no DNS-1123 format validation, JSON detection, or special character rejection is performed. When the ExternalNetResourceInjection Beta feature gate is enabled (off by default, cluster-admin only), the NAD lookup that would otherwise catch malformed names is skipped by design. A tenant with kubevirt.io:edit permissions can inject a JSON-formatted NetworkSelectionElement array specifying an arbitrary namespace, NAD name, static IP address, and MAC address. Multus on the node parses this JSON and attaches the launcher pod to the specified network attachment in any namespace, enabling cross-namespace network access and IP/MAC impersonation on network segments normally segregated from tenant workloads. The ExternalNetResourceInjection feature gate was introduced in KubeVirt v1.8.0 (first shipped in OpenShift Virtualization 4.21).
Отчет
Red Hat has assessed this flaw as Moderate impact for OpenShift Virtualization. The vulnerability requires the ExternalNetResourceInjection Beta feature gate to be explicitly enabled by a cluster administrator — this gate is off by default in all shipped versions of OpenShift Virtualization. When the gate is disabled (the default configuration), the NAD lookup in virt-controller catches invalid network names (bracket-containing strings fail Kubernetes object name validation), and pod rendering is blocked. Environments that have not explicitly enabled this feature gate are not vulnerable. The ExternalNetResourceInjection feature gate was introduced in KubeVirt v1.8.0 and first shipped in OpenShift Virtualization 4.21; earlier versions are not affected. For environments where the gate is enabled, a tenant with standard VM creation permissions (kubevirt.io:edit) could gain network access to segments in other namespaces, though actual data access depends on what services are reachable on those networks and whether NetworkPolicy is enforced on the target segments.
Меры по смягчению последствий
If the ExternalNetResourceInjection feature gate has been enabled, disable it by removing it from the HyperConverged CR's spec.featureGates configuration. This restores the NAD lookup that blocks malformed network names. If the feature gate is required for operational reasons, restrict kubevirt.io:edit permissions to trusted users only and enforce NetworkPolicy on sensitive network segments to limit lateral movement from unauthorized attachments.
Затронутые пакеты
| Платформа | Пакет | Состояние | Рекомендация | Релиз |
|---|---|---|---|---|
| Red Hat OpenShift Virtualization 4 | container-native-virtualization/virt-controller-rhel9 | Fix deferred |
Показывать по
Дополнительная информация
Статус:
4.9 Medium
CVSS3
Связанные уязвимости
A flaw was found in KubeVirt's network annotation generator. When a tenant creates a VirtualMachineInstance with a Multus network configuration, the supplied networkName value is written verbatim into the launcher pod's v1.multus-cni.io/default-network annotation without format validation or sanitization. The only admission check rejects empty strings; no DNS-1123 format validation, JSON detection, or special character rejection is performed. When the ExternalNetResourceInjection Beta feature gate is enabled (off by default, cluster-admin only), the NAD lookup that would otherwise catch malformed names is skipped by design. A tenant with kubevirt.io:edit permissions can inject a JSON-formatted NetworkSelectionElement array specifying an arbitrary namespace, NAD name, static IP address, and MAC address. Multus on the node parses this JSON and attaches the launcher pod to the specified network attachment in any namespace, enabling cross-namespace network access and IP/MAC impersonation o
A flaw was found in KubeVirt's network annotation generator. When a tenant creates a VirtualMachineInstance with a Multus network configuration, the supplied networkName value is written verbatim into the launcher pod's v1.multus-cni.io/default-network annotation without format validation or sanitization. The only admission check rejects empty strings; no DNS-1123 format validation, JSON detection, or special character rejection is performed. When the ExternalNetResourceInjection Beta feature gate is enabled (off by default, cluster-admin only), the NAD lookup that would otherwise catch malformed names is skipped by design. A tenant with kubevirt.io:edit permissions can inject a JSON-formatted NetworkSelectionElement array specifying an arbitrary namespace, NAD name, static IP address, and MAC address. Multus on the node parses this JSON and attaches the launcher pod to the specified network attachment in any namespace, enabling cross-namespace network access and IP/MAC impersonatio...
4.9 Medium
CVSS3