Look up another CVE · open CVE-2025-38283 in the interactive tracker
CVE-2025-38283
hisi_acc_vfio_pci: bugfix live migration function without VF device driver
Published 2025-07-10 (15 months ago) by the Linux kernel CNA. Subsystem drivers/vfio. Debian urgency: not yet assigned.
Debian does not build this code. The per-release build detail is under "Where it lives" below.
What to do, per Debian release
Debian's own status for CVE-2025-38283 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | vulnerable | 6.1.190-1 | No fix published anywhere yet, neither in Debian nor upstream for the series bookworm tracks. Watch the Debian tracker page for this CVE. Advisories for bookworm have historically landed a median of 23 days after publication. |
| Debian 13trixie | fixed | 6.12.35-1 | Update the kernel and reboot. Fixed in 6.12.35-1. A running kernel keeps the old code until the machine restarts. |
| Debian 14forky | fixed | 6.12.35-1 | Update the kernel and reboot. Fixed in 6.12.35-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 6.12.35-1 | Update the kernel and reboot. Fixed in 6.12.35-1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
If the VF device driver is not loaded in the Guest OS and we attempt to perform device data migration, the address of the migrated data will be NULL. The live migration recovery operation on the destination side will access a null address value, which will cause access errors. Therefore, live migration of VMs without added VF device drivers does not require device data migration. In addition, when the queue address data obtained by the destination is empty, device queue recovery processing will not be performed.
Where it lives
The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.
drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
- What this is
- VFIO HISILICON PCI DRIVERMAINTAINERS section matched on drivers/vfio/pci/hisilicon/ · kvm@vger.kernel.org · Maintained
Check it on the machine
grep -wE 'CONFIG_HISI_ACC_VFIO_PCI|CONFIG_VFIO|CONFIG_VFIO_PCI|CONFIG_VFIO_PCI_CORE' /boot/config-$(uname -r)Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.
Show whether Debian builds this, per release
Debian does not build this code. In 4 releases below, every kernel flavour Debian publishes has the switch off, so the vulnerable file is compiled into no kernel binary Debian ships.
- bookworm, trixie, forky, sidn
- n
- not enabled on any flavour - this release does not build the code
- Build switches
- CONFIG_HISI_ACC_VFIO_PCI, CONFIG_VFIO, CONFIG_VFIO_PCI, CONFIG_VFIO_PCI_CORE
- Reads as
- all on means the file is compiled; any one off means it is not.
From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages
Signals
- Published
- 2025-07-10 (15 months ago)source
- CVSS
- 8.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:Hsource recompute it - Attack vector
- local (AV:L)source
- EPSS
- 0.20%, higher than 9.2% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- not yet assignedsource
- Subsystem
- drivers/vfio
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 5.18 | 6.6.94 | b5ef128926cd |
| 5.18 | 6.12.34 | 59a834592dd2 |
| 5.18 | 6.15.3 | 53e8e8e909f7 |
| 5.18 | 6.16 | 2777a40998de |
Why the CNA scored it this way
Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source
- AV:LAttack vector, local
- The vulnerable path is driven entirely through local file operations on a VFIO device fd — `VFIO_DEVICE_FEATURE` migration-state ioctls plus `write()` on the migration fd — with no network-facing component.
- AC:LAttack complexity, low
- Triggering is fully deterministic: either leave the VF driver unloaded in the guest before migration, or simply open the device and perform STOP→RUNNING, since `vf_qm_state` defaults to `QM_READY` (0) from kzalloc. No race, timing window, or memory-layout condition is involved.
- PR:LPrivileges required, low
- An unprivileged local user granted access to /dev/vfio/* or /dev/iommu (the standard libvirt/QEMU delegation model) can reach the migration state machine; no capability is required on the IOMMU-backed path, as `CAP_SYS_RAWIO` gates only VFIO_NO_IOMMU mode.
- UI:NUser interaction, none
- The attacker performs every step themselves — open device, set RESUMING, write zeroed migration data, set STOP/RUNNING — with no action required from an administrator or any other user.
- S:CScope, changed
- Zeroed queue-context bases make the accelerator DMA against unintended addresses in the assigned domain, and the resulting device errors escalate through `qm_abnormal_irq()` to a PF `qm_controller_reset()` that calls `qm_try_stop_vfs()`, halting every sibling VF belonging to other VMs and the host's own crypto drivers — impact well beyond the attacker's own VFIO device.
- C:HConfidentiality impact, high
- With SQC/CQC/EQC bases set to zero the accelerator fetches queue contexts from IOVA 0 (guest physical page 0 in a typical no-vIOMMU passthrough) and follows those garbage descriptors, exposing memory never designated as queue storage through the device's queue and response path.
- I:HIntegrity impact, high
- The same bogus contexts cause the device to write CQEs/EQEs into arbitrary attacker-influenceable addresses in the DMA domain, silently corrupting a migrated VM's memory, while zeroed queue state is also committed into the physical VF's hardware configuration.
- A:HAvailability impact, high
- The NULL-address queue programming produces AXI/queue-invalid errors in the QM reset mask, which drive `qm_abnormal_irq()` → `qm_controller_reset()`, stopping the PF and all VFs — a full accelerator outage for the host and every VM using that device, in addition to failing the migration.