È stata soprannominata SACK PANIC ed è la più grave di tre vulnerabilità che il ricercatore Jonathan Looney del Netflix Information Security ha individuato nel kernel dei sistemi operativi Linux e FreeBSD.
La vulnerabilità, identificata come CVE-2019-11477, risiede nel sistema di gestione del protocollo di rete TCP (Transfer Control Protocol) e potrebbe consentire ad un attaccante remoto di sferrare un attacco di tipo DoS (Denial of Service) verso molti server aziendali e sistemi cloud che utilizzano questi due sistemi operativi. Il risultato potrebbe essere un errore di tipo kernel panic con conseguente blocco e riavvio del sistema vulnerabile.
Oltre a questa vulnerabilità, il ricercatore di sicurezza ne ha individuate altre due: CVE-2019-11478 e CVE-2019-11479, valutate con una gravità moderata rispetto alla vulnerabilità SACK PANIC.
È importante notare che le vulnerabilità sono state individuate nel kernel Linux e FreeBSD e quindi potrebbero potenzialmente interessare tutte le versioni dei sistemi operativi, comprese anche le distribuzioni derivate come quella utilizzata da Amazon sul suo Amazon Web Services (AWS).
Indice degli argomenti
Vulnerabilità nel kernel Linux e FreeBSD: i dettagli
Il nome SACK PANIC della vulnerabilità critica individuata nel kernel Linux e FreeBSD è stato scelto a causa di alcune lacune nella gestione della memoria nella funzionalità Selective Acknowledgement (SACK) dello stack TCP.
Sfruttandole, un attaccante remoto potrebbe causare gravi rallentamenti, disservizi e crash di sistema semplicemente inviando una particolare sequenza di pacchetti TCP creati ad hoc con specifici MSS (Maximum Segment Size, cioè la massima dimensione del corpo dati in un segmento TCP) verso la macchina bersaglio.
Normalmente, il protocollo TCP prevede un sistema di controllo che serve a verificare l’integrità delle comunicazioni tra due macchine connesse tra loro via Internet. Qualora uno o più pacchetti di dati non dovessero raggiungere il destinatario della comunicazione, i frammenti mancanti verrebbero automaticamente ritrasmessi a partire dal primo segmento mancante.
La funzionalità SACK integrata nello stack TCP serve proprio ad individuare i pacchetti persi durante la trasmissione dati in modo da garantire un nuovo invio solo di quelli effettivamente mancanti. È evidente come un funzionamento del genere garantisce una maggiore efficienza e velocità delle comunicazioni via Internet basate sul protocollo TCP.
Nei sistemi Linux, le code dei frammenti di dati trasmessi via TCP vengono gestite dal Socket Buffer (SKB). Jonathan Looney ha quindi scoperto che un eventuale attaccante remoto potrebbe mandare in crash un server o un servizio cloud semplicemente “sovraccaricando” questo particolare buffer di memoria con richieste di connessione TCP create ad hoc, trasmettendo una sequenza particolare di pacchetti dati in cui le dimensioni dei segmenti MSS siano impostate al valore minimo di 48 byte.
In poco tempo il Socket Buffer verrebbe così saturato causandone il blocco e provocando, a cascata, il crash dello stack TCP e infine dell’intero sistema operativo.
Come correggere la vulnerabilità SACK PANIC
La vulnerabilità SACK PANIC ha un impatto sulle versioni del kernel Linux dalla 2.6.29 in poi. Le maggiori distribuzioni hanno già rilasciato un bollettino di sicurezza in merito:
Nel bollettino di sicurezza del Netflix Information Security si consiglia inoltre agli amministratori di sistema di installare il prima possibile l’aggiornamento PATCH_net_1_4.patch. Per le versioni del Kernel dalla 4.14 in poi è inoltre necessario installare anche l’aggiornamento PATCH_net_1a.patch.
Una soluzione per mitigare il problema potrebbe anche essere quella di disabilitare completamente l’elaborazione del SACK sul sistema (impostando la variabile /proc/sys/net/ipv4/tcp_sack a 0) o bloccare le connessioni con un valore MSS basso. A tale scopo, è possibile usare i filtri forniti dal Netflix Information Security.
Considerando il potenziale impatto di eventuali attacchi in cui può essere sfruttata la vulnerabilità SACK PANIC è dunque consigliabile pianificare l’applicazione delle patch disponibili il prima possibile, così come è monitorare la disponibilità di aggiornamenti su tecnologie e soluzioni Linux-based di terze parti eventualmente utilizzate in ambito aziendale.