Уявзимость TP-Link TDDP (Buffer Overflow)
В статье представлен подробный анализ конкретной уязвимости в устройствах TP-Link, о которой сообщалось в 2020 году, но которой не присвоен статус CVE.
Причины возникновения уязвимости переполнения буфера TDDP в TP-Link
Уязвимость TDDP-протокола TP-Link (протокол отладки устройств TP-LINK), связанная с переполнением буфера, в первую очередь связана с обработкой протоколом UDP-пакетов. TDDP, двоичный протокол, используемый для целей отладки, обрабатывает пакеты с помощью одного UDP-пакета, который при неправильной обработке может представлять угрозу безопасности. Конкретной причиной переполнения буфера является отсутствие надлежащей проверки длины данных во время анализа этих UDP-пакетов. Эта оплошность приводит к переполнению памяти, что приводит к повреждению структуры памяти устройства
Последствия уязвимости
Основной причиной уязвимости, связанной с переполнением буфера TDDP в TP-Link, является отказ в обслуживании (DoS). Это происходит, когда переполнение приводит к повреждению структуры памяти, в результате чего устройство выходит из строя или перестает отвечать на запросы. Кроме того, существует вероятность удаленного выполнения кода, что может позволить злоумышленнику выполнить произвольный код на устройстве. Это может привести к несанкционированному доступу к сети, краже данных или дальнейшему использованию сетевых ресурсов
Методы использования
Использование уязвимости переполнения буфера TDDP в TP-Link связано с отправкой созданных UDP-пакетов, которые превышают установленные протоколом пределы буфера. Этого можно достичь, манипулируя длиной данных пакета, чтобы она превышала то, что может обработать буфер, что приводит к переполнению. Такие инструменты, как Shambles, могут использоваться для выявления, устранения, эмуляции и проверки таких условий переполнения буфера. Успешное использование может позволить злоумышленникам вызвать отказ в обслуживании или потенциально выполнить произвольный код на устройстве.
Стратегии смягчения последствий
📌Обновления встроенного ПО: Регулярное обновление встроенного по устройств TP-Link до последней версии может помочь устранить уязвимости и повысить безопасность.
📌Сегментация сети: Размещение критически важных устройств в отдельных сегментах сети может ограничить распространение потенциальных атак.
📌Правила брандмауэра: Настройка брандмауэров для ограничения входящего трафика через UDP-порт 1040, который используется TDDP, может предотвратить несанкционированный доступ.
📌Сканеры уязвимостей: Регулярное сканирование уязвимостей средствами безопасности может помочь выявить их и устранить до того, как они будут использованы.
Обзор TDDP
📌Протокол отладки устройств TP-Link (TDDP): Двоичный протокол, используемый в основном для целей отладки, который работает с помощью одного UDP-пакета. Этот протокол описан в патенте CN102096654A.
📌Структура пакета: Пакет TDDP содержит такие поля, как версия, тип, код, ReplyInfo, PktLength, PktID, подтип, Резерв и дайджест MD5, которые имеют решающее значение для работы протокола.
Анализ уязвимых функций:
📌tddpEntry (sub_4045f8 0×004045F8): Эта функция постоянно проверяет входящие данные с помощью функции recvfrom и передает данные в функцию TddpPktInterfaceFunction без проверки размера полученных данных.
📌GetTddpMaxPktBuff (sub_4042d0 0×004042D0): Возвращает размер буфера, равный 0×14000.
📌tddp_versionTwoOpt (sub_404b40 0×00405990) и tddp_deCode (sub_404fa4 0×00405014): функции, участвующие в обработке и декодировании пакета TDDP. Они обрабатывают расшифровку данных с помощью DES и проверяют целостность расшифрованных данных.
Механизм использования
📌Триггер переполнения буфера: Уязвимость срабатывает, когда длина пакета, указанная в пакете TDDP, превышает размер буфера (0×14000), что приводит к переполнению буфера.
📌Расшифровка и проверка MD5: Для расшифровки используется функция des_min_do, и дайджест пакета MD5 сверяется с дайджестом данных MD5. Если длина пакета превышает размер буфера, это приводит к повреждению памяти и отказу в обслуживании (DoS).
Проверка концепции (PoC)
📌Настройка: PoC включает в себя настройку виртуальной машины (ВМ) с встроенным ПО и запуск службы tddpd.
📌Код эксплойта: Документ содержит код на Python, который создает пакет TDDP с определенными полями, манипулируемыми для запуска переполнения буфера.
📌Результат: Выполнение PoC приводит к сбою программы tddpd, что подтверждает уязвимость.
Вывод
📌Последствия: Уязвимость приводит к отказу в обслуживании и потенциально позволяет выполнять удаленный код при дальнейшем использовании.
📌Рекомендации: Для устранения таких уязвимостей рекомендуется регулярно обновлять и исправлять, сегментировать сеть и надлежащим образом проверять поступающие данные.