CVE-2026-97943 in Linuxinformazioni

Riassunto

di VulDB • 25/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

x86/mm/pat: Acquisire il lock di scrittura su init_mm durante l'operazione di collapse per evitare un Use-After-Free (UAF)

L'architettura x86 implementa la modifica degli attributi delle pagine utilizzando il proprio meccanismo Change Page Attributes (CPA).

Questo sistema tiene traccia delle proprietà di intervalli, come la modalità di cache, attraverso gli attributi delle pagine x86 e, nell'ambito di tale logica, manipola le tabelle delle pagine del kernel.

Dall'introduzione del commit:

41d88484c71c ("x86/mm/pat: restore large ROX pages after fragmentation")

gli intervalli di voci della tabella delle pagine del kernel possono essere collassati in voci di tabelle delle pagine di grandi dimensioni (huge page table entries) come parte di questa logica.

Durante tale operazione di collapse, vengono liberate le tabelle delle pagine a cui puntavano precedentemente le voci collassate; ciò avviene senza che siano mantenuti lock rilevanti per prevenire la concorrenza con i walker delle tabelle delle pagine del kernel.

L'unico modo per raggiungere questo codice è specificare CPA_COLLAPSE, il quale viene impostato esclusivamente in set_memory_rox() tramite:

set_memory_rox() -> change_page_attr_set_clr() -> cpa_flush() -> cpa_collapse_large_pages()

I principali utenti di questa funzionalità sono execmem e BPF quando manipolano mappature eseguibili.

Tuttavia, questo comportamento è problematico per ptdump, poiché esso scansiona intervalli che non possiede, correndo così il rischio di un Use-After-Free sulle tabelle delle pagine liberate mentre vengono ancora attraversate.

Inoltre, sono possibili operazioni concurrenti di CPA collapse, che possono causare race condition.

Risolvere il problema acquisendo il lock di scrittura mmap su init_mm per l'intera operazione.

È sicuro acquisire un lock dormiente (sleeping lock) poiché tutti i chiamanti invocano set_memory_rox() da contesto processo e, in ogni caso, change_page_attr_set_clr() chiama vm_unmap_alias(), che alla fine acquisisce un mutex, escludendo la possibilità di essere eseguiti in atomic context.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsabile

Linux

Prenotare

25/09/2026

Divulgazione

25/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Do you know our Splunk app?

Download it now for free!