Сотрудник Google выложил 0day-эксплойт для маршрутизаторов TP-Link SR20
Домашний маршрутизатор TP-Link SR20 появился на рынке в 2016 году
Маршрутизаторы TP-Link известны многочисленными уязвимостями. Но обычно производитель старается вовремя опубликовать патчи и новые версии прошивки после того, как получает информацию о баге. Но сейчас компания не успела уложиться в 90 дней, положенные по негласным правилам — и поплатилась за это. Инженер Google Мэтью Гарретт опубликовал в открытом доступе эксплойт, допускающий возможность удалённого исполнения кода с получением рутового доступа.
It’s been over 90 days since I reported it and @TPLINK never responded, so: arbitrary command execution on the TP-Link SR20 smart hub and router (and possibly other TP-Link device)
— Matthew Garrett (@mjg59) March 28, 2019
Мэтью Гарретт допускает, что эксплойт сработает и на других устройствах TP-Link, а не только на домашнем маршрутизаторе SR20.
38-строчный скрипт показывает, что можно выполнить любую команду с рутовыми правами root, без аутентификации.
В твиттере Гарретт объяснил, что устройства TP-Link часто поддерживают протокол отладки TDDP (TP-Link Device Debug Protocol), в котором раньше было найдено несколько уязвимостей. Например, первая версия протокола не требует пароля для обмена пакетами по TDDP.
«В SR20 по-прежнему остались некоторые команды из первой версии, одна из которых (команда 0×1f, запрос 0×01), похоже, предназначена для какой-то проверки конфигурации, — написал Гарретт. — Вы посылаете имя файла, точку с запятой, а затем аргумент».
Маршрутизатор отвечает на запрос по TFTP, запрашивает имя файла, импортирует его в интерпретатор Lua, работающий с рутовыми правами, и передаёт аргумент функции config_test () в импортированном файле.
The os.execute () method allows you to execute whatever you want, and you’re running as root, so victory. tddp is listening on all interfaces but the default firewall rules block WAN access, so this is local network only.
— Matthew Garrett (@mjg59) March 28, 2019
В такой системе метод os.execute()
позволяет выполнить любую команду с рутовыми правами.
Правда, масштаб бедствия не слишком большой, потому что конфигурация файрвола по умолчанию блокирует сетевой доступ по TDDP. То есть злоумышленник не может взломать произвольный маршрутизатор SR20, который обнаружит в интернете путём сканирования через Shodan. Нужно сначала установить трояна на компьютер, который подключен к маршрутизатору, и уже с него работать с маршрутизатором.
Гарретт решил опубликовать информацию для всех, чтобы компания внедрила рабочий какой-нибудь канал для сообщения об уязвимостях и больше не оставляла демоны отладки в производственной прошивке.