Backdoor i parę “ciekawostek” w serii routerów D-Link DWR

Ostatnimi czasy D-Link nie ma dobrej passy. Po [wpadce][1] z ichniejszym flagowcem [DIR-890L][2], oraz [jeszcze większej wpadce][3] (bardzo delikatnie mówiąc, dla leniuchów: poprawiano podatną funkcję, tą samą, podatną funkcją) z łataniem tego błędu (dla chętnych, tutaj jeszcze inny [śmieszny błąd][4]) , przyszedł czas na niezłą kombinację w sześciu siedmiu urządzeniach z serii DWR (113, 116, 118, 512 rev A, 512 rev B, 712 rev B, 921, DWR-927): tylną furtkę, CSRFy, ujawnianie haseł, wbudowany sniffer, zbieranie zapytań DNS oraz ukryte strony administracyjne pozwalające np. na pisanie do pamięci [EEPROM][5] urządzenia.

Jeden z antybohaterów dzisiejszego posta (DWR-921) 😉

Podatne urządzenia wraz z wersjami oprogramowania

Warto dodać, że urządzenia DWR-113, DWR-712, DWR-755, DWR-927 nie były dostępne w oficjalnej sprzedaży w Polsce.

Backdoor

First thing first. Każdy router, w teorii, posiada jedno konto administracyjne celem konfiguracji parametrów pracy urządzenia. Natomiast DWRy posiadają jeszcze jedno dodatkowe konto z takimi uprawnieniami o nazwie użytkownika “guest”.

Z tym kontem związane są dwa poważne problemy. Po pierwsze hasło podawane przez użytkownika zawsze jest porównywane z pustym buforem. Po drugie, programiści źle ustawili flagę uprawnień tego konta i otrzymuje ono pełne uprawnienia do modyfikacji konfiguracji sprzętu. Dodatkowo, konto gościa nie ma możliwości ustawienia hasła, gdyż funkcja pobierajaca je z pamięci, ma “wbity na sztywno” adres jego przechowywania (jedynym rozwiązaniem jest modyfikacja pamięci). Opis reverse engineeringu tylnej furtki [zamieściłem w osobnym poście][15].

Oznacza to nic innego jak to, że każda osoba będąca w naszej sieci może, wprowadzając jedynie nazwę użytkownika guest, modyfikować konfigurację routera za pomocą webowego panelu administracyjnego.

Może się wydawać, że wystarczy nie wpuszczać niezaufanych osób do swojej sieci LAN/WLAN i nie wystawiać panelu administracyjnego do Internetu, a będzie można sytuację uznać za względnie bezpieczną, przejdźmy zatem do kolejnych podatności.

Kod backdoora w daemonie httpd

Podatności CSRF

Wykorzystując opisaną w poprzednim punkcie tylną furtkę oraz brak ochrony panelu administacyjnego przed atakami [Cross-site request forgery][16] istnieje możliwość modyfikacji, praktycznie wszystkich, ustawień urządzenia (adresacja sieci, serwery DNS, zdalne zarządzanie itp.) poprzez skłonienie użytkownika do odwiedzenia złośliwej witryny. Jedynym warunkiem jaki musi zostać spełniony, jest korzystanie z domyślnie nadanej adresacji przez producenta.

Co to dla mnie oznacza? Otóż od około roku takie ataki są łakomym kąskiem dla złodziei i mogą mieć implikacje [liczone w dziesiątkach tysięcy złotych][17].

Jako ciekawostkę dodam, że mechanizm sesji panelu administracyjnego jest oparty o adres IP, z którego zostało wysłane żądanie logowanie, a nie np. o ciasteczka.

Przykładowy kod wykorzystujący podatność (zmiana DNS):