Come viene protetto il TLS dal campo della lunghezza dell'intestazione?

3

So che questa domanda sembra molto sciocca, ma mi ha infastidito per un po 'e non riesco a trovare una risposta da solo. Quindi, qui va ..

I pacchetti nel protocollo TLS sono costituiti da un'intestazione di 5 byte seguita da dati crittografati una volta che l'handshake è terminato. L'intestazione a 5 byte viene sempre trasmessa in chiaro e contiene anche un campo di lunghezza di 2 byte.

Ora, l'attaccante MiTM può solo modificare il campo della lunghezza da solo nell'intestazione, così che la parte ricevente finisce per aspettare una grande quantità di dati, anche dopo aver ricevuto la quantità effettiva di byte originariamente inviati dal lato del pari. Ad esempio: diciamo che il peer side ha inviato un pacchetto di 20 byte e l'attaccante MiTM modifica solo il campo della lunghezza dell'header per renderlo 65535 byte. Ora, se nessun altro dato viene inviato dal peer, il lato ricevente aspetterà indefinitamente per ricevere i 65515 byte (65535-20) che non sono mai stati inviati in primo luogo.

Il TLS include l'intestazione nel calcolo MAC, quindi qualsiasi manomissione dell'intestazione causerà un errore e una chiusura effettiva della connessione. Ma come si risolve il problema del blocco su socket per ricevere i dati?

Il ricevitore può evitarlo usando un socket non bloccante con select (di nuovo select dovrebbe avere un timeout) o usando timeout con socket. Ma, che ne dici del caso di bloccare le prese? Esiste comunque un modo per evitare il blocco del lato ricevente sulla presa?

    
posta Jay 01.05.2013 - 16:15
fonte

1 risposta

3

Un utente malintenzionato che può modificare le intestazioni dei record TLS può effettivamente bloccare i pacchetti del tutto, facendo in modo che il ricevitore attenda "indefinitamente". Non c'è nulla che il protocollo TLS possa fare per impedirlo.

Le implementazioni di TLS possono utilizzare strategie di time-out, cioè se nessuna attività è stata ricevuta dal peer per un certo periodo di tempo (ad esempio 15 secondi), la connessione può essere eliminata automaticamente. Questo è comunque necessario per gestire il caso di crash dei client: quando una macchina si blocca, cessa di inviare pacchetti, ma non dirà che non può più inviare pacchetti, dato che si è bloccato.

È una proprietà generica di TLS. TLS non tenta di recuperare da un errore di trasporto; cerca solo di alterare in modo affidabile le modifiche. Gli aggressori possono sempre tagliare il filo o posticipare il traffico per un numero arbitrario di volte. Del resto, i record TLS sono considerati "trasporti" proprio come la connessione TCP sottostante. Il MAC utilizzato nei record è dove si verifica il rilevamento e copre solo i payload .

    
risposta data 01.05.2013 - 16:34
fonte

Leggi altre domande sui tag