В компонентите Realtek SDK, използван от различни производители на безжични устройства в техните фърмуери, бяха идентифицирани четири уязвимости, които позволяват на неавтентикиран нападател дистанционно да изпълнява код на устройството с повишени привилегии. По предварителни оценки, проблемите засягат поне 200 модела устройства от 65 различни доставчици, включително различни модели безжични маршрутизатори Asus, A-Link, Beeline, Belkin, Buffalo, D-Link, Edison, Huawei, LG, Logitec, MT-Link, Netgear, Realtek, Smartlink, UPVEL, ZTE и Zyxel.
Проблемът обхваща различни класове безжични устройства на базата на SoC RTL8xxx, от безжични маршрутизатори и усилватели на Wi-Fi, до IP камери и интелигентни устройства за управление на осветлението. В устройствата на база чиповете RTL8xxx се използва архитектура, която включва инсталирането на два SoC — на първия се инсталира фърмуерът на производителя на базата на Linux, а на втория се изпълнява отделна оредкостена Linux среда с реализация на функции на точка за достъп. Съставките на втората среда се основават на стандартни компоненти, предоставяни от Realtek в SDK. Посочените компоненти включително обработват данни, постъпили в резултат на изпращане на външни заявки.
Уязвимостите засягат продукти, в които се използват Realtek SDK v2.x, Realtek «Jungle» SDK v3.0-3.4 и Realtek «Luna» SDK до версия 1.3.2. Поправка вече е издадена в обновлението на Realtek «Luna» SDK 1.3.2a, а също и се подготвят за публикуване пачове за Realtek «Jungle» SDK. За Realtek SDK 2.x не се планира издаване на поправки, тъй като поддръжката на тази версия вече е прекратена. За всички уязвимости са предоставени работещи прототипи на експлоити, позволяващи изпълнението на собствен код на устройството.
Идентифицираните уязвимости (първите две получават ниво на опасност 8.1, а останалите — 9.8):
- CVE-2021-35392 — преливане на буфер в процесите mini_upnpd и wscd, реализиращи функционалността „WiFi Simple Config“ (mini_upnpd обработва пакети SSDP, а wscd освен поддръжката на SSDP се занимава с обслужването на заявки UPnP на базата на протокола HTTP). Нападателят може да постигне изпълнение на собствен код чрез изпращане на специално оформени UPnP заявки „SUBSCRIBE“ с прекалено голямо значение на номера на порта в полето „Callback“. SUBSCRIBE /upnp/event/WFAWLANConfig1 HTTP/1.1 Host: 192.168.100.254:52881 Callback: NT: upnp:event
- CVE-2021-35393 — уязвимост в обработчиците на "WiFi Simple Config", която се проявява при използването на протокола SSDP (използва UDP и формат на запитвания, подобен на HTTP). Проблемът е причинен от използването на фиксиран буфер с размер 512 байта при обработката на параметъра "ST:upnp" в M-SEARCH съобщения, изпратени от клиенти за определяне наличието на услуги в мрежата.
- CVE-2021-35394 — уязвимост в процеса MP Daemon, отговорен за изпълнението на диагностични операции (ping, traceroute). Проблемът позволява подмяна на команди поради недостатъчна проверка на аргументите при изпълнението на външни утилити.
- CVE-2021-35395 — серия уязвимости в уеб интерфейси, основани на http-сервери /bin/webs и /bin/boa. В двете сървъри идентифицирани са типични уязвимости, причинени от липсата на проверка на аргументите преди стартиране на външни утилити с функцията system(). Разликите се свеждат само до използването на различни API за атака. И двата обработчика не включваха защита от атаки CSRF и техники за "DNS rebinding", позволяващи изпращането на заявки от външната мрежа при ограничен достъп до интерфейса само за вътрешната мрежа. В процесите по подразбиране също се използваше предварително зададено потребителско име supervisor/supervisor. Освен това в обработчиците бяха открити няколко препълвания на стека, проявяващи се при изпращане на аргументи с твърде голям размер. 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=
- Допълнително се отбелязва откритията на още няколко уязвимости в процеса UDPServer. Както се оказва, един от проблемите вече е бил открит от други изследователи през 2015 година, но не е бил напълно поправен. Проблемът е причинен от липсата на адекватна проверка на аргументите, предавани в функцията system() и може да бъде експлоатиран чрез изпращане на мрежов порт 9034 на стринг вида ‘orf;ls’. Освен това, в UDPServer е установено препълване на буфера поради небезопасната употреба на функцията sprintf, което също потенциално може да се използва за извършване на атаки.
Източник: opennet.ru
