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:
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.
“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ę.
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.
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
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 ;)
“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
“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 :-)
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).
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.
A czy ktoś skorelował odwołania do tych domen z pomiarami aktywności Słońca, błyskami gamma czy innymi wydarzeniami kosmicznymi?
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?)
@ptr, nie zamknąłeś kbd/samp/whatever w okolicy drugiej tabelki.
Dęte.
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.
“O typosquattingu, czyli rejestrowaniu domen odpowiadający_h” – promieniowanie zadziałało również na autora ;)
Dlatego ja używam pamięci z ECC. :)
Czy idzie jakoś wyłapać wystąpienia tego typu przypadku na własnej stacji?
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.
http://xkcd.com/378/
az mi sie skojarzylo :)
https://niebezpiecznik.pl/i
: )
Wiadomo, większość inspiracji pochodzi z kosmosu.
Jak to się ma odnośnie pamięci ECC? Przecież po to one powstały i zakładam że są używane na serwerach.
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.
Aha, zapomniałem wspomnieć. Taki problem może być spowodowany co najwyżej wirusem u użytkownika…
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
[…] Promienie kosmiczne i tzw. “przeskok bitu” (por. Bitsquatting, czyli promieniowanie kosmiczne i błędy w nazwach domen) […]
[…] Bitsquatting, czyli promieniowanie kosmiczne i błędy w nazwach domen […]
[…] 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 […]
[…] 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 […]