Indietro

ⓘ Ping of Death




Ping of Death
                                     

ⓘ Ping of Death

Il Ping of Death è un tipo di attacco Denial of Service che consiste nellinvio di un pacchetto IP malformato ad un computer bersaglio per causare buffer overflow con conseguente blocco del servizio o, nei casi più gravi, crash del sistema.

Lattacco sfruttava una vulnerabilità presente nella gestione del protocollo IP su computer Windows, Unix, Mac e in altri dispositivi collegabili in rete come router e stampanti.

Tale vulnerabilità è stata risolta nella maggior parte dei sistemi tra il 1997 e il 1998.

                                     

1. Informazioni dettagliate

Lattacco consisteva nellutilizzare messaggi IP frammentati in modo maligno, veicolati tipicamente sotto forma di pacchetti di ping interrogazione tra computer per verificare la raggiungibilità reciproca, da cui il nome, anche se il meccanismo di attacco non dipende dallo specifico protocollo utilizzato.

Generalmente un computer non è in grado di gestire un pacchetto di dimensioni superiori a quella prevista dallo standard RFC 791 che prevede lallocazione di 16 bit nellheader per indicare la lunghezza massima del pacchetto, pari quindi a 2 16 − 1 {\displaystyle 2^{16}-1} = 65535 byte. Contenuti informativi di dimensioni superiori vengono frazionati e trasmessi su più pacchetti IP.

A sua volta, il pacchetto IP viene trasmesso attraverso il livello datalink, che prevede una dimensione massima dei frame trasmessi a questo livello. Nel caso del datalink in tecnologia Ethernet tale dimensione massima è pari a 1518 byte. Anche in questo caso, contenuti informativi di dimensioni superiori vengono scomposti in frammenti compatibili con la dimensione massima trasmissibile, per venire poi ricomposti dalla macchina ricevente per ricostruire il pacchetto originale con un processo ricorsivo.

Per consentire la ricostruzione corretta, ogni frammento di un messaggio IP deve contenere linformazione relativa alla porzione di pacchetto originale trasportata. Questa informazione è contenuta nel campo di offset del frammento, presente nellintestazione IP. La dimensione di questo campo è di 13 bit, ciò consente di stabilire che in caso di trasmissione di un pacchetto di dimensione massima, lultimo pacchetto frammentato può presentare un offset massimo di 2 13 − 1 {\displaystyle 2^{13}-1} = 8191 Loffset nel header ip è espresso in unità di 8 byte, quindi quello massimo è pari a 8191*8=65528 byte, a questo offset può corrispondere un frammento utile di lunghezza massima pari a 65535-65528=7 byte.

Il pacchetto malintenzionato viene costruito generando proprio un frammento IP con valore di offset massimo ma con una quantità di dati associata pari o superiore ad otto byte: questo, in fase di ricostruzione del pacchetto IP, porta ad ottenere una trama di dimensione superiore a quella consentita dal livello di rete ossia superiore a 65535 byte. Ciò potrebbe causare il sovraccarico del buffer utilizzato dal nodo ricevente per contenere il pacchetto buffer overflow, causando il blocco del servizio. La vulnerabilità è legata quindi al meccanismo di riassemblaggio dei frammenti IP maliziosi, che potrebbero in teoria contenere qualunque tipo di protocollo e non solo messaggi di ping.

La soluzione al problema consiste nellaggiunta di controlli durante il processo di riassemblaggio. Il controllo di ogni singolo frammento in entrata assicura che la somma dei campi offset e lunghezza totale non superi 65535 byte. Se la somma risulta più grande, il pacchetto viene riconosciuto come illegale e viene scartato.

Nei computer nei quali tale vulnerabilità non è stata risolta, questo controllo viene effettuato da un firewall.

Una soluzione alternativa al problema consiste nellestendere il buffer per il riassemblaggio del pacchetto, in modo tale che la ricezione di un pacchetto malizioso o malformato di dimensione superiore a 65535 byte non provochi loverflow del buffer ed evitando quindi il blocco del servizio. Questa soluzione non viola lo standard, in quanto pacchetti di dimensione superiore al massimo consentito, se ricevuti, vengono comunque scartati.