Pięćset milionów potencjalnych ofiar ataku na aktualizator gier Blizzarda

Strona główna Aktualności
image

O autorze

Przyzwyczailiśmy się do luk bezpieczeństwa w systemach operacyjnych, przeglądarkach, pakietach biurowych, nawet procesorach… ale gry do tej pory jakoś nie były rozpatrywane pod kątem tego, co za ich pomocą można użytkownikowi złego zrobić. To karygodne niedopatrzenie zaczął naprawiać Tavis Ormandy z Google Project Zero, który na początek wziął się za produkcje Blizzarda. Całkiem skutecznie, okazało się, że agent aktualizacji towarzyszący tak popularnym grom jak Starcraft II, World of Warcraft, Overwatch czy Diablo III pozwala na atak DNS rebinding i w konsekwencji zdalne uruchomienie złośliwego kodu.

Skala zagrożenia jest lepsza niż w wypadku najpopularniejszych aplikacji użytkowych – z Blizzard Update Agenta korzystać ma miesięcznie pół miliarda ludzi. Aktywuje on sobie serwer JSON-RPC nasłuchujący na porcie 1120 systemu, wyczekując na polecenia instalacji, deinstalacji, aktualizacji, zmiany ustawień i tym podobnych operacji.

Blizzard wymyślił sobie oczywiście zabezpieczenie, mające zapewnić, że takie zdalne wywołania procedur przychodzą wyłącznie z uprawnionego źródła, wykorzystując przesyłane w nagłówku identyfikatory autoryzacji. Jak wyjaśnia Ormandy, strona internetowa może wysyłać żądania do demona RPC metodą JavaScriptu XMLHttpRequest(), ale zostaną one zignorowane, o ile nie dowiodą, że mogą czytać i pisać właściwość autoryzacji. Sęk w tym, że sam adres localhost:1120/agent jest dostępny bez uwierzytelnienia, pozwalając pobrać 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ży podszyć się pod domenę uprawnioną do komunikacji, przesyłając przy tym pobraną wcześniej wartość właściwości autoryzacji. Podszycie możliwe jest za pomocą dobrze znanego ataku DNS rebinding. Atak ten pozwala dostać się do adresów teoretycznie dostępnych tylko w sieci wewnętrznej, stosując podmianę adresu IP domeny pomiędzy żądaniami DNS.

Napastnikowi wystarczy więc zarejestrować domenę, podpiąć ją do serwera DNS pod swoją kontrolą, skonfigurowanego tak, by jego odpowiedzi nie były buforowane. Gdy ofiara wejdzie na stronę w złośliwej domenie, serwer DNS napastnika zwraca adres IP do strony zawierającej JavaScript uruchamiany na komputerze ofiary. Kod ten robi dodatkowe wywołania do domeny napastnika, dozwolone zgodnie z polityką same-origin przeglądarki. Kiedy jednak przeglądarka uruchamia skrypt, wywołujący ponowne żądanie DNS, napastnik odpowiada nowym adresem IP – może to być też adres sieci wewnętrznej.

Taki właśnie skrypt do rebindingu domen pozwolił Ormandy’emu przełączyć 127.0.0.1 na kontrolowany przez niego 199.241.29.227, a następnie wysłać komendy metodą POST na serwer. Demo ataku jest dostępne tutaj – przy standardowej konfiguracji DNS jego przeprowadzenie zajmuje jakieś 5 minut.

Luka zatkana czarną listą

Ormandy przesłał do Blizzarda swoje odkrycie 8 grudnia zeszłego roku. Strony wymieniły jeszcze kilka e-maili, po czym 22 grudnia zespół Blizzarda zamilknął. Do użytkowników rozesłano aktualizację 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 agentem aktualizacji. Agent sprawdza otóż 32-bitowy skrót nazwy pliku wykonywalnego, i sprawdza, czy jest on na czarnej liście, na której obecnie 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 lista nie zabezpiecza użytkowników nietypowych przeglądarek i trzeba się nią na bieżąco opiekować. Sam Ormandy proponował zastosowanie biał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 stara i 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ła wznowiona.

Tymczasem google’owy haker na grach 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.

© dobreprogramy