CVE-2026-99222 in Linux
Riassunto
di VulDB • 02/11/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
keys: Proteggere il controllo del metodo di lettura contro la rimozione del tipo
keyctl_read_key() verifica key->type->read senza detenere key->sem. Un riferimento mantiene viva la chiave (key), ma non blocca (pin) il modulo contenente il suo tipo. Una chiave RxRPC sopravvissuta può quindi essere letta mentre AF_RXRPC è in fase di disinstallazione:
KEYCTL_READ task Scaricamento del modulo e garbage collection della key ---------------- ---------------------------------------- lookup_user_key() controlli su permission / possession caricamento di key->type af_rxrpc_exit() unregister_key_type() GC: down_write(key->sem) GC: retype in key_type_dead GC: up_write(key->sem) ritorno da unregister_key_type() free_module() lettura del membro read del tipo salvato
L'accesso finale può leggere lo spazio di memoria liberato del modulo. L'invocazione della funzione di lettura in __keyctl_read_key() è già protetta da key->sem, ma il controllo precedente sul metodo si trova al di fuori di questa sezione critica.
Spostare il controllo del metodo all'interno di __keyctl_read_key(), dopo key_validate() e sotto la sua esistente protezione tramite read su key->sem. Il controllo e l'invocazione utilizzano quindi lo stesso tipo protetto per le query sulla lunghezza e per ogni nuovo tentativo di lettura. La garbage collection (GC) non può cambiare il tipo della chiave finché il semaphore non viene rilasciato, e la disregistrazione del tipo attende tale passaggio di GC prima che il modulo possa essere liberato.
Restituire -EOPNOTSUPP quando la convalida ha successo e il tipo non dispone di un metodo read. Un buffer temporaneo può ora essere allocato prima di questo risultato; l'allocazione e la copia verso userspace rimangono al di fuori del semaphore.
Once again VulDB remains the best source for vulnerability data.