SSDP

SSDP (Simple Service Discovery Protocol) — сетевой протокол, используемый в небольших сетях, в том числе домашних, для анонсирования и выявления сетевых сервисов, в первую очередь поддерживаемых архитектурой Universal Plug-and-Play (UPnP). SSDP представляет собой текстовый протокол на базе HTTPU, использующий XML. Обмен сообщениями в нем осуществляется посредством датаграмм UDP.

Оглавление:

Протокол SSDP является основой архитектуры UPnP. Он позволяет легко связывать между собой домашние устройства, работающие в рамках одной небольшой сети или подключенные к одной точке Wi-Fi. Среди таких устройств могут быть, например, смартфоны, принтеры и МФУ, умные телевизоры, медиаприставки, колонки, видеокамеры и пр. Чтобы SSDP работал, эти устройства должны поддерживать UPnP.

На устройствах и ПК, поддерживающих SSDP, эту функцию можно включить, отключить или приостановить. При включенной функции SSDP устройства сообщают информацию о себе и предоставляемых сервисах любому другому клиенту UPnP. Применяя SSDP, информацию о доступных сервисах предоставляют и компьютеры, подключенные к сети.

С помощью SSDP устройства и ПК не только «узнают» друг о друге, но и получают возможность каким-то образом взаимодействовать: обмениваться данными, запускать функции и сервисы на другом устройстве и пр.

Угрозы, связанные с SSDP

Однако необходимо помнить об обеспечении ИБ, поэтому нужно знать, что, во-первых, сам по себе протокол SSDP не обеспечивает шифрования (хотя, конечно, не препятствует устройствам обмениваться зашифрованными данными), и, во-вторых, во многих устройствах, предназначенных для использования в домашних условиях или небольшом офисе, функция поддержки SSDP по умолчанию включена, что создает риски несанкционированного доступа. Следовательно, эту функцию нужно держать отключенной, а включать лишь тогда, когда она реально нужна, и следить за тем, чтобы она была отключена на каждом устройстве, которое в данный момент ее не использует.

Проверить, включена ли служба обнаружения SSDP на вашем ПК под управлением Windows, можно с помощью команды services.msc. Чтобы убедиться в том, что поддержка SSDP включена на том или ином устройстве, следует внимательно изучить инструкцию к нему и проверить настройки.

Кроме того, необходимо помнить, что особенности SSDP могут быть использованы при реализации DDoS-атак типа «SSDP-амплификация».

DDoS-атаки с использованием SSDP

Эти атаки сетевого уровня (L3) используют уязвимости протокола SSDP, вероятно, ставшие следствием стремления его разработчиков максимально упростить взаимодействие устройств в небольшой сети. К сожалению, эта простота реализована в ущерб безопасности.

В самом общем виде подключение нового устройства выглядит следующим образом. Чтобы узнать, какие из устройств уже присутствуют в сети, добавляемое в нее устройство с включенной функцией SSDP отправляет поисковый запрос к другим устройствам на зарезервированный адрес и порт (239.255.255.250:1900), применяя «веерную рассылку», или мультивещание. В запросе устройство указывает соответствующий своему типу шаблон, или цель. В ответ на запрос каждое из имеющихся в сети устройств, поддерживающих в данный момент SSDP, отправляет UDP-сообщение с информацией о себе на IP-адрес источника и порт, с которого был отправлен запрос.

Фокус в том, что в рамках протокола SSDP проверка местоположения отправителя сообщения не производится, поэтому устройства готовы отвечать не только на запросы «соседей», но и на запросы, отправленные извне. Исключить такие запросы может и должен межсетевой экран (он же брандмауэр или firewall). Но, во-первых, владельцы сети далеко не всегда его устанавливают, и во-вторых, в установленном межсетевом экране порт 1900 нередко остается открытым. И поскольку ответ на запрос SSDP может быть в разы, а то и в десятки раз длиннее, чем сам запрос, становится возможной атака с усилением (SSDP-амплификация): фальшивый запрос, «прилетевший» из внешней сети и содержащий в качестве обратного IP-адреса адрес узла-жертвы, может вызвать многократно усиленный ответ и отправить его жертве. Ну а дальше — как в классическом сценарии DDoS: либо канал связи узла-жертвы окажется забит «мусором», либо сам узел «захлебнется», пытаясь обработать мощный поток SSDP-ответов.

Чтобы минимизировать атаки на основе SSDP, необходимо:

  • заблокировать как входящий, так и исходящий UDP-порт 1900 в межсетевом экране для входящего трафика;
  • использовать BGP flowspec, чтобы ограничить входящий трафик с этого порта и на этот порт;
  • крайне осторожно использовать сервисы на основе UDP, поскольку DDoS-атаки на базе этого протокола сложнее отражать;
  • регулярно сканировать подключенные к сети устройства на наличие включенной функции SSDP и отключать ее всегда и везде, если она в данный момент не требуется.