Zaktualizuj Minecrafta, zanim któryś z graczy zablokuje cały serwer

Zaktualizuj Minecrafta, zanim któryś z graczy zablokuje cały serwer

Zaktualizuj Minecrafta, zanim któryś z graczy zablokuje cały serwer
Redakcja
18.04.2015 17:34

Czy zaledwie jedna i to na dodatek z pozoru dosyć prosta gra jest w stanie rozłożyć na łopatki cały serwer? Okazuje się, że tak. Błąd odkryty w bardzo popularnym Minecrafcie pozwala klientom grającym w trybie sieciowym zupełnie zablokować cały serwer. Dostępna jest już odpowiednia łatka, jeżeli więc uruchamiacie serwery tej gry na swoich maszynach, zainstalujcie ją jak najszybciej.

Problem polega na tym, że aplikacja kliencka może wysyłać do serwera informacje o tym, co zawierają poszczególne pola ekwipunku. Odbywa się to w formacie NBT – jest bardzo podobny do JSON, tyle tylko, że zapisuje się go w formie binarnej. Taka wymiana informacji nie jest niczym dziwnym, ale format pozwala na tworzenie bardzo skomplikowanych i zagnieżdżonych struktur danych. Po stronie klienta ich wygenerowanie nie stanowi żadnego problemu, ale obsługa po stronie serwera jest bardzo wymagająca. Właśnie to stanowi problem, który można wykorzystać do ataku.

Obraz

Autor zdecydował się na przygotowanie struktury, która zawierała łącznie 30 milionów list. Rozmiar pliku nie był problemem, bo Minecraft korzysta z kompresji zlib, to z kolei pozwoliło zmniejszyć te zabójcze dla serwera dane do zaledwie 39 KB. Zaznaczmy, że te kilkadziesiąt milionów wcale nie jest górną granicą, do serwera da się wysłać jeszcze więcej danych. Gdy zostaną odebrane, serwer stara się utworzyć ich reprezentację w Javie, co doprowadza do utworzenia kilku milionów obiektów zawierających ArrayList. Efekt? Pamięć na serwerze jest momentalnie zapychana, procesor nie radzi sobie z przetwarzaniem informacji. Maszyna przestaje w poprawny sposób obsługiwać zadania jakie ma do wykonania. Atak się udał, serwer staje się tymczasowo bezużyteczny.

Problem został odkryty dawno temu, bo już w lipcu 2013 roku, w wersji 1.6.2. Jak do tej pory odkrywca cyklicznie informował firmę Mojang o jego istnieniu, ale był cały czas ignorowany, lub w najlepszym przypadku otrzymywał lakoniczne i zdawkowe odpowiedzi. W końcu postanowił ją upublicznić i ponownie skontaktować się z autorami gry. Dopiero to przyniosło oczekiwany rezultat – wydano poprawkę i Minecraft 1.8.4 jest wolny od błędu. Aż dwa lata? Ktoś tutaj zdecydowanie nie popisał się podejściem do kwestii bezpieczeństwa.

Programy

Zobacz więcej
Źródło artykułu:www.dobreprogramy.pl
Oceń jakość naszego artykułuTwoja opinia pozwala nam tworzyć lepsze treści.
Wybrane dla Ciebie
Komentarze (26)