CVE-2024-41096: PCI/MSI: Fix UAF in msi_capability_init
In the Linux kernel, the following vulnerability has been resolved:
PCI/MSI: Fix UAF in msi_capability_init
KFENCE reports the following UAF:
BUG: KFENCE: use-after-free read in __pci_enable_msi_range+0x2c0/0x488
Use-after-free read at 0x0000000024629571 (in kfence-#12):
__pci_enable_msi_range+0x2c0/0x488
pci_alloc_irq_vectors_affinity+0xec/0x14c
pci_alloc_irq_vectors+0x18/0x28
kfence-#12: 0x0000000008614900-0x00000000e06c228d, size=104, cache=kmalloc-128
allocated by task 81 on cpu 7 at 10.808142s:
__kmem_cache_alloc_node+0x1f0/0x2bc
kmalloc_trace+0x44/0x138
msi_alloc_desc+0x3c/0x9c
msi_domain_insert_msi_desc+0x30/0x78
msi_setup_msi_desc+0x13c/0x184
__pci_enable_msi_range+0x258/0x488
pci_alloc_irq_vectors_affinity+0xec/0x14c
pci_alloc_irq_vectors+0x18/0x28
freed by task 81 on cpu 7 at 10.811436s:
msi_domain_free_descs+0xd4/0x10c
msi_domain_free_locked.part.0+0xc0/0x1d8
msi_domain_alloc_irqs_all_locked+0xb4/0xbc
pci_msi_setup_msi_irqs+0x30/0x4c
__pci_enable_msi_range+0x2a8/0x488
pci_alloc_irq_vectors_affinity+0xec/0x14c
pci_alloc_irq_vectors+0x18/0x28
Descriptor allocation done in:
__pci_enable_msi_range
msi_capability_init
msi_setup_msi_desc
msi_insert_msi_desc
msi_domain_insert_msi_desc
msi_alloc_desc
...
Freed in case of failure in __msi_domain_alloc_locked()
__pci_enable_msi_range
msi_capability_init
pci_msi_setup_msi_irqs
msi_domain_alloc_irqs_all_locked
msi_domain_alloc_locked
__msi_domain_alloc_locked => fails
msi_domain_free_locked
...
That failure propagates back to pci_msi_setup_msi_irqs() in
msi_capability_init() which accesses the descriptor for unmasking in the
error exit path.
Cure it by copying the descriptor and using the copy for the error exit path
unmask operation.
[ tglx: Massaged change log ]
Security readout for executives and security teams
Plain-English summary
A Linux kernel error path can access memory after it has been freed while configuring PCI Message Signaled Interrupts. The supplied CVSS assessment indicates a local, low-privileged attacker could potentially affect confidentiality, integrity, and availability. The sources do not demonstrate a working exploit or remote attack path.
Executive priority
Treat this as high-priority kernel maintenance, particularly for shared or locally accessible Linux hosts using PCI devices. The supplied evidence does not justify declaring a remote or actively exploited emergency. Expedite vendor-supported updates through established testing and reboot procedures.
Technical view
When MSI-domain interrupt allocation fails, cleanup frees an MSI descriptor. The error path in msi_capability_init then reads that descriptor while unmasking, producing a use-after-free detected by KFENCE. The upstream correction copies the descriptor beforehand and uses the copy during cleanup. CVSS 3.1 rates the issue 7.8.
Likely exposure
Exposure concerns Linux systems running versions identified as affected by the supplied record and reaching PCI MSI initialization when interrupt allocation fails. CVSS classifies access as local with low privileges. Exact distribution package mappings, hardware dependencies, and configuration requirements are not supplied, so organizations must confirm exposure through their Linux vendor.
Exploitation context
The source bundle marks KEV false, and no supplied source reports active exploitation. CVSS assumes local access, low complexity, low privileges, and no user interaction. These are scoring assumptions, not evidence that practical exploitation has been demonstrated.
Researcher notes
KFENCE observed a use-after-free read after MSI allocation failure freed the descriptor later accessed by cleanup. The root cause and correction are well described, but the bundle does not establish practical exploitation, affected configuration breadth, distribution package boundaries, or a CWE classification. The repeated commit identifier and ambiguous version entry warrant vendor-specific verification.
Mitigation direction
Install a vendor-supported kernel release incorporating the applicable upstream correction.
Check distribution security guidance for corrected package versions and required reboot instructions.
Prioritize shared systems where untrusted users have local accounts or execute workloads.
Apply normal kernel compatibility testing before broad production deployment.
Validation and detection
Inventory running kernel versions and compare them with current distribution advisories.
Confirm the installed kernel source or changelog includes the applicable upstream correction.
Reboot updated systems and verify the corrected kernel is running.
Exercise PCI MSI initialization and failure handling in a non-production, instrumented environment.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2024-41096 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.