Già nota dagli ultimi mesi del 2015, cui è seguita una patch silente ma immediata, la vulnerabilità CVE-2016-10229 di tipo arbitrary code execution , che riguarda le versioni del kernel Linux comprese tra la 2.6 e la 4.5, è stata catalogata nel Common Vulnerability Scoring System v3 con un punteggio pari a 9.8 , ma la patch è stata inclusa solo di recente nelle maggiori distribuzioni GNU/Linux.
Il problema deriva dalla gestione del flag MSG_PEEK nella funzione recvmsg relativa al protocollo UDP , il cui ruolo è quello di permettere il prefetch di un messaggio in arrivo su un socket UDP senza consumare il buffer di lettura.
In particolare, quando l’utente fornisce una quantità di dati inferiore alla dimensione del socket buffer ( SKB ), il checksum del pacchetto UDP viene calcolato due volte; la seconda volta utilizzando una funzione insicura ( skb_copy_and_csum_datagram_iovec ) che potrebbe causare l’esecuzione di codice arbitrario.
Questa funzione, nei kernel del ramo mainline, è stata già sostituita da tempo con l’equivalente skb_copy_and_csum_datagram_msg , in grado di gestire i buffer corti in modo sicuro, risolvendo parzialmente il problema.
L’autore della patch (poche e semplici righe di codice) è Eric Dumazet (Google), che minimizza l’entità della vulnerabilità sottolineando come i kernel non patchati con il commit 89c22d8c3b27 (“net: Fix skb csum races when peeking”) ne siano esenti.
È il caso ad esempio dei kernel Red Hat ; al contrario, i manutentori di altre distribuzioni come Ubuntu e Debian hanno distribuito una versione sicura del kernel nello scorso mese di febbraio.
Sebbene i kernel messi in sicurezza siano stati rilasciati ormai da tempo, l’impatto della vulnerabilità non è da sottovalutare . Bisogna considerare che il flag MSG_PEEK è molto utilizzato sia in software noti che in librerie comunemente adottate dagli sviluppatori, come riscontrabile da ricerche su Github o su SearchCode .
È quindi raccomandabile usare una versione aggiornata del kernel, anche nell’ottica di contrastare molte altre vulnerabilità recentemente scoperte .
Una riflessione particolare va fatta nei confronti dei dispositivi mobile Android, destinati a rimanere ancora a lungo vulnerabili a causa del modello di erogazione degli aggiornamenti del sistema operativo di casa Google. Il 5 Aprile il team Android ha rilasciato un aggiornamento contenente, tra le altre, la soluzione per il bug esposto. Tuttavia, la distribuzione degli aggiornamenti è in carico ai principali produttori mobile: Samsung e LG hanno già risposto alla chiamata da parte di Mountain View con un aggiornamento di sicurezza; sarà quindi necessario valutare quanti e quali saranno effettivamente i dispositivi coinvolti in mano agli utenti.
Inoltre, la patch è stata applicata al kernel di Lineage OS , da cui derivano molte custom rom .
Infine, trattandosi di vulnerabilità del kernel Linux, è inevitabile non menzionare l’impatto delle stesse sui dispositivi embedded (ad esempio apparati di rete domestici come router e device IoT), per i quali l’onere dell’aggiornamento è in capo ai proprietari, spesso utenti ignari del livello di rischio cui si è esposti sulla rete Internet.
Patrizio Tufarolo