Simple Service Discovery Protocol

Abkürzung: SSDP

SSDP ist das Verfahren, mit dem Geräte im lokalen Netz einander finden. Es ist der Discovery-Teil von UPnP und beantwortet die Frage, wie ein Fernseher den Medienserver entdeckt, ohne dass jemand eine Adresse eingetragen hat.

Der Ablauf

SSDP kennt zwei Richtungen, beide über UDP und Multicast an die Adresse 239.255.255.250, Port 1900:

Suchen. Ein Gerät sendet eine M-SEARCH-Anfrage an die Multicast-Gruppe und nennt darin den gesuchten Dienstetyp. Passende Geräte antworten direkt per Unicast.

Ankündigen. Ein Gerät, das neu im Netz ist, sendet von sich aus eine NOTIFY-Nachricht mit ssdp:alive an die Gruppe. Beim geordneten Verschwinden folgt ssdp:byebye.

Beide Nachrichtentypen tragen ein CACHE-CONTROL-Feld mit einer Haltbarkeit. Erneuert ein Gerät seine Ankündigung nicht, verfällt der Eintrag bei den anderen — dasselbe Prinzip wie bei anderen Discovery-Verfahren, und der Grund, warum ein abgezogenes Gerät nach einigen Minuten aus den Listen verschwindet.

Die Nachrichten selbst sehen wie HTTP aus — Methode, Kopfzeilen, Leerzeile — laufen aber über UDP. Diese Mischform heißt HTTPU und ist der Grund, warum SSDP-Mitschnitte auf den ersten Blick wie Webverkehr wirken.

Was in der Antwort steht

Die eigentliche Information ist ein Verweis. Die Antwort enthält im LOCATION-Feld eine HTTP-Adresse, unter der eine Gerätebeschreibung in XML liegt.

Erst diese Beschreibung nennt Hersteller, Modell, Seriennummer und die angebotenen Dienste samt ihren Steuerungsadressen. SSDP transportiert also nicht die Fähigkeiten eines Geräts, sondern nur den Zeiger darauf.

SSDP-Reflection: das eigentliche Thema

Hier liegt der Grund, aus dem SSDP über den Heimnetz-Kontext hinaus bekannt ist.

Das Protokoll hat zwei Eigenschaften, die es für Angriffe attraktiv machen: Es arbeitet über UDP, dessen Absenderadresse sich fälschen lässt, und es antwortet mit deutlich mehr Daten, als die Anfrage enthält. Eine kurze M-SEARCH-Anfrage erzeugt eine Antwort mit allen Kopfzeilen — der Verstärkungsfaktor liegt bei etwa dreißig.

Ein Angreifer sendet also Anfragen an viele Geräte und trägt als Absender die Adresse seines Opfers ein. Die Antworten treffen das Opfer, vervielfacht. Das setzt voraus, dass die Geräte aus dem Internet erreichbar sind — und genau das war über Jahre bei Millionen von Routern der Fall, weil Port 1900 nach außen offen stand.

Daraus folgen zwei Betriebsregeln:

Port 1900 gehört nicht ins Internet. SSDP ist ein Protokoll für das lokale Netz; eine Erreichbarkeit von außen hat keinen legitimen Zweck. Prüfen lässt sich das mit einem Portscan von außen.

UPnP an der WAN-Schnittstelle abschalten. Die Einstellung heißt in Routern meist anders als die für das lokale Netz — und nur die lokale ist nützlich.

Was im Netz davon zu sehen ist

SSDP erzeugt stetigen Multicast-Verkehr: Jedes beteiligte Gerät kündigt sich regelmäßig an, jede Suche geht an alle. In Netzen mit vielen Geräten ist das ein messbarer Grundrauschen-Anteil, und im WLAN besonders unangenehm, weil Multicast dort mit niedriger Rate gesendet wird und entsprechend lange den Funkkanal belegt.

In größeren Installationen wird SSDP deshalb gezielt eingeschränkt — über IGMP Snooping, das den Multicast nur dorthin leitet, wo er gebraucht wird, oder über VLAN-Grenzen, die ihn gar nicht erst überschreiten. Letzteres hat die bekannte Nebenwirkung, dass Geräte in getrennten VLANs einander nicht mehr finden.

Abgrenzung

UPnP ist der Rahmen, dessen Discovery-Teil SSDP bildet. Die automatische Portfreigabe gehört zu UPnP, nicht zu SSDP.

mDNS mit DNS-SD löst dieselbe Aufgabe über eine andere Adresse und ein anderes Format und ist im Apple-Umfeld der Normalfall. Beide Verfahren laufen in vielen Netzen parallel.

WS-Discovery ist das Pendant im Windows-Umfeld, etwa bei Netzwerkdruckern.

LLDP findet Nachbargeräte auf Layer 2 und dient der Netzdokumentation, nicht der Dienstsuche.

Quellen

  • UPnP Device Architecture (Open Connectivity Foundation): Abschnitt Discovery

Erstellt: · Überarbeitet: