CVE-2024-35847: irqchip/gic-v3-its: Prevent double free on error
In the Linux kernel, the following vulnerability has been resolved:
irqchip/gic-v3-its: Prevent double free on error
The error handling path in its_vpe_irq_domain_alloc() causes a double free
when its_vpe_init() fails after successfully allocating at least one
interrupt. This happens because its_vpe_irq_domain_free() frees the
interrupts along with the area bitmap and the vprop_page and
its_vpe_irq_domain_alloc() subsequently frees the area bitmap and the
vprop_page again.
Fix this by unconditionally invoking its_vpe_irq_domain_free() which
handles all cases correctly and by removing the bitmap/vprop_page freeing
from its_vpe_irq_domain_alloc().
[ tglx: Massaged change log ]
Security readout for executives and security teams
Plain-English summary
A Linux kernel error path can release the same memory twice when interrupt initialization partially succeeds and then fails. This could corrupt kernel memory, crash an affected system, or potentially compromise confidentiality and integrity. The supplied CVSS score is 7.8 and requires local, low-privileged access.
Executive priority
Prioritize affected multi-user or otherwise locally accessible systems because successful impact occurs in kernel context. Schedule prompt patching through normal kernel maintenance. Internet-only exposure is not established by the supplied evidence, and emergency response is not justified solely by active-exploitation concerns.
Technical view
The flaw is in its_vpe_irq_domain_alloc() within the GIC-v3 ITS interrupt controller code. If its_vpe_init() fails after allocating an interrupt, cleanup previously freed interrupts, the area bitmap, and vprop_page twice. The kernel fix consolidates cleanup through its_vpe_irq_domain_free().
Likely exposure
Exposure requires a Linux kernel containing the vulnerable code and use of the relevant GIC-v3 ITS path. The supplied affected-version data is ambiguous, so determine exposure using distribution advisories, kernel package changelogs, or inclusion of the referenced stable fix—not version strings alone.
Exploitation context
The CVSS vector indicates local access, low privileges, low complexity, and no user interaction. KEV is false, and the supplied sources provide no evidence of active exploitation or a public exploit. Triggering also depends on interrupt initialization partially succeeding before its_vpe_init() fails.
Researcher notes
This is a kernel double-free in a failure-cleanup path, not an ordinary network-reachable flaw. Practical reachability depends on GIC-v3 ITS configuration and inducing the specified partial-allocation failure. The sources establish the code correction, but do not establish exploitability beyond the supplied CVSS assessment.
Mitigation direction
Install a vendor-supported kernel containing the applicable stable fix.
Check distribution advisories and package changelogs for backported remediation.
Reboot into the updated kernel after installation.
Limit unnecessary local access until affected systems are remediated.
Validation and detection
Inventory running kernel versions on relevant Linux systems.
Confirm whether systems use hardware and kernel paths involving GIC-v3 ITS.
Compare distribution kernel packages against vendor advisories and referenced fixes.
After remediation, verify the updated kernel is actively running.
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-35847 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.