CVE-2025-68359 in Linuxinformazioni

Riassunto

di VulDB • 30/06/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

btrfs: correzione del double free (liberazione doppia) di un record qgroup dopo il fallimento nell’aggiunta della testata delayed ref head

Nella versione precedente del codice era possibile incorrere in uno scenario di kfree() doppio quando si chiamava add_delayed_ref_head(). Ciò poteva accadere se il record risultava già esistente nella chiamata a btrfs_qgroup_trace_extent_nolock(), ma successivamente si verificava un errore durante l’esecuzione di add_delayed_ref_head(). In questo caso, poiché add_delayed_ref_head() restituiva un codice di errore, il chiamante procedeva alla liberazione del record. Poiché add_delayed_ref_head() non impostava a NULL tale puntatore già liberato con kfree(), la successiva chiamata a kfree() avrebbe agito su un oggetto 'record' non-NULL che puntava a una memoria precedentemente liberata dal callee (funzione chiamata).

Il problema deriva dal fatto che la responsabilità di eseguire il kfree dell’oggetto ricade contemporaneamente sia sul chiamante che sul callee. La correzione consiste quindi nel trasferire la proprietà (ownership) dell’oggetto 'qrecord' fuori dalla funzione add_delayed_ref_head(). In altre parole, non si tenterà mai di eseguire kfree() sull’oggetto fornito all’interno di questa funzione; ci si aspetta invece che il chiamante gestisca autonomamente l’oggetto 'qrecord'. L’unica eccezione in cui l’oggetto 'qrecord' non può essere liberato con kfree è quando viene inserito nella logica di tracciamento, per la quale esiste già un booleano 'qrecord_inserted_ret' per tenere conto di tale condizione. Di conseguenza, il chiamante deve eseguire il kfree dell’oggetto solo se add_delayed_ref_head() segnala che non lo ha inserito nella logica di tracciamento.

Come effetto collaterale delle modifiche sopra descritte, è necessario garantire che 'qrecord_inserted_ret' sia correttamente inizializzato all’inizio della funzione e non alla fine, venendo impostato successivamente solo in caso di effettivo inserimento. In questo modo si evita che 'qrecord_inserted_ret' assuma un valore non valido in caso di uscita anticipata dalla funzione.

La documentazione relativa a add_delayed_ref_head() è stata inoltre aggiornata per riflettere con precisione la proprietà dell’oggetto 'qrecord'.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsabile

Linux

Prenotare

16/12/2025

Divulgazione

24/12/2025

Moderazione

accettato

CPE

pronto

EPSS

0.00167

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!