Pięćset milionów potencjalnych ofiar ataku na aktualizator gier Blizzarda
Przyzwyczailiśmy się do luk bezpieczeństwa w systemachoperacyjnych, przeglądarkach, pakietach biurowych, nawetprocesorach… ale gry do tej pory jakoś nie były rozpatrywane podkątem tego, co za ich pomocą można użytkownikowi złego zrobić.To karygodne niedopatrzenie zaczął naprawiać Tavis Ormandy zGoogle Project Zero, który na początek wziął się za produkcjeBlizzarda. Całkiem skutecznie, okazało się, że agent aktualizacjitowarzyszący tak popularnym grom jak Starcraft II, World ofWarcraft, Overwatch czy Diablo III pozwala na atak DNS rebinding i wkonsekwencji zdalne uruchomienie złośliwego kodu.
24.01.2018 | aktual.: 25.01.2018 15:13
Skala zagrożenia jest lepsza niż w wypadku najpopularniejszychaplikacji użytkowych – z Blizzard Update Agenta korzystać mamiesięcznie pół miliarda ludzi. Aktywuje on sobie serwer JSON-RPCnasłuchujący na porcie 1120 systemu, wyczekując na poleceniainstalacji, deinstalacji, aktualizacji, zmiany ustawień i tympodobnych operacji.
Blizzard wymyślił sobie oczywiście zabezpieczenie, mającezapewnić, że takie zdalne wywołania procedur przychodzą wyłączniez uprawnionego źródła, wykorzystując przesyłane w nagłówkuidentyfikatory autoryzacji. Jak wyjaśniaOrmandy, strona internetowa może wysyłać żądania do demonaRPC metodą JavaScriptu XMLHttpRequest(), ale zostaną onezignorowane, o ile nie dowiodą, że mogą czytać i pisaćwłaściwość autoryzacji. Sęk w tym, że sam adreslocalhost:1120/agent jest dostępny bez uwierzytelnienia, pozwalającpobrać nagłówek uwierzytelnienia.
$ curl -si http://localhost:1120/agent HTTP/1.0 200 OK Content-Length: 359 { "pid" : 3140.000000, "user_id" : "S-1-5-21-1613814707-140385463-2225822625-1000", "user_name" : "S-1-5-21-1613814707-140385463-2225822625-1000", "state" : 1004.000000, "version" : "2.13.4.5955", "region" : "us", "type" : "retail", "opt_in_feedback" : true, "session" : "15409717072196133548", "authorization" : "11A87920224BD1FB22AF5F868CA0E789" }
Aby skutecznie przesłać polecenie do agenta Blizzarda, należypodszyć się pod domenę uprawnioną do komunikacji, przesyłającprzy tym pobraną wcześniej wartość właściwości autoryzacji.Podszycie możliwe jest za pomocą dobrze znanego ataku DNSrebinding. Atak ten pozwala dostać się do adresów teoretyczniedostępnych tylko w sieci wewnętrznej, stosując podmianę adresu IPdomeny pomiędzy żądaniami DNS.
Napastnikowi wystarczy więc zarejestrować domenę, podpiąć jądo serwera DNS pod swoją kontrolą, skonfigurowanego tak, by jegoodpowiedzi nie były buforowane. Gdy ofiara wejdzie na stronę wzłośliwej domenie, serwer DNS napastnika zwraca adres IP do stronyzawierającej JavaScript uruchamiany na komputerze ofiary. Kod tenrobi dodatkowe wywołania do domeny napastnika, dozwolone zgodnie zpolityką same-origin przeglądarki. Kiedy jednak przeglądarkauruchamia skrypt, wywołujący ponowne żądanie DNS, napastnikodpowiada nowym adresem IP – może to być też adres sieciwewnętrznej.
Taki właśnie skrypt do rebindingu domen pozwolił Ormandy’emuprzełączyć 127.0.0.1 na kontrolowany przez niego 199.241.29.227, anastępnie wysłać komendy metodą POST na serwer. Demo ataku jestdostępne tutaj– przy standardowej konfiguracji DNS jego przeprowadzenie zajmujejakieś 5 minut.
Luka zatkana czarną listą
Ormandy przesłał do Blizzarda swoje odkrycie 8 grudnia zeszłegoroku. Strony wymieniły jeszcze kilka e-maili, po czym 22 grudniazespół Blizzarda zamilknął. Do użytkowników rozesłanoaktualizację Blizzard Update Agenta do wersji 5996, przynoszącąbardzo dziwaczne zabezpieczenie. Otóż stworzono sobie czarną listęzakazanych klientów, które nie mogą rozmawiać z agentemaktualizacji. Agent sprawdza otóż 32-bitowy skrót nazwy plikuwykonywalnego, i sprawdza, czy jest on na czarnej liście, na którejobecnie znajdują się iexplore.exe, chrome.exe, firefox.exe,plugin-container.exe, opera.exe lub safari.exe.
Rozwiązanie o tyle absurdalne i nieeleganckie, że czarna listanie zabezpiecza użytkowników nietypowych przeglądarek i trzeba sięnią na bieżąco opiekować. Sam Ormandy proponował zastosowaniebiałej listy dopuszczonych nazw hostów – ale nie, Blizzard musiałto zrobić po swojemu.
Po publicznym ujawnieniu luki, odezwał się rzecznik Blizzarda,stwierdzając, że czarna lista plików wykonywalnych była starai nie miała być rozwiązaniem tego problemu.Nie powiedział jednak, jak faktycznie luka została załatana,przyznał jedynie, że komunikacja z Travisem Ormandym zostaławznowiona.
Tymczasem google’owy haker nagrach Blizzarda nie zamierza poprzestać. Na Twitterze ogłosił,że w najbliższych tygodniach weźmie się za inne popularne tytuły,te z liczbą graczy przekraczającą 100 milionów.