Бэкдоры на заднем дворе D-Link

Уязвимости в маршрутизаторе D-Link DIR-620

“Если хочешь изменить мир – начни с себя!” Для индустрии кибербезопасности эту расхожую фразу можно перефразировать так: “Если хочешь сделать мир безопаснее – начни с умных устройств в своем доме”. А если точнее, то начать следует с маршрутизатора – это ядро любой домашней сети, а также интересный объект с точки зрения кибербезопасности. В случаем, если вы получили маршрутизатор от интернет-провайдера в рамках контракта, то исследовать его безопасность интересно вдвойне.

Масштаб проблемы

Примечание. Представленная ниже информация об уязвимостях предоставлена соответствующим компаниям и агентствам (D-Link, интернет-провайдеру, MITRE Corporation) и публикуется в соответствии с Политикой распространения информации об уязвимостях.

В настоящей публикации описывается четыре уязвимости в маршрутизаторе D-Link DIR-620 и учетные записи, жестко “зашитые” в его прошивке. Этой прошивка устанавливается на различных моделях маршрутизаторов D-Link, которые один из крупнейших российских интернет-провайдеров предоставляет своим клиентам. Мы утверждаем это исходя из того факта, что маршрутизатор предоставляется клиентам в рамках стандартного клиентского контракта, при этом название провайдера присутствует в учетных данных, в строке имени пользователя. Вероятно, по этой причине эта конкретная модель так популярна в России и странах СНГ. Домашние маршрутизаторы чаще всего недоступны напрямую, так как находятся за NAT интернет-провайдера и поэтому не попадают в статистику.

Распределение зараженных устройств по странам (доля от общего количества зараженных маршрутизаторов)

Объект исследования

В последних версиях прошивки по умолчанию прописаны учетные данные, эксплуатация которых может позволить злоумышленнику без авторизации получить привилегированный доступ к прошивке и извлечь из нее чувствительную информацию, например, файлы конфигурации с паролями в открытом виде. Уязвимый веб-интерфейс позволяет злоумышленнику без авторизации выполнить произвольный код JavaScript в пользовательском браузере и произвольные команды в операционной системе маршрутизатора.

Пример интерфейса прошивки (вероятно, кастомизированного под нужды провайдера)

Эти проблемы были впервые обнаружены в прошивке версии 1.0.37. Некоторые из выявленных уязвимостей были также обнаружены в других версиях прошивки:

  1. v.1.3.1
  2. v.1.3.3
  3. v.1.4.0
  4. v.2.0.22

Техническое описание

Уязвимость проверки пользовательских данных (отраженные XSS) (CVE-2018-6212)

В интерфейсе администратора есть поле ввода Quick search (“быстрый поиск”), которое позволяет пользователю ввести какие-либо данные – именно это единственное поле, которое содержит уязвимость, и побудило меня заглянуть в эту прошивку глубже. Это поле позволяет реализовать атаку межсайтового скриптинга (XSS), которая становится возможной в результате отсутствия фильтрации специальных символов в пользовательском вводе, а также некорректной обработки объекта XMLHttpRequest. (Эта уязвимость обнаружена в версии 1.3.3, но присутствует и в других версиях.)

Демонстрация отраженной XSS

Параметры уязвимости:
CVSS v3 Base Score: 6.1
Vector: (CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N)

Заданные по умолчанию учетные данные для веб-панели (CVE-2018-6213)

Я скачал прошивку и извлек файловую систему. Большинство прошивок на базе Linux чаще всего содержат BusyBox – программный продукт, содержащий урезанные Unix-утилиты для встраиваемых систем. Зная, какие утилиты входят в этот набор по-умолчанию, достаточно легко распознать проприетарные исполняемые файлы, которые не входят в оригинальный набор инструментов BusyBox и в которые, вероятно, были внесены изменения с учетом нужд провайдера.

Я извлек строки из исполняемого файла веб-сервера (httpd), и тут же мне в глаза бросилась строка “anonymous”. Я посмотрел функцию, в которой используется эта строка.

Код, отвечающий за проверку пользовательских учетных данных, содержит жестко прописанные учетные данные

Это данные к привилегированной учетной записи, и они не могут быть изменены администратором. При помощи привилегированного доступа к веб-панели злоумышленник может получить конфиденциальную информацию.

Параметры уязвимости:
CVSS v3 Base Score: 6.5
Vector: (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)

Внедрение команд ОС возможна из-за некорректной обработки следующего параметра при пользовательском вводе (уязвимость обнаружена в прошивке версии 1.0.3):
/index.cgi?<…>&res_buf

Пример запроса, содержащего инъекцию команды ОС

Параметры уязвимости:
CVSS v3 Base Score: 9.1
Vector: (/CVSS:3.0/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)

Заданные по умолчанию учетные данные для Telnet (CVE-2018-6210)

При помощи указанной уязвимости внедрения команд ОС злоумышленник может извлечь учетные данные Telnet (они были обнаружены в прошивке версии 1.0.3). Например, используя заданные по умолчанию учетные данные, можно получить административный доступ к маршрутизатору (фрагмент строки “etc/passwd”).

Демонстрация уязвимости, позволяющей инъекцию команды ОС

Параметры уязвимости:
CVSS v3 Base Score: 10.0
Vector: (/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

Как закрыть уязвимость

  • Ограничить доступ к веб-панели, используя белый список доверенных IP-адресов;
  • Запретить доступ к Telnet;
  • Регулярно менять логин и пароль администратора к сервисам маршрутизатора.

Коммуникация по проблеме

15.01.2018: отчет отправлен производителю
15.01.2018: отчет отправлен интернет-провайдеру
24.01.2018: получен ответ от интернет-провайдера
06.02.2018: получен ответ от производителя: “Устройства не предназначались для реализации в розницу и поставлялись клиентам через федерального оператора, запросившего кастомизацию”.

Если вы хотите получать другие материалы, касающиеся обнаружения и исследования уязвимостей, подписывайтесь на рассылку:

Публикации на схожие темы

Leave a Reply

Your email address will not be published. Required fields are marked *