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

Urządzenia domowe znów przegrywają z hackerami – łańcuch podatności w routerze TP-Link

17 września 2024, 00:53 | Aktualności | 0 komentarzy

W Redakcji doceniamy dobrą, hackerską robotę, dlatego zawsze śledzimy zawody z cyklu Pwn2Own. Oprócz standardowych ataków na hypervisory, przeglądarki czy samochody, dużą popularnością cieszą się eksploity na domowe urządzenia sieciowe oraz IoT. Niestety, gdy ogłaszane są wyniki, najczęściej nie ma informacji o tym, jakie dokładnie błędy zostały zidentyfikowane i wykorzystane podczas konkursu, a na szczegółowe informacje trzeba poczekać, dając czas producentom na wdrożenie poprawek. Tym razem znaleziono błędy w urządzeniu ER605, a firma TP-Link naprawiła błędy w najnowszej wersji firmware V2.20.2.4. 

Firma Claroty, biorąca udział w zeszłorocznej edycji Pwn2Own odbywającej się w Toronto, pochwaliła się już jakiś czas temu swoimi odkryciami, publikując dwa artykuły opisujące osiągnięte wyniki. 

Router firmy TP-Link kierowany do małych przedsiębiorstw oraz zastosowań domowych (oznaczenie modelu: ER605) to niewielkie urządzenie oferujące gigabitową łączność, wbudowany firewall, funkcje ochrony przed atakami odmowy dostępu (DoS) oraz zarządzanie przez chmurę. Na papierze specyfikacja wygląda dobrze, jednak osoby zajmujące się bezpieczeństwem wiedzą, że należy nieustannie weryfikować bezpieczeństwo wszelkich „pudełek”, o czym nie raz pisaliśmy na Sekuraku. 

Podejście badaczy do poszukiwania luk było bardzo sprecyzowane. Urządzenia, jakimi są routery (domowe), pełnią ważną rolę w bezpieczeństwie sieci. Eksploitacja zewnętrznego firewalla sieci oraz obejście translacji adresów pozwala na bezpośredni dostęp do urządzeń w sieci domowej. To powoduje drastyczny wzrost skutków takiego ataku. W niewielkich sieciach próżno często szukać odpowiedniej separacji, VLAN-ów oddzielających komputery od innych urządzeń sieciowych jak kamery czy drukarki. Te ostatnie przetwarzają często prywatne i poufne informacje. Niestety, drukarki i inne urządzenia tego typu są często traktowane po macoszemu, również w kontekście bezpieczeństwa, nawet w większych sieciach korporacyjnych, a co dopiero w domu i małym biznesie. Dlatego kluczową rolą routera jest separacja sieci lokalnej od Internetu. 

Każdy, kto chociaż raz konfigurował router domowy (polecamy nasz ebook, który przedstawia w prosty sposób, jak zrobić to bezpiecznie) mniej więcej kojarzy zestaw usług oraz funkcji, jakie oferują urządzenia tej klasy. Natomiast badacze bezpieczeństwa wiedzą, że powierzchnia ataku z “Internetu” (WAN) i sieci lokalnej (LAN) jest często zupełnie różna, przy czym – na bazie naszych doświadczeń – łatwiejsze do wykorzystania luki znajdują się po stronie sieci lokalnej. Ambitne poszukiwania zespołu Claroty Team82 zakończyły się odnalezieniem całego łańcucha błędów, który doprowadził w efekcie do ataku na urządzenie sieciowe (kamerę) podłączoną do LAN-u. 

Łańcuch podatności składał się z trzech odrębnych luk:

CVE-2024-5244 – niepoprawna walidacja serwera DDNS

Jak zauważono wcześniej, zewnętrzna ekspozycja urządzeń sieciowych może nie oferować szerokiej powierzchni ataku. Jedną z funkcji, coraz częściej spotykanych w urządzeniach klasy SOHO, jest DDNS (Dynamic DNS) pozwalająca na przypisanie domeny do urządzenia o zmiennym IP (często spotykanym w przypadku ofert ISP kierowanych do użytkowników indywidualnych oraz małych firm). 

Urządzenia TP-Linka współpracują między innymi z Comexe, używającym customowego protokołu do obsługi tej usługi. Protokół ten, w odróżnieniu od standardowych metod uwierzytelnienia serwera (wykorzystujących np. TLS), wykorzystuje kryptografię symetryczną – algorytm 3DES ze stałym kluczem o długości ośmiu bajtów.

Gdy urządzenie ustali adres serwera dostawcy usługi DDNS (wykorzystując zapytanie DNS), otwiera połączenie na porcie UDP/9994. Ponieważ komunikacja jest zabezpieczona w sposób opisany powyżej, znajomość klucza wystarczy, aby móc podszyć się pod dowolną ze stron komunikacji.

CVE-2024-5242 – zdalne wykonanie kodu przez przepełnienie bufora na stosie

Błędy typu memory corruption nie chcą odejść w niepamięć, a bezpieczne języki (w kontekście memory safe), choć popularne, to nie są powszechnie wykorzystywane. Co za tym idzie, binaria, uruchomione między innymi na urządzeniach wbudowanych, wciąż pisane są w językach C i C++, które wymagają od programistów szczególnej dbałości przy zarządzaniu pamięcią. 

Możliwość podszycia się pod serwer powoduje, że atakujący może przedstawić się jako dostawca usługi DDNS. Co za tym idzie, może przesyłać komunikaty, które będą parsowane na urządzeniu. Usługa przetwarzająca otrzymane pakiety (binarka cmxddnsd) kopiuje otrzymane bajty bez sprawdzenia rozmiaru wiadomości czy też poprawności. Dla hackera wykorzystanie funkcji strncpy, z parametrem długości określanym przez wielkość wejściowego bufora, brzmi dość jednoznacznie i jest klasycznym przypadkiem pozwalającym na przepełnienie bufora na stosie. Badacze wskazują, że możliwość przekazania, większej niż oczekiwana liczby bajtów występowała w wielu miejscach w kodzie. 

Ostatnim krokiem, który pozwoli na osiągnięcie pełnego zdalnego wykonania kodu (RCE) jest obejście mechanizmu ASLR, który był włączony na urządzeniu. Zabezpieczenie to powoduje, że załadowane elementy programu znajdują się pod losowymi adresami, co znacznie utrudnia atakującemu przeniesienie wykonania do odpowiedniej funkcji (np. system pozwalającej na wykonanie polecenia systemowego). 

CVE-2024-5243 – obejście mechanizmu ASLR

Obejście ASLR (address space layout randomization) możliwe było dzięki wystąpieniu błędu OOB (out of bound) read w usłudze DNS. Dzięki przepełnieniu na stosie możliwe było nadpisanie zmiennej w pamięci, która odpowiadała za wielkość zwracanej odpowiedzi. Dzięki temu odpowiednio przygotowane zapytanie skierowane do usługi DNS uruchomionej na urządzeniu ujawniało adresy wielu wskaźników. Na podstawie tego, badacze mogli wyliczyć bazowe adresy regionów pamięci, co skutecznie pozwoliło na pokonanie address space layout randomization. 

Do skutecznej eksploitacji urządzenia atakujący musi wykonać kilka kroków: podszyć się pod dostawcę usługi DDNS przy pomocy CVE-2024-5242, wykonać odpowiednie zapytania DNS, aby wyznaczyć poprawny układ pamięci procesu (CVE-2024-5244) i w końcu wykorzystać stack-based buffer overflow na urządzeniu, wywołując funkcję system na urządzeniu (CVE-2024-5243). 

Badacze umieścili wideo prezentujące proof-of-concept ataku:

Trzeba przyznać, że atakowanie domowych urządzeń staje się coraz trudniejsze i wymaga więcej niż jednej podatności. Nie zmienia to faktu, że wykorzystanie mechanizmów bezpieczeństwa oraz błędów programistycznych w tego typu urządzeniach wciąż jest dużo łatwiejsze niż ataki wycelowane w nowoczesne systemy. 

Autorom gratulujemy ciekawego znaleziska, a właścicielom urządzeń przypominamy o konieczności dokonania stosowanych aktualizacji. 

W następnej części opiszemy atak na kamerkę Synology oraz pivot z WAN do LAN zaprezentowany przez ten sam zespół w dalszej części konkursu. 

~fc

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



Komentarze

Odpowiedz