W komponentach Realtek SDK, używanych przez różnych producentów urządzeń bezprzewodowych w ich oprogramowaniu, zidentyfikowano cztery podatności, które umożliwiają nieautoryzowanemu atakującemu zdalne wykonanie kodu na urządzeniu z podwyższonymi uprawnieniami. Wstępne oszacowania wskazują, że problemy te dotyczą co najmniej 200 modeli urządzeń od 65 różnych dostawców, w tym różnych modeli bezprzewodowych routerów Asus, A-Link, Beeline, Belkin, Buffalo, D-Link, Edison, Huawei, LG, Logitec, MT-Link, Netgear, Realtek, Smartlink, UPVEL, ZTE i Zyxel.
Problem dotyczy różnych klas urządzeń bezprzewodowych opartych na SoC RTL8xxx, od routerów bezprzewodowych i wzmacniaczy Wi-Fi, po kamery IP oraz inteligentne urządzenia do sterowania oświetleniem. Urządzenia oparte na chipach RTL8xxx korzystają z architektury, która zakłada instalację dwóch SoC — na pierwszym instalowane jest oprogramowanie producenta oparte na Linuksie, a na drugim działa oddzielne uproszczone środowisko Linuksa z realizacją funkcji punktu dostępowego. Wnętrze drugiego środowiska opiera się na standardowych komponentach dostarczanych przez firmę Realtek w SDK. Wymienione komponenty przetwarzają dane pochodzące z zewnętrznych zapytań.
Vulnerabilities affect products that use Realtek SDK v2.x, Realtek 'Jungle' SDK v3.0-3.4, and Realtek 'Luna' SDK up to version 1.3.2. A fix has already been released in the Realtek 'Luna' SDK 1.3.2a update, and patches for the Realtek 'Jungle' SDK are being prepared for publication. No fixes are planned for Realtek SDK 2.x as support for this branch has already been discontinued. For all vulnerabilities, working exploit prototypes are provided that allow for code execution on the device.
Zidentyfikowane luki (pierwszym dwóm przypisano poziom zagrożenia 8.1, a pozostałym — 9.8):
- CVE-2021-35392 — przepełnienie bufora w procesach mini_upnpd i wscd, realizujących funkcjonalność 'WiFi Simple Config' (mini_upnpd zajmuje się przetwarzaniem pakietów SSDP, a wscd, oprócz wsparcia dla SSDP, obsługuje zapytania UPnP w oparciu o protokół HTTP). Atakujący może uzyskać możliwość wykonania własnego kodu poprzez wysłanie specjalnie sformatowanych zapytań UPnP 'SUBSCRIBE' z zbyt dużą wartością numeru portu w polu 'Callback'. SUBSCRIBE /upnp/event/WFAWLANConfig1 HTTP/1.1 Host: 192.168.100.254:52881 Callback: NT: upnp:event
- CVE-2021-35393 — luka w obsłudze 'WiFi Simple Config', która objawia się przy użyciu protokołu SSDP (wykorzystuje UDP oraz format zapytań podobny do HTTP). Problem wynika z użycia stałego bufora o rozmiarze 512 bajtów przy przetwarzaniu parametru 'ST:upnp' w wiadomościach M-SEARCH wysyłanych przez klientów w celu określenia dostępności usług w sieci.
- CVE-2021-35394 — podatność w procesie MP Daemon, który odpowiada za wykonywanie operacji diagnostycznych (ping, traceroute). Problem pozwala na podstawienie własnych poleceń z powodu niewystarczającej weryfikacji argumentów podczas wykonywania zewnętrznych narzędzi.
- CVE-2021-35395 — seria podatności w interfejsach webowych opartych na serwerach http /bin/webs i /bin/boa. W obu serwerach wykryto typowe podatności spowodowane brakiem weryfikacji argumentów przed uruchomieniem zewnętrznych narzędzi funkcją system(). Różnice dotyczą jedynie użycia różnych interfejsów API w ataku. Oba kontrolery nie zawierały ochrony przed atakiem CSRF oraz techniką "DNS rebinding", która umożliwia wysyłanie żądań z zewnętrznej sieci przy ograniczeniu dostępu do interfejsu tylko dla sieci wewnętrznej. Dodatkowo w procesach domyślnie używano z góry określonego konta supervisor/supervisor. Ponadto w kontrolerach wykryto kilka przepełnień stosu, które występują przy wysyłaniu argumentów o zbyt dużych rozmiarach. POST /goform/formWsc HTTP/1.1 Host: 192.168.100.254 Content-Length: 129 Content-Type: application/x-www-form-urlencoded submit-url=wlwps.asp&resetUnCfg=0&peerPin=12345678;ifconfig>/tmp/1;&setPIN=Start+PIN&configVxd=off&resetRptUnCfg=0&peerRptPin=
- Dodatkowo zauważono wykrycie jeszcze kilku podatności w procesie UDPServer. Okazało się, że jeden z problemów został już odkryty przez innych badaczy w 2015 roku, ale nie został całkowicie naprawiony. Problem jest spowodowany brakiem odpowiedniej weryfikacji argumentów przekazywanych do funkcji system() i może być eksploatowany przez przesyłanie na port sieciowy 9034 ciągu w postaci ‘orf;ls’. Ponadto w UDPServer zidentyfikowano przepełnienie bufora z powodu niebezpiecznego użycia funkcji sprintf, które również potencjalnie może być wykorzystane do przeprowadzenia ataków.
Źródło: opennet.ru
