Введение

Сетевой протокол

Простой протокол обнаружения служб (SSDP) — это сетевой протокол, основанный на семействе протоколов Интернет, предназначенный для рекламы и обнаружения сетевых служб и информации о доступности. Он обеспечивает это без использования серверных механизмов конфигурации, таких как протокол динамической конфигурации хоста (DHCP) или система доменных имен (DNS), а также без специальной статической конфигурации сетевого узла. SSDP является основой протокола обнаружения Universal Plug and Play (UPnP) и предназначен для использования в домашних или малых офисных сетях. Он был официально описан в черновике Интернета IETF компаниями Microsoft и Hewlett Packard в 1999 году. Хотя предложение IETF впоследствии устарело (в апреле 2000 года), SSDP был включен в стек протоколов UPnP, а описание окончательной реализации содержится в стандартах UPnP.

DDoS-атака

В 2014 году было обнаружено, что SSDP используется в DDoS-атаках, известных как SSDP-рефлексивная атака с усилением. Многие устройства, включая некоторые домашние маршрутизаторы, содержат уязвимость в программном обеспечении UPnP, позволяющую злоумышленнику получать ответы с порта 1900 на указанный им адрес назначения. Используя ботнет, состоящий из тысяч устройств, злоумышленники могут генерировать достаточную скорость передачи пакетов и занимать пропускную способность, чтобы перегрузить каналы связи и вызвать отказ в обслуживании.

Уязвимость Firefox

Firefox для Android версий до 79 не осуществлял надлежащую проверку схемы URL-адреса, полученного через SSDP, и был уязвим для удаленного выполнения кода. Злоумышленник в той же сети мог создать вредоносный сервер, имитирующий устройство с поддержкой трансляции, но вместо конфигурационного файла возвращать URL-адрес вида intent://. Firefox запускал бы это намерение (если оно поддерживалось устройством) и, таким образом, выполнял произвольный код. Это не является ошибкой протокола SSDP, а лишь следствием некорректной проверки, выполняемой службой трансляции Firefox.