CVE-2023-54137
Description
In the Linux kernel, the following vulnerability has been resolved:
vfio/type1: fix cap_migration information leak
Fix an information leak where an uninitialized hole in struct vfio_iommu_type1_info_cap_migration on the stack is exposed to userspace.
The definition of struct vfio_iommu_type1_info_cap_migration contains a hole as shown in this pahole(1) output:
struct vfio_iommu_type1_info_cap_migration { struct vfio_info_cap_header header; /* 0 8 */ __u32 flags; /* 8 4 */
/* XXX 4 bytes hole, try to pack */
__u64 pgsize_bitmap; /* 16 8 */ __u64 max_dirty_bitmap_size; /* 24 8 */
/* size: 32, cachelines: 1, members: 4 */ /* sum members: 28, holes: 1, sum holes: 4 */ /* last cacheline: 32 bytes */ };
The cap_mig variable is filled in without initializing the hole:
static int vfio_iommu_migration_build_caps(struct vfio_iommu *iommu, struct vfio_info_cap *caps) { struct vfio_iommu_type1_info_cap_migration cap_mig;
cap_mig.header.id = VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION; cap_mig.header.version = 1;
cap_mig.flags = 0; /* support minimum pgsize */ cap_mig.pgsize_bitmap = (size_t)1 << __ffs(iommu->pgsize_bitmap); cap_mig.max_dirty_bitmap_size = DIRTY_BITMAP_SIZE_MAX;
return vfio_info_add_capability(caps, &cap_mig.header, sizeof(cap_mig)); }
The structure is then copied to a temporary location on the heap. At this point it's already too late and ioctl(VFIO_IOMMU_GET_INFO) copies it to userspace later:
int vfio_info_add_capability(struct vfio_info_cap *caps, struct vfio_info_cap_header *cap, size_t size) { struct vfio_info_cap_header *header;
header = vfio_info_cap_add(caps, size, cap->id, cap->version); if (IS_ERR(header)) return PTR_ERR(header);
memcpy(header + 1, cap + 1, size - sizeof(*header));
return 0; }
This issue was found by code inspection.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
An uninitialized hole in struct vfio_iommu_type1_info_cap_migration on the stack leaks kernel memory to userspace via the VFIO_IOMMU_GET_INFO ioctl.
Vulnerability
CVE-2023-54137 is an information leak vulnerability in the Linux kernel's VFIO/type1 subsystem. The root cause is that the local variable cap_mig of type struct vfio_iommu_type1_info_cap_migration is declared on the stack and only some of its members are explicitly initialized before the entire structure is copied to userspace. The structure contains a 4-byte hole between the flags and pgsize_bitmap fields, as shown by pahole. This uninitialized hole can contain leftover kernel stack data, which is then exposed to userspace when the structure is copied via memcpy in vfio_info_add_capability and ultimately returned by the VFIO_IOMMU_GET_INFO ioctl [1][2].
Exploitation
An attacker must have access to a VFIO device and be able to issue the VFIO_IOMMU_GET_INFO ioctl. No special privileges beyond the ability to interact with VFIO are required. The leak occurs during normal operation of the VFIO migration capability query, so no unusual conditions are needed. The uninitialized hole is present in the stack frame of vfio_iommu_migration_build_caps, and the data leaked depends on what was previously stored in that stack location.
Impact
A local attacker can obtain 4 bytes of uninitialized kernel stack memory. This may contain sensitive information such as pointers, cryptographic keys, process credentials, or other kernel data. This information leak could be used to bypass KASLR or to gather intelligence for further exploitation. The vulnerability is considered moderate severity because it requires local access and VFIO device access, but it can lead to the disclosure of kernel memory contents.
Mitigation
The fix was applied in the Linux kernel stable tree. The commit initializes the entire cap_mig structure with memset or by zeroing the hole explicitly before use. Users should update to update their kernel to a version containing the fix. No workaround is available other than restricting access to VFIO devices or applying the kernel patch.
AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
1Patches
6ad83d83dd89113fd667db999f6f300ecc196cbac29a1caa41b5feb8497cdcd24e2a60af6Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
6- git.kernel.org/stable/c/13fd667db999bffb557c5de7adb3c14f1713dd51nvd
- git.kernel.org/stable/c/1b5feb8497cdb5b9962db2700814bffbc030fb4anvd
- git.kernel.org/stable/c/ad83d83dd891244de0d07678b257dc976db7c132nvd
- git.kernel.org/stable/c/cbac29a1caa49a34e131394e1f4d924a76d8b0c9nvd
- git.kernel.org/stable/c/cd24e2a60af633f157d7e59c0a6dba64f131c0b1nvd
- git.kernel.org/stable/c/f6f300ecc196d243c02adeb9ee0c62c677c24bfbnvd
News mentions
0No linked articles in our index yet.