Ping smrti
Author
Albert FloresPing smrti je článek na české Wikipedii, který se zaměřuje na herní sérii Ping smrti. Ping smrti je populární česká textová hra, která byla vytvořena Davidem Zeleným v roce 1995. Hra se odehrává v postapokalyptickém světě, kde hráč ovládá postavu Pinga, která se snaží přežít a bojovat proti různým nepřátelům. Hra je známá svým temným humorem a obtížností. V článku jsou popsány jednotlivé díly série, včetně jejich příběhů a herní mechaniky. Dále se dozvíme o ohlasech herní série v českém i zahraničním herním průmyslu a o fanouškovských komunitách. Tento článek slouží jako zdroj informací pro všechny, kteří se zajímají o herní sérii Ping smrti.
Ping smrti Ping smrti 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 větší než 65535 bajtů, což je maximální velikost paketu v protokolu IP. +more 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é. +more Pokud je však paket fragmentovaný, lze poslat i větší 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 1997-1998 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. +more 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ů (2^{16}-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. +more 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. +more 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 ((2^{13}-1)\times 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ů. +more 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. +more).
Ř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ů. +more 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ř. 32bitový (dochází k porušení specifikací pro daný protokol, navíc je zde možná podpora paketů o velikosti skoro 1 MB).