CRITICAL🇵🇱 Wersja polska

CVE-2026-46316

CVSS 9.3pub. 2026-06-09upd. 2026-07-30

In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry vgic_its_invalidate_cache() walks the per-ITS translation cache with xa_for_each() and drops the cache's reference on each entry with vgic_put_irq(). It puts the iterated pointer, though, rather than the value returned by xa_erase(). The function is called from contexts that do not exclude one another: the ITS command handlers hold its_lock, the GITS_CTLR write path holds cmd_lock, and the path that clears EnableLPIs in a redistributor's GICR_CTLR holds neither. Two or more of them can drain the same cache concurrently, and if each one observes the same entry, erases it and then puts it, the single reference the cache holds on that entry is dropped more than once. The entry can then be freed while an ITE still maps it. xa_erase() is atomic and returns the previous entry, so put only the entry that this context actually removed. The cache reference is then dropped exactly once per entry even when the invalidations run concurrently, and the behavior is unchanged when only one context runs.

🤖 AI Analysis
How it works

The `vgic_its_invalidate_cache()` function iterates over the ITS translation cache using `xa_for_each()` and releases cache references for each entry by calling `vgic_put_irq()`. The bug is that instead of the pointer returned by `xa_erase()` (the actually removed entry), the function releases the reference to the pointer from the iteration. Since this function can be called concurrently by multiple code paths (ITS command handlers, GITS_CTLR write path, EnableLPIs cleanup path in GICR_CTLR), which do not mutually exclude each other, each can observe the same entry, remove it, and release the reference — resulting in multiple releases of a single cache reference. The effect is a situation where an entry can be freed despite still being mapped by an ITE (ITS Table Entry).

Impact

An attacker or malicious code running locally can trigger a use-after-free error in the kernel, potentially enabling privilege escalation, data disclosure, or host system destabilization (denial of service) in a KVM virtualization environment on arm64 architecture.

Mitigation & patch

Apply patches available in stable Linux kernel branches according to references: commits 13031fb6b835, 2bbc395e81bd, 9121f4605ab9, and b7b72e88046 available at git.kernel.org/stable addresses indicated in the vulnerability description.

Who is affected

Linux kernel with KVM arm64 subsystem (vgic-its); specific versions indicated in vendor references (patches available in stable kernel branches at addresses provided in references).

Analysis generated by Claude AI (Anthropic) based on NVD data. Always verify with vendor.
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • Linux Kernel

    OS
    Linux
    7.16.10 – 6.12.93 (excl.)6.13 – 6.18.35 (excl.)6.19 – 7.0.12 (excl.)
🔵
CHECK WITH VENDOR
No clear patch data available. Check vendor references.
CWE
References

Related vulnerabilities

CVE-2025-10585CRITICAL9.8⚠ KEVPL ✓same product

Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty

CVE-2025-34028CRITICAL9.3⚠ KEVPL ✓same product

Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP

CVE-2022-47986CRITICAL9.8⚠ KEVPL ✓same product

RCE przez YAML deserialization w IBM Aspera Faspex

CVE-2022-22954CRITICAL9.8⚠ KEVPL ✓same product

RCE w VMware Workspace ONE Access i Identity Manager poprzez server-side template injection

CVE-2020-4006CRITICAL9.1⚠ KEVPL ✓same product

Command Injection w VMware Workspace One Access i Identity Manager