9:04
19/11/2012

O typosquattingu, czyli rejestrowaniu domen odpowiadającyh literówkom popełnianym w trakcie wpisywania domeny w pasku adresowym przeglądarki pisaliśmy już kilka razy. Ale błąd w rozwiązaniu nazwy domenowej może się pojawić także nie na skutek błędu człowieka, a promieni kosmicznych.

Bitsquatting

Bitsquatting polega na rejestracji domeny o jeden bit innej niż oryginalna i oczekiwaniu na małopopularne (ale wciąż mające niekiedy miejsce) zdarzenie zmiany bitu wywołanej z powodu przegrzania układu pamięci lub uderzenia cząstek wchodzących w skład promieniowania kosmicznego. Niektóre statystyki mówią, że można się spodziewać jednego takiego błędu dziennie na każde 4GB pamięci.

Artem Dinaburg przedstawił jako przykład domenę CNN.com.

01100011 01101110 01101110 0101110 01100011 01101111 01101101
c n n . c o m

Po kliknięciu na link cnn.com, zapis binarny tej domeny jest kopiowany w pamięci kilka razy:

  • poprzez stos TCP/IP z kernel do user mode.
  • przez przeglądarkę w trakcie parsowania HTML
  • w trakcie tworzenia reprezentacji DOM
  • w trakcie tworzenia żądania HTTP
  • poprzez API w trakcie rozwiązywania DNS

Załóżmy więc, że następuje przypadkowa modyfikacja bitu w nazwie domeny (jak poniżej) i zamiast cnn.com, przeglądarka trafia na con.com.

01100011 01101111 01101110 0101110 01100011 01101111 01101101
c o n . c o m

Żeby zmaksymalizować szansę ataku, warto obrać sobie za cel zbitsquattingowanie domeny, która jest jedną z najczęściej rozwiązywanych w internecie. Okazuje się jednak, że tego typu domeny nie należą do popularnych serwisów a do sieci serwerów CDN, hostujących statyczne zasoby, np. fbcdn.net, 2mdn.net i akamai.com

Eksperyment bitsuqttingowy

Artem zarejestrował 32 domeny, różniące się o jeden bit od następujących oryginałów: akamai.net, amazon.com, microsoft.com, live.com, 2mdn.net, fbcdn.net, root-servers.net, doubleclick.net i zaczął monitorować logi serwerów HTTP, w oczekiwaniu na błędne, wynikające z przeskoczenia bitu, połączenia. Ku jego zdumieniu, na swoich domenach odnotował ruch! Od października 2010 do maja 2011 odnotował łącznie 52,317 żądań z 12,949 unikalnych adresów IP (żądania z wyszukiwarek i skanerów zostały odfiltrowane). Oto jeden z przykładów:

static.ak.fjcdn.net 109.242.50.xxx “GET /rsrc.php/z67NS/hash/4ys0envq.js HTTP/1.1” “http://www.facebook.com/profile.php?id=xxxxxxxxxx” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6.5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.2; Hotbar 11.0.78.0; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; AskTbZTV/5.8.0.12304)”

Co ciekawe, analiza User-Agents wykazała, że bardziej narażeni na bisquatting są użytkownicy smartphonów i konsol do gier, a najmniej użytkownicy systemu operacyjnego Mac OS X:

bitsquatting User Agents

Bitsquatting – User Agents w porównaniu do normalnego ruchu na Wikipedia.com

Jeśli ktoś chce powtórzyć eksperyment, Artem opublikował skrypt pythona do generowania bitsquattingowych domen. Użytkownicy Reddit z kolei sugerują, aby za cel obrać sobie CDN Google wykorzystywany do serwowania reklam (tj. źródło JavaScriptu, które jest załączone praktycznie na każdej stronie WWW w internecie).

W sieci znaleźć można także whitepaper i prezentację Artema poświęconą bitsquattingowi oraz jego wykład na DEFCON 19:

Pozostaje więc włączyć ECC w RAM.

Przypadkowy “bit flapping” w innych atakach

Warto wspomnieć, że “przeskoczenie bitu” wywołane promieniami kosmicznymi było już rozpatrywane przez naukowców m.in. w kontekście ataków na wirtualne maszyny, a w samym kernelu Linuksa znajduje się patch mający na celu usuwać skutki błędów wywołanych promieniami kosmicznymi. Metoda zmiany wartości “losowo” wybranego bitu (tym razem celowo, a nie przypadkowo) to także jedna z technik fuzzingu. Między innymi dzięki niej, dwójka polskich badaczy wygenerowała ostatnio kilkadziesiąt błędów w oprogramowaniu Adobe Acrobat Reader.

Przeczytaj także:


Dowiedz się, jak zabezpieczyć swoje dane i pieniądze przed cyberprzestępcami. Wpadnij na nasz kultowy ~3 godzinny wykład pt. "Jak nie dać się zhackować?" i poznaj kilkadziesiąt praktycznych i przede wszystkim prostych do zastosowania porad, które skutecznie podniosą Twoje bezpieczeństwo i pomogą ochronić przed atakami Twoich najbliższych. Uczestnicy tego wykładu oceniają go na: 9,34/10!

Na ten wykład powinien przyjść każdy, kto korzysta z internetu na smartfonie lub komputerze, prywatnie albo służbowo. Wykład prowadzimy prostym językiem, wiec zrozumie go każdy, także osoby spoza branży IT. Dlatego na wykład możesz spokojnie przyjść ze swoimi rodzicami lub mniej technicznymih znajomych. W najbliższych tygodniach będziemy w poniższych miastach:

Zobacz pełen opis wykładu klikając tutaj lub kup bilet na wykład klikając tu.

42 komentarzy

Dodaj komentarz
  1. “Niektóre statystyki mówią, że można się spodziewać jednego takiego błędu dziennie na każde 4GB pamięci”

    Podane źródło mówi o jednym błędzie na 3 dni, przy niezweryfikowanym założeniu 1.3e-12 zmiany bitu na godzinę.

  2. Z tego wykresu wcale nie wynika że makówkarze są najmniej narażeni. Brakuje precyzyjniejszych danych odnośnie GNU/Linuxa.

    • Wynika – najmniej wejść na podstawioną domenę w stosunku do normalnych wejść jest właśnie z OSX.

    • No właśnie nie wynika, bo wykres ma za małą dokładność. OS X ma 8% vs 2%, a dla GNU/Linuxa podano tylko 1% i <1% – druga wartość jest niemożliwa do porównania. Może to być 0,9% jak również 0,00001% albo jakkolwiek inaczej – więc jest bardzo realna możliwość, żeby GNU/Linuxa ten problem dotyczył w dużo mniejszym stopniu niż OS X.

    • Kolega wyżej ma na myśli że próbka jest niemiarodajna aby z wystarczającą pewnością stwierdzić prawdziwość hipotezy że użytkownicy jabola są najmniej narażeni. Kłania się statystyka.

    • Są trzy rodzaje kłamstwa: zwyczajne kłamstwo, wierutne kłamstwo i statystyka.
      Koledze nie chodzi o próbę a o zaokrąglenie wyników które nie pozwala dokładnie określić stosunku.

  3. A co jeśli ostatni bit kropki zostanie zamieniony z 0 na 1 i powstanie znak “/” ? :>

    • To wtedy się nie uda. Zamiast niebezpiecznik.pl będzie niebezpiecznik/pl

  4. A co miałoby generować ruch HTTP do root-servers.NET?

    • HTTP nie, ale ruch DNS, w którym odpowiadasz swoim adresem IP na wszystkie zapytania ;)

  5. “odnotował łącznie 52,317 żądań z 12,949 unikalnych adresów IP”

    ok, roboty są odfiltrowane,
    ale ile z tych połączeń było spowodowane poprzez bitsuqtting, a ile przez literówkę usera?

    czyli konkretnie, w ilu przypadkach adres w nagłówku jest poprawny?

    • @m Też o tym pomyślałem, choć prawdopodobieństwo, że user ręcznie przepisuje domenę CDN-ową (fbcdn) jest w sumie niewielkie.

    • jeżeli jest to przejście na kolejną podstronę to http referrer wyjaśni wszystko

  6. “Wektor ataku” przypuszczam średnio skuteczny, myślę że lewa stronka z przyciskiem “kliknij tu by zainstalować wirusa” miałaby większą popularność.

    Ale sposób ciekawy, niedługo bedą ataki na piksele w monitorze. A od pojedyńczych pikseli do stworzenia fikcyjnego obrazka przyciskuu “login” niezadaleko :-)

  7. Oni wzięli w ogóle pod uwagę literówki, czy wszystko to sprawka Boga Słońca? Poza tym robiłem testy kiedyś, mielenie pamięcią 16GB (założony RAM dysk, zaszyfrowany TC, kopiowanie dużych plików i porównywanie ich z oryginałem – taki test RAM i CPU po OC) – latało to bardzo długo, nie zrobił się ani jeden błąd (nawet z powodu OC).

    • Jak często przepisujesz ręcznie linki z CDN?

    • Weź pod uwagę, że RAM mają też wszelkiego rodzaju proxy po drodze (możesz mieć proxy np. w modemie kablowym/AP lub u operatora).

  8. Każde poważne badanie (kliniczne) powinno mieć jeszcze grupę odniesienia – co z tego że na jednobitową jednoliterówkę wchodzi ileś to a ileś – powinni zbadać też dwubitowe jednoliterówki dla cdn.com, porównać wyniki – do tego grupy powinny być reprezentatywne :) o co trudno w świecie domen i w świecie piszących na klawiaturach amerykańskich w języku łacińskim.
    Dopiero po takiej żmudnej pracy Artem powinien zaprosić N-kolegów, zamówić N/2+1 półliterówek, kilka rum*-tirówek i można świętować.

    • Chodziło o alfabet łaciński a nie język – przepraszam.

  9. A czy ktoś skorelował odwołania do tych domen z pomiarami aktywności Słońca, błyskami gamma czy innymi wydarzeniami kosmicznymi?

  10. A czy podobny błąd nie powstanie raczej np. w wyniku błędu w transmisji wifi? To się wydaje dużo bardziej prawdopodobne, nawet jeśli uwzględnić CRC. (Czy wszystkie routery sprawdzają CRC?)

  11. @ptr, nie zamknąłeś kbd/samp/whatever w okolicy drugiej tabelki.

  12. Dęte.

  13. Post ciekawy (natomiast to sprawa sprzed ponad roku jesli dobrze pamietam). Jesli kogos interesuje podobna tematyka, to w poscie http://gynvael.coldwind.pl/?id=403 jest troche linkow do ciekawych materialow.

    • własnie chciałem zlinkowac Twojego arta ;) Przeskoczył wkoncu? Czy juz nie katujesz maszyny, odpowiedz w komencie na Twoim blogu.

  14. “O typosquattingu, czyli rejestrowaniu domen odpowiadający_h” – promieniowanie zadziałało również na autora ;)

  15. Dlatego ja używam pamięci z ECC. :)

  16. Czy idzie jakoś wyłapać wystąpienia tego typu przypadku na własnej stacji?

  17. Szczególnie podoba mi się niejawne założenie, że Wikipedia jest serwisem o reprezentatywnym dla całego Internetu, albo przynajmniej badanych domen, rozkładzie OSów.

  18. http://xkcd.com/378/

    az mi sie skojarzylo :)

  19. https://niebezpiecznik.pl/i
    : )

  20. Wiadomo, większość inspiracji pochodzi z kosmosu.

  21. Jak to się ma odnośnie pamięci ECC? Przecież po to one powstały i zakładam że są używane na serwerach.

  22. Według mnie jest to typowy przykład wyolbrzymiania (robienia z igieł wideł) problemu, który na ogół i tak nie występuje. Zaraz, chwila! Przecież mogę udowodnić, że podnoszenie się wód oceanicznych spowodowanych topnieniem lodowców może wpłynąć na sposób przekazywania danych przez internet. Zaraz zaleje nam serwerownie i przeskoczy się bit (powodujący wyłączenie…) aż tu nagle padnie internet. Oczywiście, w praktyce z takimi problemami nie mamy do czynienia. Tak jak wspomniałem – nie mają o czym pisać, to piszą o wszystkim i o niczym. Te statystki cuchną jak dla mnie materiałami sponsorowanymi, które mają wywołać ogólnoświatową panikę i zwiększyć zakup ilości domem o podobnych nazwach.

  23. Aha, zapomniałem wspomnieć. Taki problem może być spowodowany co najwyżej wirusem u użytkownika…

  24. 1 bit na 4 GB
    a teraz zatrudnijcie zawodową maszynistkę(od maszyny do pisania) i kaście Jej przepisać 4GB będzie pewnie setki tysięcy błędów ;] załóżmy że 1000 błędów zaledwie

    jakie szanse że błąd ludzki będzie wyglądał jak błąd maszyny ? pewnie 8 znaków z błędu bitu na 32 znaków błędów ludzkich .. chyba źle coś policzyłem bo wychodzi mi że co 4ty błąd ludzki może wyglądać jak błąd bitu … znowu założę optymistycznie że 1% błędów ludzkich wygląda jak błąd maszyny

    1% z 1000 błędów czyli 10 błędów człowieka wyglądających jak błąd maszyny na jeden rzeczywisty błąd maszyny

    w tekście nie zauważyłem wzmianki o odfiltrowaniu tych ponad 90% wyników …. trudno mi sobie wyobrazić zresztą jak by można to było zrobić

    ponadto przypominam że moje założenia są bardzo optymistyczne … tak o kilka rzędów wartości ;P

    • Kolego, za bardzo coś tu wyolbrzymiłeś i pogmatwałeś… Chyba pomyliłeś tematy.

    • To załamujące :((( zawsze kiedy mam zaje…isty pomysł nikt mnie nie rozumie. tak jak teraz kiedy pokazuje zupełną bzdurność Bitsquatting tematu tego art.

      idę programować może kompilator mnie zrozumie :P

  25. […] Promienie kosmiczne i tzw. “przeskok bitu” (por. Bitsquatting, czyli promieniowanie kosmiczne i błędy w nazwach domen) […]

  26. […] Bitsquatting, czyli promieniowanie kosmiczne i błędy w nazwach domen […]

  27. […] Ci lepiej zrozumieć z czego wynikają niektóre błędy bezpieczeństwa (por. atak Rowhammer, Bitsquatting, Spectre) i kto wie — może przez kolegów zostaniesz okrzyknięty mistrzem optymalizacji […]

  28. […] na pewno bardziej hollywoodzko, gdyby okazało się, że ten bug to wynik bit flappingu w wyniku promieniowania kosmicznego. Ale wiele wskazuje, że za problem odpowiada coś bardziej […]

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: