Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Zdalne wykonanie kodu (RCE) na D-Link DIR-X4860

22 maja 2024, 07:39 | W biegu | 1 komentarz

Nie tak dawno pisaliśmy o możliwości wykonania kodu na NAS’ach od D-Linka. Okazuje się, że nowszy sprzęt, a konkretnie wysokowydajne routery D-Link DIR-X4860 obsługujące WiFi 6 również mają problem – i to całkiem poważny. Według informacji producenta, urządzenie to jest wciąż w aktywnej sprzedaży, a jego wsparcie jeszcze nie wygasło. Jest to jedyna dobra informacja, chociaż jak na razie badacze poinformowali o trzech próbach kontaktu z producentem – wszystkie zakończyły się fiaskiem. Na tę chwilę nie ma dostępnego patcha. Problematyczny jest firmware w wersji DIRX4860A1_FWV1.04B03, a dokładny opis dwóch podatności został opublikowany wraz z PoC (Proof of Concept) na blogu SSD Secure Disclosure.

Pierwsza z luk to tzw. login bypass, który istnieje w obsługiwanym przez router protokole Home Network Administration Protocol (HNAP). Normalnie proces administrowania domowym routerem wymaga połączenia z sieci lokalnej, jeśli jednak zdalne zarządzanie jest włączone – serwis HNAP może nasłuchiwać na porcie WAN. Logika kodu uwierzytelniającego pozwala na wykorzystanie znanej nazwy użytkownika do wywiedzenia klucza prywatnego wykorzystywanego w procesie uwierzytelniania. Ponieważ username jest znany i jego wartość to po prostu “Admin” – dowolny atakujący ma wszystkie informacje pozwalające na uzyskanie sesji administratora. Wtedy do zalogowania wystarczy przesłać, wyliczony z wartości otrzymanych od urządzenia i “sztucznego” hasła “Admin” hash HMAC. Podatność jest naprawdę kuriozalna. Ale na tym nie koniec.

Listing 1. Fragment zdekompilowanego kodu podatnego na ominięcia uwierzytelniania (źródło: ssd)

Drugi problem dotykający tego urządzenia to zdalne wykonanie kodu przez uwierzytelnionego użytkownika. A znaleźć tę podatność można w pliku prog.cgi implementującym obsługę żądań HNAP. Okazuje się bowiem, że jak zwykle – wartości pochodzące od użytkownika nie są poddawane odpowiedniej sanityzacji i sprawdzeniu z białą listą zanim zostaną przekazane do funkcji system(). To powoduje, że wykonanie kodu na urządzeniu jest trywialne i sprowadza się do przesłania payloadu w jednym z parametrów funkcji set_virtual_server_settings(). Badacze opublikowali PoCa, który wykorzystuje obie te podatności do wykonania kodu na urządzeniu. 

Listing 2. Fragment PoCa budującego payload wstrzykujący polecenie. (źródło: ssd)
Listing 3. Fragment podatnej implementacji, w której dane przesłane przez użytkownika trafiają bezpośrednio do wywołania popen(). (źródło: ssd)

Router jest bardzo popularny przede wszystkim w Kanadzie, jednak jego ogólna dostępność powoduje, że należy zakładać jego szersze wykorzystanie na całym świecie. Na ten moment odpowiedź producenta, a właściwie jej brak powoduje, że należy zastanowić się nad wymianą urządzenia. 

~fc

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Rafał

    A swoją drogą. Czy np jeśli nie minęło 2 lata od zakupu takiego sprzętu to myślicie że można go reklamować u sprzedawcy z tytułu rękojmi? I żądać zwroty kasy?

    Odpowiedz

Odpowiedz