Tre vulnerabilità rilevate negli stack TCP di Linux che portano alla negazione del servizio da remoto

crash di Linux

Recentemente ha pubblicato la notizia sull'identificazione di diverse vulnerabilità critiche negli stack TCP di Linux e quello di FreeBSD consente a un utente malintenzionato di avviare in remoto un errore del kernel o causare un consumo eccessivo di risorse elaborando pacchetti TCP appositamente predisposti (pacchetto della morte).

I problemi sono causati da errori negli handle della dimensione massima del blocco dati nel pacchetto TCP (MSS, Maximum segment size) e il meccanismo di riconoscimento selettivo della connessione (SACK, Selective TCP recognition).

Cos'è un riconoscimento selettivo?

Riconoscimento TCP selettivo (SACK) è un meccanismo in cui il destinatario dei dati può informare il mittente su tutti i segmenti che sono stati accettati con successo.

questo Consente al mittente di ritrasmettere i segmenti di flusso mancanti dal suo set "ben noto". Quando TCP SACK è disabilitato, è necessario un insieme molto più ampio di ritrasmissioni per ritrasmettere un'intera sequenza.

Nel kernel Linux, i problemi vengono risolti nelle versioni 4.4.182, 4.9.182, 4.14.127, 4.19.52 e 5.1.11. La soluzione per FreeBSD è disponibile come patch.

Gli aggiornamenti del pacchetto del kernel vengono rilasciati per Debian, RHEL, SUSE / openSUSE, ALT, Ubuntu, Fedora e Arch Linux.

CVE-2019-11477 (Panico SACCO)

Il problema si manifesta nei kernel Linux a partire dalla 2.6.29 e ti permette di mandare in crash il kernel (panico) durante l'invio di una serie di pacchetti SACK a causa di un integer overflow nel controller.

Per un attacco, è sufficiente impostare il valore MSS su 48 byte per una connessione TCP e inviare una sequenza di pacchetti SACK disposti in un certo modo.

L'essenza del problema è che la struttura tcp_skb_cb (Socket Buffer) è progettato per memorizzare 17 frammenti ("Definisci MAX_SKB_FRAGS (65536 / PAGE_SIZE + 1) => 17").

Durante il processo di invio di un pacchetto, viene inserito nella coda di invio e tcp_skb_cb memorizza i dettagli sul pacchetto, come il numero di sequenza, i flag, nonché i campi "tcp_gso_segs" e "tcp_gso_size", che vengono utilizzati per inviare Informazioni sulla segmentazione al controller (TSO, Download segmento segmento) per elaborare i segmenti sul lato della scheda di rete.

I blocchi vengono salvati quando si verifica la perdita di pacchetti o la necessità di una ritrasmissione selettiva dei pacchetti, se SACK è abilitato e TSO è supportato dal driver.

Come soluzione alternativa per la protezione, è possibile disabilitare l'elaborazione SACK o bloccare le connessioni con un MSS piccolo (funziona solo quando si imposta sysctl net.ipv4.tcp_mtu_probing su 0 e si potrebbe interrompere il normale) con MSS basso).

CVE-2019-11478 (Lentezza SACCO)

Questo fallimento provoca un'interruzione del meccanismo SACK (quando si utilizza il kernel Linux in 4.15) o un consumo eccessivo di risorse.

Il problema si manifesta quando vengono elaborati pacchetti SACK appositamente predisposti che possono essere utilizzati per frammentare la coda di ritrasmissione (ritrasmissione TCP). Le soluzioni per la protezione sono simili alle vulnerabilità precedenti

CVE-2019-5599 (Lentezza SACCO)

Permette di provocare la frammentazione della mappa dei pacchetti inviati durante l'elaborazione di una sequenza SACK all'interno di una singola connessione TCP e causare l'esecuzione di un'operazione di ricerca di elenchi a elevato utilizzo di risorse.

Il problema si manifesta in FreeBSD 12 con il meccanismo di rilevamento della perdita di pacchetti RACK. Come soluzione alternativa puoi disabilitare il modulo RACK (non viene caricato di default, è disabilitato specificando sysctl net.inet.tcp.functions_default = freebsd)

CVE-2019-11479

Il difetto consente a un aggressore di fare in modo che il kernel Linux divida le risposte in più segmenti TCP, ognuno dei quali include solo 8 byte di dati, il che può comportare un aumento significativo del traffico, un aumento del carico della CPU e un canale di comunicazione ostruito.

Inoltre, consuma risorse aggiuntive (potenza del processore e scheda di rete).

Questo attacco richiede sforzi continui da parte dell'attaccante e gli attacchi termineranno poco dopo che l'attaccante smetterà di inviare traffico.

Mentre questo attacco è in corso, il sistema funzionerà a capacità ridotta, causando un Denial of Service per alcuni utenti.

Un utente remoto può attivare questo problema impostando la dimensione massima del segmento (MSS) di una connessione TCP al suo limite minimo (48 byte) e invio di una sequenza di pacchetti SACK appositamente predisposti.

Come soluzione alternativa, si consiglia di bloccare le connessioni con MSS basso.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.