The English encyclopedia Allmultimedia.org will be launched in two phases.
The final launch of the Allmultimedia.org will take place on February 24, 2026
(shortly after the 2026 Winter Olympics).

Ping of death

Z Multimediaexpo.cz

Ping of death.png

Ping of Death je v počítačové síti varianta útoku typu Denial of Service využívající chyby v implementaci protokolu TCP/IP.

Program ping se běžně používá pro ověření, zda vzdálený server pracuje. Mnoho počítačových systémů neumělo zpracovat ping vetší než 65535 bajtů, což je maximální velikost paketu v protokolu IP. Tento abnormálně velký paket pak útočník pošle do určité sítě, kde může způsobit chyby (obvykle tzv. přetečení zásobníku) vedoucí k selhání systémů, které nejsou proti takovým chybným paketům odolné.

Tato chyba byla relativně lehce zneužitelná. Poslat ping o nedovolené velikosti standardně není možné. Pokud je však paket fragmentovaný, lze poslat i vetší než povolenou velikost. Jakmile ho cílový počítač defragmentuje, může dojít ke zmíněnému přetečení zásobníku a pádu systému.

Tato chyba postihla mnoho systémů včetně Unixu, Linuxu, Macu, Windows, ale také tiskárny a routery (směrovače). V letech 19971998 byla však drtivá většina systémů opravena, takže se dnes jedná spíše o historickou chybu.

Časem se však rozšířil další druh útoku, tzv. ping flood. Ve zkratce jde o to, že se cílová linka zahltí ping pakety. Ve snaze odpovědět na ping dojde i k zahlcení odchozí komunikace cílové linky.

Technické vysvětlení

RFC 791 definuje, že maximální velikost IP paketu je 65535 bajtů. Limit vychází z toho, že na popis velikosti paketu je určeno číslo o šířce 16 bitů (216 -1).

U ethernetu je maximální velikost přenášeného fragmentu 1500 bajtů (viz MTU). Proto jsou větší pakety děleny (fragmentovány), aby splnily daný limit. Příjemce tyto fragmenty spojí zpět do jednoho paketu a zpracuje ho.

Pokud dojde k fragmentaci, každý IP fragment musí obsahovat informaci, na jaké místo v kterém paketu patří. Tato informace se nachází v 13bitové části Fragment offset v IP hlavičce. Neobsahuje nic jiného než offset – posun tohoto fragmentu v původním IP paketu – v jednotkách 8 bajtů, čímž lze zapsat maximální offset 65 528 (213 -1 × 8). Znamená to, že IP fragment s maximálním offsetem by neměl obsahovat data větší než 7 bajtů, jinak by paket překročil povolenou velikost.

Útočník však může poslat IP fragment s maximálním offsetem a daty mnohem většími než 7 bajtů. Jakmile je příjemce spojí, dostane IP paket mnohem větší, než je povolená velikost 65535 bajtů. Dojde k přetečení paměťového prostoru, který byl vyhrazen pro paket. To může způsobit mnoho problémů.

Z popisu vyplývá, že se tento problém týká zpracování IP fragmentů a nikoliv ICMP. Proto se může vyskytnout i u jiných protokolů (TCP, UDP, IGMP atd.)

Řešením je kontrolovat spojování IP fragmentů. Musí platit, že součet polí Fragment Offset a Total Length v IP hlavičce každého fragmentu je menší než 65535 bajtů. Pokud je součet větší, paket je neplatný a IP fragment je zahozen. Tento součet poskytují například některé firewally. Je tu i možnost použít ke spojení IP fragmentů větší paměťový prostor např. 32-bitový (dochází k porušení specifikací pro daný protokol, navíc je zde možná podpora paketů o velikosti skoro 1 MB).

Externí odkazy