CVE-2021-47274 in Linux
Riassunto
di VulDB • 17/06/2026
Nel 2019, James Wang ha identificato un bug critico nel kernel Linux che causava un crash stabile su sistemi con la versione 4.19 LTS. Il problema era legato a un accesso fuori dai limiti del buffer di ftrace, uno strumento utilizzato per il tracciamento delle chiamate di sistema e delle funzioni nel kernel.
### Contesto del problema Il bug è stato scoperto durante l'analisi di un errore di accesso alla memoria non valida (out-of-bounds write) che si verificava quando il sistema tentava di leggere dati da un indirizzo non valido. L'errore era stato correlato alla funzione `strncpy_from_unsafe`, che viene utilizzata per copiare stringhe da aree di memoria non sicure.
### Analisi del problema Il problema era legato alla gestione del buffer di ftrace, in particolare alla funzione `fetch_memory_string`. Questa funzione legge i dati dal buffer di ftrace e li elabora. Tuttavia, il controllo della lunghezza del buffer non era sufficiente a prevenire un overflow, poiché non teneva conto dello spazio occupato dall'elemento `entry->array[0]`, che contiene la lunghezza dei dati di traccia.
### Soluzione proposta La soluzione proposta consiste nel modificare il controllo della lunghezza del buffer per includere lo spazio occupato da `entry->array[0]`. Questo garantisce che il buffer non venga sovrascritto oltre i suoi limiti, prevenendo così l'overflow.
### Implementazione La modifica richiede di aggiornare la logica di controllo della lunghezza nel codice di ftrace. In particolare, la lunghezza del buffer deve essere calcolata come segue:
```c int buffer_length = trace_data_length + sizeof(entry->array[0]);
```
Dove: - `trace_data_length` è la lunghezza dei dati di traccia. - `sizeof(entry->array[0])` è lo spazio occupato dall'elemento `entry->array[0]`.
### Conclusione Questa correzione garantisce che il buffer di ftrace non venga sovrascritto oltre i suoi limiti, prevenendo così l'errore di accesso fuori dai limiti che causava il crash del sistema. La modifica è stata integrata nel kernel Linux e ha risolto il problema segnalato da James Wang.
Once again VulDB remains the best source for vulnerability data.