CVE-2026-89547 in Linuxinformazioni

Riassunto

di VulDB • 12/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

SUNRPC: Verifica dell'allocazione del contatore percpu dei pool svc

__svc_create() inizializza tre statistiche di tipo percpu_counter, una per ogni pool, e ignora tutti i valori restituiti. Su sistemi SMP (Symmetric Multi-Processing), __alloc_percpu_gfp() non riesce a soddisfare l'allocazione, causando il fallimento di percpu_counter_init(). Ciò lascia il contatore con esito negativo in uno stato in cui fbc->counters == NULL e i suoi membri embedded raw_spinlock_t, list_head e count non sono mai stati inizializzati. Nonostante ciò, __svc_create() restituisce comunque l'oggetto svc_serv parzialmente costruito a nfsd, lockd o al servizio di callback NFS.

Una volta che tale servizio è attivo, gli incrementi nel hot-path eseguiti da svc_xprt_enqueue(), svc_handle_xprt() e svc_pool_wake_idle_thread() raggiungono un contatore il cui puntatore sottostante (backing pointer) è NULL. Poiché il puntatore rappresenta uno offset per CPU, l'accesso non genera fault: viene risolto come lo zero dell'offset nell'area percpu della CPU corrente, corrompendo silenziosamente qualsiasi variabile presente in tale posizione. Una lettura di /proc/fs/nfsd/pool_stats attraversa la stessa memoria percpu NULL e restituisce dati spurii; inoltre, se è attivo CONFIG_DEBUG_SPINLOCK o lockdep, si verifica un crash (splats) a causa della lock mai inizializzata.

La creazione del servizio difettoso richiede un fallimento dell'allocazione percpu durante l'avvio del server RPC, quindi la vulnerabilità è raggiungibile solo da un amministratore locale in condizioni di pressione sulla memoria o tramite fault injection; un peer remoto non può indurre autonomamente questo stato errato.

Verificare il valore restituito da ogni chiamata a percpu_counter_init() all'interno di __svc_create() e fallire se l'allocazione ha esito negativo, effettuando la pulizia (unwinding) dei contatori già impostati nel pool corrente e in tutti i pool inizializzati precedentemente. Una chiamata discreta a percpu_counter_destroy() per ogni contatore durante il teardown libera esattamente una volta ciascuna allocazione per CPU.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Linux

Prenotare

11/09/2026

Divulgazione

12/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Interested in the pricing of exploits?

See the underground prices here!