A live migration operation that silently corrupts your virtual machine’s encryption services—that is the practical fallout of CVE-2025-38158, a Linux kernel fix now confirmed to affect Microsoft’s own Azure Linux distribution. The vulnerability, patched upstream in the Hisilicon VFIO PCI driver, can assemble incorrect DMA addresses after a migration, breaking in‑guest kernel‑mode acceleration. Microsoft has acknowledged that “Azure Linux includes this open‑source library and is therefore potentially affected.” For anyone running Azure Linux hosts, patching moves from routine to urgent. For operators of other Microsoft‑shipped Linux artifacts, the advisory raises a harder question: are you safe, or just not yet checked?
What actually broke inside the kernel
The Hisilicon VFIO driver (hisi_acc_vfio_pci) offloads cryptographic work to hardware accelerators inside virtual machines. When those VMs migrate between host kernels, the driver must read device registers and reassemble DMA addresses so the accelerator can talk to the right physical memory. The patched code used a wrong sequence of register reads and compositing steps, creating garbled DMA pointers on the destination side. After migration, the device would read or write wrong memory regions, and guest encryption sessions—typically kernel‑level operations like dm‑crypt or filesystem encryption—would fail silently or crash the VM.
The upstream correction, merged through the normal kernel maintainer channels, rewrites the address‑assembly logic and adds a migration‑version check. If the driver detects an older “magic number” format from the source kernel, it recomputes the DMA address on arrival. The change is confined to files under drivers/vfio/pci/hisilicon/, so it is surgical and low‑risk for regressions. Stable backports have since landed in every maintained kernel tree.
What this means for you
If you run Azure Linux
Microsoft’s MSRC advisory is blunt: Azure Linux includes the vulnerable component. That means every Azure Linux image running a kernel predating the fix is a confirmed carrier. If your virtual machines use a Hisilicon accelerator (common for offloaded encryption in confidential computing or large‑scale crypto workloads), every live migration—whether planned, automated, or part of Azure’s fabric maintenance—is a potential outage. Even if you do not actively allocate the device, the driver module may be present and loadable, expanding exposure if someone later passes through the device.
Action: treat this as a patch‑now advisory. Update your Azure Linux hosts to the kernel packages listed in Microsoft’s security update guide. Validate by checking uname -r against the fixed version bundle.
If you use other Microsoft‑provided kernels or images
The MSRC page names only Azure Linux. It does not list WSL2 kernels, AKS node images, Marketplace virtual appliances, or the linux-azure kernel offered in certain regions. That absence is not a clean bill of health—it means no public attestation exists yet. In an enterprise environment, you likely run several of those artifacts. For example, a WSL2 instance on a Windows 11 machine carries a Microsoft‑built kernel that might include the same hisi_acc_vfio_pci driver if the enablement flags were set at compile time. Similarly, an AKS node image or a curated data‑science VM could embed it.
Action: inventory every Microsoft‑provided Linux kernel image. For each, check for the driver’s presence:
find /lib/modules/$(uname -r) -type f -name 'hisi_acc_vfio*'
lsmod | grep hisi_acc_vfio_pci
If the module is present but not loaded, evaluate whether your configuration could ever load it (e.g., hardware passthrough plans). If the module is absent, your current artifact is likely not a carrier—but verify against the build source, because a future image refresh could reintroduce it. Until Microsoft issues explicit attestations for these products, treat them as unverified and apply the same validation rigor you’d use for any third‑party kernel.
If you manage cloud infrastructure
For multi‑tenant environments, this bug underscores a live‑migration integrity problem. A migration of a tenant VM that uses the accelerator can fracture encryption state, leading to data corruption or an availability incident that looks like a platform fault. As a cloud operator, you need to:
- Audit your hypervisor fleet for any nodes that include the driver.
- Test migration smoke runs that stress the device path post‑migration.
- If you cannot patch immediately, consider isolating affected VMs from live migration or disallowing accelerator passthrough until the fix is deployed.
How we got here
The Hisilicon VFIO PCI driver arrived in mainline Linux several years ago to support hardware acceleration for cryptographic operations in virtualized environments. It became particularly important for confidential computing workloads and for offloading encryption overhead in high‑throughput storage setups. Live migration with device state is notoriously complex; the VFIO framework has had to evolve to handle it, and mistakes in DMA address reassembly are among the hardest to spot because they often don’t surface until a real migration occurs.
Upstream kernel developers caught this bug during routine testing or report triage—the exact trigger is not specified, but the fix’s description makes it clear that guests migrated from older kernels saw stale or malformed DMA addresses. The correction was merged and backported through stable channels in mid‑2025. CVE-2025-38158 was assigned retroactively to track the flaw, and vendors began publishing advisories.
Microsoft’s response sits within a broader transparency effort. In October 2025, the company began rolling out machine‑readable CSAF/VEX attestations for Azure Linux, promising to update CVE entries when additional products are identified. The MSRC page for this CVE reflects that process: it correctly maps Azure Linux as a carrier because the company inspected that specific product. It does not, however, perform an exhaustive scan of every kernel image Microsoft builds—that work is ongoing.
What to do now: a practical checklist
-
Patch Azure Linux immediately. Follow Microsoft’s official guidance. Update your host kernels to the versions that incorporate the upstream fix. Reboot is required; plan a maintenance window. If you cannot reboot, avoid live migrations for VMs that use the Hisilicon device.
-
Inventory and verify all other Microsoft‑provided kernels. Use the command‑line checks described above. For WSL2, the kernel lives in
%windir%\system32\lxss\tools, and you can mount the VHD to inspect modules. For AKS node images, pull the exact image tag and use a short‑lived test container to runlsmodandmodinfo. -
Monitor Microsoft’s VEX feed. Once CSAF/VEX data becomes fully operational, integrate it into your vulnerability management pipeline to automate these artifact checks. In the meantime, do not rely on the absence of an attestation as proof of safety.
-
Test migration paths before going live. If you maintain a staging environment, perform a live migration of a VM that actively exercises the crypto accelerator. Validate that encryption continues to work, that kernel log shows no DMA errors, and that no guest panics occur post‑migration.
-
Mitigate if you cannot patch. For unpatched hosts, two short‑term mitigations are available: (a) pause live migration for any VM with the Hisilicon device attached, and (b) prevent the driver from loading by blacklisting it (
modprobe -r qm && modprobe -r hisi_qmand appropriate module blocklist entries) if your workloads do not need the accelerator. Be careful: blacklisting a driver that another module depends on can cause boot issues.
What to watch next
Microsoft’s phased rollout of CSAF/VEX attestations will gradually close the information gap. Expect updates to the CVE page if investigations reveal that WSL2 kernels, AKS images, or other artifacts include the vulnerable code. Also keep an eye on any follow‑on patches that Touches migration‑state validation more broadly; the fact that such a subtle DMA bug persisted suggests that similar edge cases may lurk in other device drivers. For now, treat the MSRC attestation as one piece of a larger puzzle—and validate every kernel you run, regardless of its vendor branding.
When a vendor names one product, it’s a starting signal, not a finish line. For Azure Linux users, that signal is loud and actionable. For everyone else, the work of verification is yours to complete.