W ciągu ostatnich dni niektórzy administratorzy serwerów Minecrafta zaobserwowali dziwne sesje – na ich maszyny logował się twórca gry Notch, lub ktoś, kto przejął jego sesję.
Szczegóły błędu zostały opublikowane dopiero kilka godzin temu w serwisie GitHub. Dwóch odkrywców błędu, Alex Vanderpot i Keegan Novik z Team Avolition odkryło nieprawidłową obsługę sesji w mechanizmie uwierzytelnienia użytkowników, którzy zmigrowali swoje konta do platformy Mojang. Choć błąd został przez nich odkryty 26go czerwca, zdecydowali się na jego publikację (bez powiadamiania zespołu odpowiedzialnego za bezpieczeństwo gry) dopiero wczoraj w nocy. Na sposób i czas publikacji informacji o błędzie ciekawie zareagował Notch, twórca Minecrafta.
Nieprawidłowa obsługa sesji – szkolny błąd
Błąd, popełniony przez autorów modułu uwierzytelniającego użytkowników, był nad wyraz trywialny. Okazało się, że skrypt joinServer.jsp akceptował dowolny, poprawny klucz sesji. Dowolnego użytkownika. Wystarczyło zalogować się na swoje konto, zapisać klucz sesji i użyć go następnie do logowania na dowolne inne konto poprzez zmianę nazwy użytkownika. Błąd, którego unikania zapewne uczą programistów już w przedszkolach.
Możliwe konsekwencje
Jako że z powodu błędu mogło dojść do przejęcia konta użytkownika o wyższych uprawnieniach, włamywacze mogli w najgorszym wypadku uzyskać dostęp do:
- Plików z mapami serwera
- Plików systemu operacyjnego
- Danych graczy
- Bazy danych serwera
- Modyfikacji serwera i kodu źródłowego
Podsumowanie
Tak trywialne błędy nie powinny pojawiać się nie tylko w dużych, popularnych systemach, ale nawet w małych aplikacjach, pisanych na własne potrzeby. Na szczęście Mojang zareagował bardzo szybko, usuwając błąd w ciągu kilku godzin. Pozostaje jeszcze pytanie, kto znał błąd kilka dni przed jego publikacją i do jakich danych dzięki temu uzyskał nieautoryzowany dostęp. Być może odkrywcy błędu podzielą się również tymi informacjami.
Komentarz
1. „avolition” nie „volition”, i to nie oni odkryli błąd, jedynie go dokładnie opisali
2. nie dowolnego użytkownika, tylko dowolnego użytkownika posiadającego „zmigrowane” konto mojang account.
3. przejęcie sesji innego gracza pozwala co najwyżej na zalogowanie się do gry na serwerze, dostęp do jakichkolwiek plików byłby możliwy tylko w sytuacji gdy na serwerze zainstalowany byłby plugin który na to zezwala.