CVE-2026-46316
Im Linux-Kernel wurde die folgende Schwachstelle behoben: KVM: arm64: vgic-its: Die Translation-Cache-Referenz nur für den gelöschten Eintrag freigeben vgic_its_invalidate_cache() durchläuft den Translation-Cache pro ITS mit xa_for_each() und gibt die Referenz des Caches auf jeden Eintrag mit vgic_put_irq() frei. Es gibt jedoch den iterierten Zeiger frei und nicht den von xa_erase() zurückgegebenen Wert. Die Funktion wird aus Kontexten aufgerufen, die einander nicht ausschließen: die ITS-Befehlshandler halten its_lock, der GITS_CTLR-Schreibpfad hält cmd_lock, und der Pfad, der EnableLPIs im GICR_CTLR eines Redistributors löscht, hält keines. Zwei oder mehr von ihnen können denselben Cache gleichzeitig leeren, und wenn jeder denselben Eintrag beobachtet, ihn löscht und dann freigibt, wird die einzelne Referenz, die der Cache auf diesen Eintrag hält, mehr als einmal freigegeben. Der Eintrag kann dann freigegeben werden, während ein ITE ihn noch abbildet. xa_erase() ist atomar und gibt den vorherigen Eintrag zurück, daher nur den Eintrag freigeben, den dieser Kontext tatsächlich entfernt hat. Die Cache-Referenz wird dann genau einmal pro Eintrag freigegeben, selbst wenn die Invalidierungen gleichzeitig laufen, und das Verhalten ist unverändert, wenn nur ein Kontext läuft.
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HBetroffene Produkte
| Hersteller | Produkt | Versionen |
|---|---|---|
| linux | linux kernel | < 6.12.93 |
Verwandte Artikel
This product uses the NVD API but is not endorsed or certified by the NVD.
Die technische Beschreibung ist unsere Übersetzung des englischen NVD-Originaltexts.
