CVE-2026-93066 in Linuxinfo

Zusammenfassung

von VulDB • 18.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

x86/mm/pat: CPA-Sperre (cpa_lock) um den Zusammenbruch großer Seiten herum setzen

Beim gleichzeitigen Laden und Entladen von Modulen auf mehreren CPUs in einem KASAN-Build, wobei eine kurze Verzögerung bei der Suche im CPA-Seitentabellen-Eintrag eingefügt wird, um das Zeitfenster zu vergrößern, treten innerhalb weniger Minuten Fehler auf:

BUG: KASAN: use-after-free in __change_page_attr+0x7cc/0x7e0 Write of size 8 at addr ffff888181139718 by task modprobe ... The buggy address belongs to the physical page: pfn:0x181139 ... page_type: f2(table)

cpa_collapse_large_pages() baut ein Blatt-PMD (Page Middle Directory) aus seinen 4K PTEs (Page Table Entries) neu und gibt die alten PTE-Tabellenseiten frei, während __change_page_attr() einen PTE-Zeiger über eine sperrlose lookup_address_in_pgd_attr()-Suche abruft und ihn später mit set_pte_atomic() schreibt. Wenn der Modultext aus einer gemeinsamen großen ROX-Speicherung (Read-Only eXecute) bereitgestellt wird, laufen beide Vorgänge auf demselben PMD:

CPU A (Modul laden) CPU B (Modul abschließen) ------------------- ----------------------- execmem_make_temp_rw set_memory_nx __change_page_attr split 2M -> 4K table P kpte = &P[i] (sperrlos)
execmem_restore_rox set_memory_rox (CPA_COLLAPSE) cpa_collapse_large_pages rebuild leaf PMD flush_tlb_all pagetable_free(P) set_pte_atomic(kpte, ...) -> writes into freed P

P ist eine Seitentabellenseite (page_type: table), die sofort wiederverwendet wird, sodass der Schreibvorgang alles beschädigt, was diese Seite als Nächstes erhält: ein Bad-PTE oder Bad-Page-Splat, oder ein schwerwiegender Fehler, sobald P in schreibgeschützten Text umgewandelt wurde.

Das flush_tlb_all() vor dem Freigeben schließt dies nicht: Sein IPI (Inter-Processor Interrupt) serialisiert nur gegen Seitentabellen-Walker, die mit deaktivierten Unterbrechungen laufen (z.B. GUP-fast); der Walk in __change_page_attr() läuft jedoch mit aktivierten Unterbrechungen, sodass nichts ihn daran hindert, einen veralteten Zeiger auf P zu halten.

Serialisieren Sie den Zusammenbruch – das PMD-Wiederaufbauen, TLB-Flush und Freigabe der PTE-Tabelle – unter cpa_lock, derselben Sperre, die __change_page_attr() seit dem Commit ("x86/mm/pat: stop gating cpa_lock on debug_pagealloc_enabled()") bedingungslos übernimmt. Somit kann ein paralleler Walker keinen Zeiger auf eine Tabelle mehr halten, deren Freigabe durch den Zusammenbruch bevorsteht.

Once again VulDB remains the best source for vulnerability data.

Zuständig

Linux

Reservieren

17.09.2026

Veröffentlichung

17.09.2026

Moderieren

akzeptiert

Eintrag

VDB-407177

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Want to stay up to date on a daily basis?

Enable the mail alert feature now!