ИБ-специалист Педро Риберио (Pedro Ribeiro) обнаружил ряд опасных уязвимостей в роутерах NETGEAR WNR2000. Проблемы позволяют атакующему удаленно скомпрометировать девайс и взять его под свой контроль.
Описанные исследователем проблемы можно эксплуатировать через LAN, однако Риберио пишет, что если на устройстве включена функция удаленного администрирования, атаки также можно осуществить и через интернет. По данным специалиста, сейчас через Shodan можно обнаружить около 10 000 уязвимых роутеров, у которых данная функция активна. Сколько еще устройств уязвимы перед локальными атаками, неизвестно.
Хорошая новость: все баги были найдены на устройствах WNR2000v5, где удаленное администрирование по умолчанию отключено. Однако исследователь полагает, что 3 и 4 версии роутеров тоже уязвимы, хотя он не проверял эту догадку на практике.
Проблема в том, что NETGEAR WNR2000 позволяет администратору выполнять различные функции посредством CGI-скрипта apply.cgi. Данный скрипт вызывается, когда изменяются настройки интернета, WLAN, производится сброс к заводской конфигурации, перезагрузка роутера и так далее. Однако на самом деле apply.cgi – это не совсем скрипт, а функция, вызываемая HTTP-сервером (uhttpd), когда он получает данную последовательность в URL.
Отреверсив uhttpd, Риберио обнаружил, что неавторизованный пользователь может выполнить те же действия, что и администратор, если вызовет apply_noauth.cgi. Но если перезагрузить роутер атакующий может беспрепятственно, то для выполнения других команд, например, изменения настроек интернета или извлечения пароля администратора, ему придется включить в URL переменную timestamp.
«Timestamp генерируется каждый раз, когда целевая страница достигнута, он играет роль своеобразного анти-CSRF токена. Функцию, генерирующую timestamp, удалось отреверсить благодаря некорректному использованию генератора случайных чисел. Токен можно подобрать менее чем за 1000 попыток», — объясняет исследователь.
В результате, эксплуатируя данную уязвимость, а также еще один баг, допускающий утечку информации, атакующий может узнать пароль администратора, воспользоваться им для включения Telnet, и root shell в его полном распоряжении.
Также исследователь описывает проблему переполнения буфера стека, которая позволяет исполнить произвольный код и полностью перехватить контроль над устройством. Чтобы добиться этого, вновь придется обратиться к apply_noauth.cgi и атаковать timestamp. Данная проблема опасна как для LAN, так и для WAN.
Риберио сообщил обо всех найденных проблемах разработчикам NETGEAR еще в сентябре 2016 года, однако так и не дождался ответа компании. Выждав немного, в ноябре исследователь обратился за помощью к коллегам из CERT, но те тоже не сумели связаться с разработчиком уязвимых роутеров. В итоге 20 декабря 2016 года Риберио решил обнародовать данные об уязвимостях публично.
Напомню, что это не первый инцидент, связанный с проблемами в оборудовании NETGEAR в этом месяце. Ранее, в декабре 2016 года, во многих моделях роутеров компании обнаружили критическую уязвимость, которая позволяет удаленно выполнить на устройстве любую команду с root-привилегиями. Хуже того, для эксплуатации бага достаточно просто заманить пользователя на вредоносный сайт.