DNS rebinding – technika ataku komputerowego polegająca na takim manipulowaniu odwzorowaniem nazwy domenowej na adres IP, aby obejść mechanizm same-origin policy (SOP, reguła tego samego pochodzenia) stosowany przez przeglądarki internetowe. Skrypt wczytany ze strony napastnika uzyskuje w ten sposób możliwość odczytywania odpowiedzi z serwerów, do których w normalnych warunkach nie miałby dostępu – w szczególności z maszyn w sieci lokalnej ofiary, chronionych zaporą sieciową.
Atak nie wymaga przejęcia cudzej domeny ani zatrucia pamięci podręcznej serwera nazw. Napastnik rejestruje własną domenę i udziela na nią prawidłowych, autorytatywnych odpowiedzi, dlatego DNSSEC nie stanowi przed nim zabezpieczenia – wszystkie rekordy mogą być poprawnie podpisane. Technika figuruje w prowadzonym przez MITRE katalogu wzorców ataków CAPEC pod numerem 275, w grupie opartych na fałszowaniu źródła danych.
Mechanizm Reguła same-origin policy pozwala skryptowi odczytywać zasoby wyłącznie z tego samego pochodzenia (origin), określanego przez schemat, nazwę hosta i numer portu. Kluczowe jest to, że przeglądarka porównuje nazwy hostów, a nie adresy IP, na które te nazwy się rozwiązują.
W podstawowej odmianie ataku napastnik konfiguruje własny serwer nazw tak, by odpowiadał na zapytania o jego domenę adresem jego serwera, z bardzo krótkim czasem życia rekordu (time to live, TTL). Przeglądarka wczytuje z tego adresu złośliwy skrypt. Po wygaśnięciu rekordu napastnik zmienia odpowiedź na adres atakowanej maszyny; kolejne żądanie skryptu do tej samej nazwy trafia już pod nowy adres, a przeglądarka – uznając oba serwery za to samo pochodzenie – pozwala odczytać odpowiedź.
Po stronie napastnika sprowadza się to do serwera nazw z logiką dynamiczną, zwracającego kolejne pary adres–TTL z przygotowanej wcześniej listy zamiast statycznej zawartości strefy.
Zamiast adresu IP napastnik może wskazać rekord CNAME prowadzący do wewnętrznej nazwy hosta w sieci ofiary, na przykład odgadniętej nazwy serwera firmowego; rozwiązaniem takiej nazwy zajmuje się wówczas serwer nazw używany przez ofiarę, co wymaga, by nazwa ta była mu znana.
Warunkiem powodzenia jest skłonienie przeglądarki ofiary do pobrania treści z domeny kontrolowanej przez napastnika – co osiąga się m.in. za pośrednictwem reklam internetowych – oraz respektowanie przez nią czasu życia rekordu.
Historia Pierwszy atak wykorzystujący tę technikę opisano w 1996 roku w pracy o bezpieczeństwie Javy; odmianę opartą na zmiennym w czasie odwzorowaniu nazwy przedstawiono w 2001 roku.
W 2007 roku badacze z Uniwersytetu Stanforda wykazali, że stosowana wówczas obrona jest nieskuteczna, ponieważ wtyczki przeglądarek – takie jak Flash Player i Java – prowadziły własne, odrębne pamięci przypięć nazw do adresów. W eksperymencie z kwietnia tego roku, opartym na wykupionej reklamie internetowej, atak powiódł się w około 60 procentach z ponad 50 tysięcy wyświetleń, bez potrzeby klikania przez użytkownika w cokolwiek; autorzy oszacowali, że za mniej niż 100 dolarów można w ten sposób czasowo przejąć 100 tysięcy adresów IP.
Zastosowania Autorzy pracy z 2007 roku wyróżnili dwie zasadnicze kategorie zastosowań: obejście zapory sieciowej – przeglądarka ofiary staje się pośrednikiem pozwalającym napastnikowi przeszukiwać sieć wewnętrzną, wykradać dokumenty z serwerów firmowych, atakować niezaktualizowane maszyny oraz korzystać z usług udostępnianych wyłącznie wewnątrz sieci, takich jak drukarki sieciowe czy routery domowe z domyślnymi hasłami; przejęcie adresu IP – napastnik korzysta z adresu ofiary wobec usług dostępnych publicznie, m.in. w celu wysyłania spamu z adresu o czystej reputacji, popełniania oszustw reklamowych polegających na generowaniu fałszywych kliknięć (click fraud), obchodzenia uwierzytelniania opartego na adresie IP oraz obciążania ofiary odpowiedzialnością za cudze działania.
Technika bywa też wykorzystywana do obejścia zabezpieczeń przed atakami typu cross-site request forgery (CSRF): skoro skrypt może odczytać zawartość strony, może pobrać z niej token zabezpieczający i wysłać poprawne żądanie.
Obrona Klasyczną obroną jest DNS pinning – zapamiętywanie przez przeglądarkę odwzorowania nazwy na adres przez ustalony czas, niezależnie od TTL.
Mechanizm ten bywa jednak obchodzony. Napastnik może zwrócić w jednej odpowiedzi kilka rekordów A – własny adres oraz adres celu – a następnie doprowadzić do niepowodzenia połączenia z pierwszym z nich, na przykład odrzucając je pakietem TCP RST. Przeglądarka, uznając serwer za niedostępny, sięga wówczas po kolejny adres z odpowiedzi, co w niektórych programach następowało już po sekundzie, bez czekania na wygaśnięcie przypięcia. Inną metodą jest ponawianie żądań aż do wygaśnięcia pamięci podręcznej.
Do pozostałych zabezpieczeń należą: filtrowanie odpowiedzi na poziomie serwera nazw – niedopuszczanie, by nazwy zewnętrzne rozwiązywały się na adresy z zakresów prywatnych określonych w RFC 1918 lub na adres pętli zwrotnej; rozwiązanie to zabezpiecza przed obejściem zapory, ale nie przed przejęciem adresu IP; sprawdzanie nagłówka Host – odrzucanie przez serwer żądań HTTP zawierających nieoczekiwaną nazwę hosta; uwierzytelnianie usług wewnętrznych – niepoleganie na tym, że są one dostępne wyłącznie z sieci lokalnej; udostępnianie usług wewnętrznych przez HTTPS – atak zawodzi wówczas już na etapie nawiązywania połączenia, ponieważ wymaga ono zgodności nazwy domenowej z certyfikatem: przeglądarka sądzi, że łączy się z domeną napastnika, podczas gdy serwer wewnętrzny przedstawia certyfikat wystawiony na inną nazwę.
Od 2025 roku w przeglądarkach opartych na silniku Chromium wdrażany jest mechanizm Local Network Access, ograniczający możliwość wysyłania przez strony internetowe żądań do adresów zarezerwowanych do użytku lokalnego, w tym do pętli zwrotnej. Wymaga on uzyskania zgody użytkownika, o którą przeglądarka pyta osobnym komunikatem. Zastąpił on wcześniejszą propozycję Private Network Access, opartą na zapytaniach wstępnych CORS i zgodzie urządzenia docelowego, której nie udało się wdrożyć.
Zobacz też Domain Name System Zatruwanie DNS
Przypisy
Kategoria:Bezpieczeństwo sieciowe Kategoria:Cyberataki