CVE-2026-13201
Kubevirt: virt-handler-rhel9: kubevirt: safepath symlink following in virt-handler enables notify socket hijacking and node-level vm disruption
A flaw was found in KubeVirt's safepath package used by virt-handler. The OpenAtNoFollow function uses O_PATH|O_NOFOLLOW to obtain a file descriptor to a path leaf, but downstream operations resolve the path via /proc/self/fd/N using link-following syscalls. When the leaf is a symlink, the kernel dereferences it, defeating the intended no-follow protection. An attacker with access to a virt-launcher pod can exploit this to redirect virt-handler's IPC socket connections, including the notify socket used for VM domain lifecycle events. By hijacking this socket, the attacker can inject arbitrary domain events into virt-handler, causing it to take incorrect lifecycle actions, corrupt VM state in the Kubernetes API, or crash — resulting in sustained denial of VM management services for all virtual machines on the affected node. Additionally, the same symlink following flaw allows virt-handler to apply file ownership or permission changes to unintended host paths.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- Low
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.3
Kubevirt: virt-handler-rhel9: kubevirt: safepath symlink following in virt-handler enables notify socket hijacking and node-level vm disruption
A flaw was found in KubeVirt's safepath package used by virt-handler. The OpenAtNoFollow function uses O_PATH|O_NOFOLLOW to obtain a file descriptor to a path leaf, but downstream operations resolve the path via /proc/self/fd/N using link-following syscalls. When the leaf is a symlink, the kernel dereferences it, defeating the intended no-follow protection. An attacker with access to a virt-launcher pod can exploit this to redirect virt-handler's IPC socket connections, including the notify socket used for VM domain lifecycle events. By hijacking this socket, the attacker can inject arbitrary domain events into virt-handler, causing it to take incorrect lifecycle actions, corrupt VM state in the Kubernetes API, or crash — resulting in sustained denial of VM management services for all virtual machines on the affected node. Additionally, the same symlink following flaw allows virt-handler to apply file ownership or permission changes to unintended host paths.
- Record
CVE-2026-13201- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:H - Weakness
- CWE-61
- Updated
- 2026-11-02
EUVDEUVD-2026-39086
7.3
A flaw was found in KubeVirt's safepath package used by virt-handler. The OpenAtNoFollow function uses O_PATH|O_NOFOLLOW to obtain a file descriptor to a path leaf, but downstream operations resolve the path via /proc/self/fd/N using link-following syscalls. When the leaf is a symlink, the kernel dereferences it, defeating the intended no-follow protection. An attacker with access to a virt-launcher pod can exploit this to redirect virt-handler's IPC socket connections, including the notify socket used for VM domain lifecycle events. By hijacking this socket, the attacker can inject arbitrary domain events into virt-handler, causing it to take incorrect lifecycle actions, corrupt VM state in the Kubernetes API, or crash — resulting in sustained denial of VM management services for all virtual machines on the affected node. Additionally, the same symlink following flaw allows virt-handler to apply file ownership or permission changes to unintended host paths.
- Record
EUVD-2026-39086- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-rcfc-7m3g-h5xh
5.2
A flaw was found in KubeVirt's safepath package. The OpenAtNoFollow function uses O_PATH...
A flaw was found in KubeVirt's safepath package. The OpenAtNoFollow function uses O_PATH|O_NOFOLLOW to obtain a file descriptor to a path leaf, but downstream helpers operate via /proc/self/fd/N using link-following syscalls. When the leaf is a symlink, the kernel dereferences it, defeating the intended no-follow protection. An attacker with access to a virt-launcher pod can exploit this to cause virt-handler to apply file ownership or permission changes to an unintended host path.
- Record
GHSA-rcfc-7m3g-h5xh- CVSS 3.1
- 5.2 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:L - Weakness
- CWE-61
- Updated
- 2026-11-02
NVD
7.3
A flaw was found in KubeVirt's safepath package used by virt-handler. The OpenAtNoFollow function uses O_PATH|O_NOFOLLOW to obtain a file descriptor to a path leaf, but downstream operations resolve the path via /proc/self/fd/N using link-following syscalls. When the leaf is a symlink, the kernel dereferences it, defeating the intended no-follow protection. An attacker with access to a virt-launcher pod can exploit this to redirect virt-handler's IPC socket connections, including the notify socket used for VM domain lifecycle events. By hijacking this socket, the attacker can inject arbitrary domain events into virt-handler, causing it to take incorrect lifecycle actions, corrupt VM state in the Kubernetes API, or crash — resulting in sustained denial of VM management services for all virtual machines on the affected node. Additionally, the same symlink following flaw allows virt-handler to apply file ownership or permission changes to unintended host paths.
- Record
CVE-2026-13201- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:H - Weakness
- CWE-61
- Updated
- 2026-11-02
OSVAZL-91173 No score
CVE-2026-13201 affecting package kubevirt for versions less than 1.8.4-4
A flaw was found in KubeVirt's safepath package used by virt-handler. The OpenAtNoFollow function uses O_PATH|O_NOFOLLOW to obtain a file descriptor to a path leaf, but downstream operations resolve the path via /proc/self/fd/N using link-following syscalls. When the leaf is a symlink, the kernel dereferences it, defeating the intended no-follow protection. An attacker with access to a virt-launcher pod can exploit this to redirect virt-handler's IPC socket connections, including the notify socket used for VM domain lifecycle events. By hijacking this socket, the attacker can inject arbitrary domain events into virt-handler, causing it to take incorrect lifecycle actions, corrupt VM state in the Kubernetes API, or crash — resulting in sustained denial of VM management services for all virtual machines on the affected node. Additionally, the same symlink following flaw allows virt-handler to apply file ownership or permission changes to unintended host paths.
- Record
AZL-91173- Updated
- 2026-11-05
OSVopenSUSE-SU-2026:11392-1 No score
kubevirt1.8-container-disk-1.8.4-3.1 on GA media
These are all security issues fixed in the kubevirt1.8-container-disk-1.8.4-3.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11392-1- Updated
- 2026-11-02
Show 4 moreShow less
OSVopenSUSE-SU-2026:11520-1 No score
kubevirt1.9-container-disk-1.9.0-1.1 on GA media
These are all security issues fixed in the kubevirt1.9-container-disk-1.9.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11520-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21590-1 No score
Security update for kubevirt1.8
This update for kubevirt1.8 fixes the following issues:
Update to version 1.8.4.
Security issues fixed:
- CVE-2026-13201: virt-handler-rhel9: kubevirt: safepath
OpenAtNoFollowsymlink following via/proc/self/fdallows host file metadata modification (bsc#1269093). - CVE-2026-13622: virt-handler migration proxy follows symlinks and allows container escape to host (bsc#1272840).
- CVE-2026-25680, CVE-2026-25681, CVE-2026-27136, CVE-2026-42502, CVE-2026-42506: golang.org/x/net/html: multiple issues when parsing HTML files (bsc#1267120).
- CVE-2026-33814: golang.org/x/net/http2: processing of HTTP/2 SETTINGS frames with a crafted
SETTINGS_MAX_FRAME_SIZEcan lead to an infinite loop and a denial of service (bsc#1265736). - CVE-2026-35469: github.com/moby/spdystream: improper validation of attacker-controlled input in the SPDY/3 frame parser allows for a denial of service via crafted SPDY frames (bsc#1262265).
- CVE-2026-39821: golang.org/x/net/idna: failure to reject ASCII-only Punycode-encoded labels allows for validation bypass and privilege escalation (bsc#1266575).
- CVE-2026-39827, CVE-2026-39828, CVE-2026-39829, CVE-2026-39830, CVE-2026-39831, CVE-2026-39832, CVE-2026-39833,
CVE-2026-39834, CVE-2026-39835, CVE-2026-42508, CVE-2026-46595, CVE-2026-46597, CVE-2026-46598:
golang.org/x/crypto/ssh: multiple issues in
x/crypto/ssh(bsc#1266151). - CVE-2026-46600: parsing of invalid SVCB or HTTPS RR when the size of a parameter value overflows the message buffer can lead to panic (bsc#1273606).
- CVE-2026-56852: improper handling of truncated/invalid UTF-8 input can lead to an infinite loop (bsc#1272011).
Other updates and bugfixes:
- Fix the release manifests' image references (bsc#1272604).
- Add a
libguestfs-toolssubpackage. - Build with Go >= 1.25 (required by
golang.org/x/net0.55). - Version 1.8.4:
- node-labeller: use new
libvirtflags for full feature expansion. - Fix gRPC connection leak in
GetLauncherClient; clean up ghost launcher record on connection setup failure. - api: validate
VMI VSOCK CIDand checksum status fields asuint32. - virt-operator: refine canary flow to fully support out-of-band changes.
- New
virt-api/virt-handler/virt-operatorready and down metrics, alerts and recording rules.
- node-labeller: use new
- Refresh
disks-images-provider.yamlto the v1.8.4 image tag.
- Record
openSUSE-SU-2026:21590-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:3480-1 No score
Security update for kubevirt
This update for kubevirt fixes the following issues:
-
Security update correcting a CVE over-claim from the previous update, verified by auditing the fix code actually present in the vendored tree:
- CVE-2026-39821 (bsc#1266575): the previous entry claimed this fixed by the golang.org/x/net v0.55.0 re-vendor, but 0.55.0's idna fix is compile-time gated on Unicode 16 tables, which only exist for go1.27+ - it is inert in our go1.25 builds, so the claim was incorrect. Re-vendor golang.org/x/net v0.55.0 -> v0.57.0, whose idna package rejects all-ASCII Punycode labels unconditionally; the CVE is now actually fixed.
-
Re-vendor golang.org/x/text v0.37.0 -> v0.40.0: CVE-2026-56852 (bsc#1271661), infinite loop on invalid input in unicode/norm.
-
golang.org/x/crypto v0.52.0 -> v0.54.0 (pulled in by x/net 0.57.0; no additional CVE claims, all previously listed x/crypto fixes remain included).
-
CVE-2026-13201 (bsc#1269093), safepath resolves a path whose last component is a symlink without detecting it, allowing metadata operations via /proc/self/fd to act on the symlink target. Backports of upstream release-1.7 commits 9ecda4ad5e and 1494cee849.
-
x/net 0.57.0 also contains the fix for CVE-2026-46600 (bsc#1272415) in dns/dnsmessage; kubevirt does not vendor that package (not affected), the bump merely rides past it.
- Record
SUSE-SU-2026:3480-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:3630-1 No score
Security update for kubevirt-1.6, virt-api-container-1.6, virt-controller-container-1.6, virt-exportproxy-container-1.6, virt-exportserver-container-1.6, virt-handler-container-1.6, virt-launcher-container-1.6, virt-libguestfs-tools-container-1.6, virt-operator-container-1.6, virt-pr-helper-container-1.6, virt-synchronization-controller-container-1.6
This update for kubevirt-1.6, virt-api-container-1.6, virt-controller-container-1.6, virt-exportproxy-container-1.6, virt-exportserver-container-1.6, virt-handler-container-1.6, virt-launcher-container-1.6, virt-libguestfs-tools-container-1.6, virt-operator-container-1.6, virt-pr-helper-container-1.6, virt-synchronization-controller-container-1.6 fixes the following issues:
- CVE-2025-47911: golang.org/x/net/html: algorithms that have quadratic complexity when parsing HTML documents allow for denial of service (bsc#1251420).
- CVE-2025-47914: golang.org/x/crypto/ssh/agent: no validation of message size when processing new identity requests can cause a panic due to an out-of-bounds read (bsc#1254014).
- CVE-2025-58181: golang.org/x/crypto/ssh: no validation of number of mechanisms in GSSAPI authentication requests can cause unbounded memory consumption (bsc#1253935).
- CVE-2025-58190: golang.org/x/net/html: excessive memory consumption by
html.ParseFragmentwhen processing specially crafted input can lead to a denial of service (bsc#1251615). - CVE-2026-13201: virt-handler-rhel9: kubevirt: safepath
OpenAtNoFollowsymlink following via/proc/self/fdallows host file metadata modification (bsc#1269093). - CVE-2026-13622: virt-handler migration proxy follows symlinks and allows container escape to host (bsc#1272840).
- CVE-2026-25680,CVE-2026-25681,CVE-2026-27136,CVE-2026-42502,CVE-2026-42506: golang.org/x/net/html: multiple issues when parsing HTML files (bsc#1267120).
- CVE-2026-33814: golang.org/x/net/http2: processing of HTTP/2 SETTINGS frames with a crafted
SETTINGS_MAX_FRAME_SIZEcan lead to an infinite loop and a denial of service (bsc#1265736). - CVE-2026-35469: github.com/moby/spdystream: improper validation of attacker-controlled input in the SPDY/3 frame parser allows for a denial of service via crafted SPDY frames (bsc#1262265).
- CVE-2026-39821: golang.org/x/net/idna: failure to reject ASCII-only Punycode-encoded labels allows for validation bypass and privilege escalation (bsc#1266575).
- CVE-2026-46600: parsing of invalid SVCB or HTTPS RR when the size of a parameter value overflows the message buffer can lead to panic (bsc#1273606).
- CVE-2026-56852: improper handling of truncated/invalid UTF-8 input can lead to an infinite loop (bsc#1272000).
Other updates and bugfixes:
- Fixed
printf-style calls with non-constant format strings (cmd/virt-chroot,tests/) that failgo1.25's vet (toolchain required by thex/net0.55.0 re-vendor); rewritten with no behavior change. - Build with Go >= 1.25 (required by
golang.org/x/net0.55).
- Record
SUSE-SU-2026:3630-1- Updated
- 2026-11-02
Affected products
- kubevirt
- red hat container native virtualization 4.12
- red hat container native virtualization 4.13
- red hat container native virtualization 4.14
- red hat container native virtualization 4.15
- red hat container native virtualization 4.16
- red hat container native virtualization 4.17
- red hat container native virtualization 4.18
- red hat container native virtualization 4.19
- red hat container native virtualization 4.20
- red hat container native virtualization 4.21
- red hat container native virtualization 4.22
Show 1 moreShow less
Affected packages
| Package | Affected | Fixed |
|---|---|---|
kubevirtAzure Linux:3 |
before 1.8.4-4 | 1.8.4-4 |
kubevirtSUSE:Linux Enterprise Module for Containers 15 SP7 From an advisory covering 4 CVEs |
before 1.7.4-150700.3.33.1 | 1.7.4-150700.3.33.1 |
kubevirt-1.6SUSE:Linux Enterprise Module for Containers 15 SP7 From an advisory covering 16 CVEs |
before 1.6.6-150700.15.17.1 | 1.6.6-150700.15.17.1 |
kubevirt1.8openSUSE:Tumbleweed From an advisory covering 3 CVEs |
before 1.8.4-3.1 | 1.8.4-3.1 |
kubevirt1.9openSUSE:Tumbleweed From an advisory covering 10 CVEs |
before 1.9.0-1.1 | 1.9.0-1.1 |
kubevirt1.8openSUSE:Leap 16.0 From an advisory covering 25 CVEs |
before 1.8.4-160000.1.1 | 1.8.4-160000.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-13201 is a high vulnerability (CVSS 7.3) in Kubevirt, published June 24, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.31%, the 23rd percentile. Fixed in kubevirt 1.8.4-4.
References
access.redhat.com/errata/RHSA-2026:51031
access.redhat.com/errata/RHSA-2026:53655
access.redhat.com/errata/RHSA-2026:53671
access.redhat.com/errata/RHSA-2026:53684
access.redhat.com/errata/RHSA-2026:53721
access.redhat.com/errata/RHSA-2026:53728
Show 57 moreShow less
access.redhat.com/errata/RHSA-2026:53763
access.redhat.com/errata/RHSA-2026:53797
access.redhat.com/errata/RHSA-2026:53826
access.redhat.com/errata/RHSA-2026:53838
access.redhat.com/errata/RHSA-2026:80941
access.redhat.com/security/cve/CVE-2026-13201
bugzilla.redhat.com/show_bug.cgi?id=2492203
nvd.nist.gov/vuln/detail/CVE-2026-13201
github.com/advisories/GHSA-rcfc-7m3g-h5xh
suse.com/support/update/announcement/2026/suse-su-20263480-1
bugzilla.suse.com/1266575
bugzilla.suse.com/1269093
bugzilla.suse.com/1271661
bugzilla.suse.com/1272415
suse.com/security/cve/CVE-2026-13201
suse.com/security/cve/CVE-2026-39821
suse.com/security/cve/CVE-2026-46600
suse.com/security/cve/CVE-2026-56852
suse.com/support/update/announcement/2026/suse-su-20263630-1
bugzilla.suse.com/1251420
bugzilla.suse.com/1251615
bugzilla.suse.com/1253935
bugzilla.suse.com/1254014
bugzilla.suse.com/1262265
bugzilla.suse.com/1265736
bugzilla.suse.com/1267120
bugzilla.suse.com/1272000
bugzilla.suse.com/1272840
bugzilla.suse.com/1273606
suse.com/security/cve/CVE-2025-47911
suse.com/security/cve/CVE-2025-47914
suse.com/security/cve/CVE-2025-58181
suse.com/security/cve/CVE-2025-58190
suse.com/security/cve/CVE-2026-13622
suse.com/security/cve/CVE-2026-25680
suse.com/security/cve/CVE-2026-25681
suse.com/security/cve/CVE-2026-27136
suse.com/security/cve/CVE-2026-33814
suse.com/security/cve/CVE-2026-35469
suse.com/security/cve/CVE-2026-42502
suse.com/security/cve/CVE-2026-42506
suse.com/security/cve/CVE-2026-39827
suse.com/security/cve/CVE-2026-39828
suse.com/security/cve/CVE-2026-39832
suse.com/security/cve/CVE-2026-42508
bugzilla.suse.com/1266151
bugzilla.suse.com/1272011
bugzilla.suse.com/1272604
suse.com/security/cve/CVE-2026-39829
suse.com/security/cve/CVE-2026-39830
suse.com/security/cve/CVE-2026-39831
suse.com/security/cve/CVE-2026-39833
suse.com/security/cve/CVE-2026-39834
suse.com/security/cve/CVE-2026-39835
suse.com/security/cve/CVE-2026-46595
suse.com/security/cve/CVE-2026-46597
suse.com/security/cve/CVE-2026-46598