{"id":"CVE-2026-13218","kind":"vulnerability","aliases":["CVE-2026-13218","GHSA-q3jc-42cq-33fj"],"related":[],"title":"KubeVirt virt-handler network cache symlink vulnerability allows arbitrary host file overwrite","description":"A flaw was found in KubeVirt's virt-handler network cache handling. The writeToCachedFile function writes data to a launcher-rooted path using os.WriteFile and os.Chown without symlink protection. A user with access to the virt-launcher container can plant a symlink at the cache file path, causing virt-handler to follow it and overwrite an arbitrary host file with JSON content and change its ownership.","summary":"KubeVirt's virt-handler writes network cache files without checking for symlinks, so a user in the virt-launcher container can plant a symlink and make virt-handler overwrite an arbitrary host file. The attacker also controls the file's ownership change, which can be used to break host integrity.","severity":"medium","cvss":4.2,"epss":0.00139,"exploited":false,"exploited_at":null,"products":[{"name":"kubevirt.io/kubevirt","fixed":[],"affected":"<= 1.10.0-rc.0","ecosystem":"go"},{"name":"kubevirt","fixed":[],"affected":"","ecosystem":"vendor"},{"name":"redhat openshift virtualization","fixed":[],"affected":">= 4, <= 4.22.0","ecosystem":"vendor"}],"ecosystems":["go","vendor"],"tags":["cwe-61","infrastructure","kubernetes","kubevirt","virtualization"],"not_affected_if":["no-untrusted-vm-users","version-above-affected-range"],"how_to_check":"- Check the installed KubeVirt version with `kubectl get kubevirt -n kubevirt -o jsonpath='{.items[0].status.observedKubeVirtVersion}'`\n- Compare against the affected range: `go:kubevirt.io/kubevirt` up to and including `1.10.0-rc.0`","fix":null,"status":"open","published_at":"2026-06-26T00:16:51+00:00","first_seen_at":"2026-11-04T17:25:52+00:00","triaged_at":"2026-11-04T17:26:36+00:00","updated_at":"2026-11-04T17:28:12+00:00","category":"infrastructure","confidence":0.6,"triage":{"at":"2026-11-04T17:26:36Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"local","title":"KubeVirt: symlink in network cache lets virt-handler overwrite host files","impact":"high","summary":"KubeVirt's virt-handler writes network cache files without checking for symlinks, so a user in the virt-launcher container can plant a symlink and make virt-handler overwrite an arbitrary host file. The attacker also controls the file's ownership change, which can be used to break host integrity.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["kubevirt","kubernetes","virtualization"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"Arbitrary host file overwritten and ownership changed by a container user","analyst_note":"Find the fixed KubeVirt version and confirm whether exploitation needs a specific configuration, using the GHSA-q3jc-42cq-33fj advisory page.","how_to_check":"- Check the installed KubeVirt version with `kubectl get kubevirt -n kubevirt -o jsonpath='{.items[0].status.observedKubeVirtVersion}'`\n- Compare against the affected range: `go:kubevirt.io/kubevirt` up to and including `1.10.0-rc.0`","plain_action":"","needs_analyst":true,"not_affected_if":["no-untrusted-vm-users","version-above-affected-range"],"who_is_affected":"Clusters running KubeVirt at or below 1.10.0-rc.0, where virt-handler runs on nodes alongside virt-launcher pods that tenants can access. Exposure needs a user with access to the virt-launcher container; clusters without untrusted workloads on KubeVirt are lower risk. The sources do not state a fixed version.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000744,"input_tokens":4220,"output_tokens":644,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-13218':16A,24A '-2026':15A,23A '-61':33B '/kubevirt':27A '33fj':21A '42cq':20A 'access':125C 'allow':9A 'also':76B 'arbitrari':10A,71B,151C 'attack':75B 'break':88B 'cach':6A,45B,102C,138C 'caus':141C 'chang':82B,158C 'check':48B 'contain':59B,131C 'content':156C 'control':77B 'cve':14A,22A 'cwe':32B 'data':108C 'file':12A,46B,73B,79B,139C,153C 'flaw':92C 'follow':146C 'found':94C 'function':106C 'ghsa':18A 'ghsa-q3jc-42cq-33fj':17A 'handl':103C 'handler':4A,42B,68B,100C,144C 'host':11A,72B,89B,152C 'infrastructur':34B 'integr':90B 'json':155C 'kubernet':35B 'kubevirt':1A,28A,36B,38B,96C 'kubevirt.io':26A 'kubevirt.io/kubevirt':25A 'launcher':58B,112C,130C 'launcher-root':111C 'make':65B 'network':5A,44B,101C 'openshift':30A 'os.chown':118C 'os.writefile':116C 'overwrit':13A,69B,149C 'ownership':81B,160C 'path':114C,140C 'plant':61B,133C 'protect':121C 'q3jc':19A 'redhat':29A 'root':113C 'symlink':7A,50B,63B,120C,135C 'use':86B,115C 'user':53B,123C 'virt':3A,41B,57B,67B,99C,129C,143C 'virt-handl':2A,40B,66B,98C,142C 'virt-launch':56B,128C 'virtual':37B 'virtualization':31A 'vulner':8A 'without':47B,119C 'write':43B,107C 'writetocachedfil':105C","nicknames":[],"mitigations":[],"who_affected":"Clusters running KubeVirt at or below 1.10.0-rc.0, where virt-handler runs on nodes alongside virt-launcher pods that tenants can access. Exposure needs a user with access to the virt-launcher container; clusters without untrusted workloads on KubeVirt are lower risk. The sources do not state a fixed version.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":["kubevirt","kubevirtiokubevirt","openshiftvirtualization","redhatopenshiftvirtualization"],"ptokens":["io","kubevirt","openshift","redhat","virtualization"],"labels":["cwe61","go","infrastructure","kubernetes","kubevirt","medium","vendor","virtualization"],"campaign_type":null,"first_public_at":"2026-06-26T00:16:51+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:N/I:L/A:L","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-q3jc-42cq-33fj","url":"https://github.com/advisories/GHSA-q3jc-42cq-33fj","severity":"medium","published_at":"2026-06-26T00:32:07+00:00","modified_at":"2026-11-04T17:23:35+00:00","first_seen_at":"2026-11-04T17:25:52+00:00","fetched_at":"2026-11-04T17:51:22+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-13218","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-13218","severity":null,"published_at":"2026-06-26T00:16:51+00:00","modified_at":"2026-10-25T22:10:00+00:00","first_seen_at":"2026-11-04T17:28:12+00:00","fetched_at":"2026-11-04T17:28:12+00:00","note":null}],"documents":[{"id":68867,"url":"https://access.redhat.com/security/cve/CVE-2026-13218","title":"Vendor advisory: access.redhat.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: access.redhat.com"},{"id":68868,"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2492654","title":"Vendor advisory: bugzilla.redhat.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Vendor advisory: bugzilla.redhat.com"}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}