Уязвимость в KCodes NetUSB в роутерах D-Link, NETGEAR, TP-LINK, Trendnet, ZyXEL и других

Как вы можете знать, некоторые производители роутеров включают в свою продукцию возможность использовать подключенные в роутер USB-устройства через TCP/IP, используя ПО KCodes NetUSB и свой собственный протокол. Технология позволяет подключать любые типы устройств: принтеры, флешки, веб-камеры, клавиатуры, звуковые карты, т.к. просто инкапсулирует USB в IP.Специалисты из SEC Consult обнаружили вопиющую уязвимость на всех роутерах, поддерживающих данную технологию — переполнение буфера на стеке в режиме ядра, которое может привести к удаленному выполнению кода.Модуль ядра NetUSB.ko, который прослушивает порт 20005, даже если в роутер не подключено ни одного USB-устройства, для аутентификации использует шифрование AES со статическим ключом (который, конечно же, есть и в ПК-клиенте), что уже позволяет злоумышленнику удаленно воспользоваться подключенным USB-устройством. Однако, главная уязвимость заключается в фиксированном размере буфера для имени компьютера в функции run_init_sbus (), принимающего не более 64 символов. Переполнение этого буфера и приводит к переполнению стека в ядре:

int computername_len; char computername_buf[64]; // connection initiation, handshake len = ks_recv (sock, &computername_len, 4, 0); // … len = ks_recv (sock, computername_buf, computername_len, 0); // boom! Уязвимость присутствует во многих популярных и современных роутерах. Производители используют разные маркетинговые имена для функциональности NetUSB: у NetGear она называется ReadySHARE, а другие просто называют ее «общий доступ к принтеру» или «общий доступ к USB-порту».Уязвимость подтверждена на следующих роутерах, с последней версией прошивки: TP-Link TL-WDR4300 V1 TP-Link WR1043ND v2 NETGEAR WNDR4500 Хоть NetUSB на этих роутерах работает только на LAN-портах, исследователи обнаружили некоторое количество открытых портов 20005 в интернете. Пока неясно, произошло ли это из-за неправильных настроек по умолчанию, или же пользователи сами открыли доступ извне.Неполный список потенциально уязвимых роутеров, в коде прошивок которых присутствует NetUSB D-Link DIR-615 CNETGEAR AC1450NETGEAR CENTRIA (WNDR4700/4720)NETGEAR D6100NETGEAR D6200NETGEAR D6300NETGEAR D6400NETGEAR DC112ANETGEAR DC112A (Zain)NETGEAR DGND4000NETGEAR EX6200NETGEAR EX7000NETGEAR JNR3000NETGEAR JNR3210NETGEAR JR6150NETGEAR LG6100DNETGEAR PR2000NETGEAR R6050NETGEAR R6100NETGEAR R6200NETGEAR R6200v2NETGEAR R6220NETGEAR R6250NETGEAR R6300v1NETGEAR R6300v2NETGEAR R6700NETGEAR R7000NETGEAR R7500NETGEAR R7900NETGEAR R8000NETGEAR WN3500RPNETGEAR WNDR3700v5NETGEAR WNDR4300NETGEAR WNDR4300v2NETGEAR WNDR4500NETGEAR WNDR4500v2NETGEAR WNDR4500v3NETGEAR XAU2511NETGEAR XAUB2511TP-LINK Archer C2 V1.0 (Fix planned before 2015/05/22)TP-LINK Archer C20 V1.0 (Not affected)TP-LINK Archer C20i V1.0 (Fix planned before 2015/05/25)TP-LINK Archer C5 V1.2 (Fix planned before 2015/05/22)TP-LINK Archer C5 V2.0 (Fix planned before 2015/05/30)TP-LINK Archer C7 V1.0 (Fix planned before 2015/05/30)TP-LINK Archer C7 V2.0 (Fix already released)TP-LINK Archer C8 V1.0 (Fix planned before 2015/05/30)TP-LINK Archer C9 V1.0 (Fix planned before 2015/05/22)TP-LINK Archer D2 V1.0 (Fix planned before 2015/05/22)TP-LINK Archer D5 V1.0 (Fix planned before 2015/05/25)TP-LINK Archer D7 V1.0 (Fix planned before 2015/05/25)TP-LINK Archer D7B V1.0 (Fix planned before 2015/05/31)TP-LINK Archer D9 V1.0 (Fix planned before 2015/05/25)TP-LINK Archer VR200v V1.0 (Fix already released)TP-LINK TD-VG3511 V1.0 (End-Of-Life)TP-LINK TD-VG3631 V1.0 (Fix planned before 2015/05/30)TP-LINK TD-VG3631 V1.0 (Fix planned before 2015/05/31)TP-LINK TD-W1042ND V1.0 (End-Of-Life)TP-LINK TD-W1043ND V1.0 (End-Of-Life)TP-LINK TD-W8968 V1.0 (Fix planned before 2015/05/30)TP-LINK TD-W8968 V2.0 (Fix planned before 2015/05/30)TP-LINK TD-W8968 V3.0 (Fix planned before 2015/05/25)TP-LINK TD-W8970 V1.0 (Fix planned before 2015/05/30)TP-LINK TD-W8970 V3.0 (Fix already released)TP-LINK TD-W8970B V1.0 (Fix planned before 2015/05/30)TP-LINK TD-W8980 V3.0 (Fix planned before 2015/05/25)TP-LINK TD-W8980B V1.0 (Fix planned before 2015/05/30)TP-LINK TD-W9980 V1.0 (Fix already released)TP-LINK TD-W9980B V1.0 (Fix planned before 2015/05/30)TP-LINK TD-WDR4900 V1.0 (End-Of-Life)TP-LINK TL-WR1043ND V2.0 (Fix planned before 2015/05/30)TP-LINK TL-WR1043ND V3.0 (Fix planned before 2015/05/30)TP-LINK TL-WR1045ND V2.0 (Fix planned before 2015/05/30)TP-LINK TL-WR3500 V1.0 (Fix planned before 2015/05/22)TP-LINK TL-WR3600 V1.0 (Fix planned before 2015/05/22)TP-LINK TL-WR4300 V1.0 (Fix planned before 2015/05/22)TP-LINK TL-WR842ND V2.0 (Fix planned before 2015/05/30)TP-LINK TL-WR842ND V1.0 (End-Of-Life)TP-LINK TX-VG1530(GPON) V1.0 (Fix planned before 2015/05/31)Trendnet TE100-MFP1 (v1.0R)Trendnet TEW-632BRP (A1.0R)Trendnet TEW-632BRP (A1.1R/A1.2R)Trendnet TEW-632BRP (A1.1R/A1.2R/A1.3R)Trendnet TEW-634GRU (v1.0R)Trendnet TEW-652BRP (V1.0R)Trendnet TEW-673GRU (v1.0R)Trendnet TEW-811DRU (v1.0R)Trendnet TEW-812DRU (v1.0R)Trendnet TEW-812DRU (v2.xR)Trendnet TEW-813DRU (v1.0R)Trendnet TEW-818DRU (v1.0R)Trendnet TEW-823DRU (v1.0R)Trendnet TEW-MFP1 (v1.0R)Zyxel NBG-419N v2Zyxel NBG4615 v2Zyxel NBG5615Zyxel NBG5715

На данный момент, только TP-LINK выпустил исправления уязвимости для некоторых моделей, еще 40 моделей получат обновление чуть позже. Некоторые производители позволяют отключить NetUSB, но, по крайней мере, в NetGear такая функциональность отсутствует: нельзя ни просто отключить, ни закрыть порт через firewall.Список производителей, использующих NetUSB в своих продуктах, по информации из кодов драйвера AllnetAmbir TechnologyAMITAsanteAtlantisCoregaDigitusD-LinkEDIMAXEncore ElectronicsEngeniusEtopHardlinkHawkingIOGEARLevelOneLongshineNETGEARPCIPROLiNKSitecomTaifaTP-LINKTRENDnetWestern DigitalZyXEL

В KCodes невнятно отреагировали на сообщение об уязвимости, поэтому исследователи написали о ней напрямую производителям и CERT. Также, ребята разработали PoC, который (пока) не опубликовали.Информация об уязвимостиИнформация на сайте CERTЗаметка об уязвимости в блоге SEC Consult

© Habrahabr.ru