KubeVirt Isolation Detection Flaw Allows Arbitrary File Permission Changes
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.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
kubevirt.io/kubevirtGo | < 1.5.3 | 1.5.3 |
kubevirt.io/kubevirtGo | >= 1.6.0-alpha.0, < 1.6.1 | 1.6.1 |
Affected products
1Patches
38644dbe0d047Detector: Use safepath
1 file changed · +5 −0
pkg/virt-handler/isolation/detector.go+5 −0 modified@@ -36,6 +36,7 @@ import ( v1 "kubevirt.io/api/core/v1" "kubevirt.io/client-go/log" + "kubevirt.io/kubevirt/pkg/safepath" "kubevirt.io/kubevirt/pkg/util" "kubevirt.io/kubevirt/pkg/virt-controller/services" cmdclient "kubevirt.io/kubevirt/pkg/virt-handler/cmd-client" @@ -214,6 +215,10 @@ func (s *socketBasedIsolationDetector) getPid(socket string) (int, error) { } defer sock.Close() + _, err = safepath.NewPathNoFollow(socket) + if err != nil { + return -1, err + } ufile, err := sock.(*net.UnixConn).File() if err != nil { return -1, err
f59ca63133f2Detector: Use safepath
1 file changed · +5 −0
pkg/virt-handler/isolation/detector.go+5 −0 modified@@ -36,6 +36,7 @@ import ( v1 "kubevirt.io/api/core/v1" "kubevirt.io/client-go/log" + "kubevirt.io/kubevirt/pkg/safepath" "kubevirt.io/kubevirt/pkg/util" "kubevirt.io/kubevirt/pkg/virt-controller/services" cmdclient "kubevirt.io/kubevirt/pkg/virt-handler/cmd-client" @@ -214,6 +215,10 @@ func (s *socketBasedIsolationDetector) getPid(socket string) (int, error) { } defer sock.Close() + _, err = safepath.NewPathNoFollow(socket) + if err != nil { + return -1, err + } ufile, err := sock.(*net.UnixConn).File() if err != nil { return -1, err
3ce9f41c54d0Detector: Use safepath
1 file changed · +5 −0
pkg/virt-handler/isolation/detector.go+5 −0 modified@@ -36,6 +36,7 @@ import ( v1 "kubevirt.io/api/core/v1" "kubevirt.io/client-go/log" + "kubevirt.io/kubevirt/pkg/safepath" "kubevirt.io/kubevirt/pkg/util" "kubevirt.io/kubevirt/pkg/virt-controller/services" cmdclient "kubevirt.io/kubevirt/pkg/virt-handler/cmd-client" @@ -214,6 +215,10 @@ func (s *socketBasedIsolationDetector) getPid(socket string) (int, error) { } defer sock.Close() + _, err = safepath.NewPathNoFollow(socket) + if err != nil { + return -1, err + } ufile, err := sock.(*net.UnixConn).File() if err != nil { return -1, err
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
6- github.com/advisories/GHSA-2r4r-5x78-mvqfghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2025-64437ghsaADVISORY
- github.com/kubevirt/kubevirt/commit/3ce9f41c54d04a65f10b23a46771391c00659afbghsax_refsource_MISCWEB
- github.com/kubevirt/kubevirt/commit/8644dbe0d04784b0bfa8395b91ecbd6001f88f6bghsax_refsource_MISCWEB
- github.com/kubevirt/kubevirt/commit/f59ca63133f25de8fceb3e2a0e5cc0b7bdb6a265ghsax_refsource_MISCWEB
- github.com/kubevirt/kubevirt/security/advisories/GHSA-2r4r-5x78-mvqfghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.