Schwachstelle im UPnP-Dienst

Üblicherweise wird Universal Plug and Play (UPnP) zur Ansteuerung von Geräten im lokalen Netzwerk genutzt.  Dies können sowohl Audio-Geräte als auch Drucker, Router, NAS-Geräte bzw. Haushaltssteuerungen sein.  Mit diesem Protokoll lassen sich Steuerbefehle über ein IP-basierendes Netzwerk austauschen und somit die Kommunikation zwischen den einzelnen Geräten komfortabel und ohne großen Konfigurationsaufwand gestalten.

Normalerweise stellt dieser Dienst in einem lokalen Netzwerk kein Problem dar. Problematisch wird es aber, wenn diese Geräte nicht nur auf Anfragen aus dem lokalen Netz antworten, sondern auch aus dem Internet.

Rapid7 fand bei eigenen Recherchen heraus, dass über 80 Millionen Geräten (sie sprechen von einzelnen IP-Adressen) über das Internet erreichbar sind. Betroffen sind davon laut  Rapid7 Geräte von über 1500 Herstellern.  Darunter fallen z.B. D-Link, Fujitsu, Huawei, Logitech, Netgear, Siemens, Sony, TP-Link und Zyxel. Bislang sollen Geräte von AVM (z.B. FritzBox) und der Deutschen Telekom nicht betroffen sein.

Somit bekommen potenzielle Angreifer die Gelegenheit, vorhandene Schwachstellen der Firmware der einzelnen Geräte auszunutzen und so möglicherweise in das lokale Netzwerk einzudringen.

Etwa 40 bis 50 Millionen Geräte sollen nach Rapid7 mit UPnP-Schwachstellen behaftet sein.  Viele wurden schon in den letzten 12 Jahren entdeckt und diskutiert. Trotzdem setzen viele Hersteller die fehlerhafte Software als Firmware in ihren Produkten ein bzw. empfanden es nicht als notwendig, die Fehler zu beseitigen.

In einem von Rapid7 veröffentlichten Papier (Security Flaws in Universal Plug and Play – Unplug. Don’t Play.),  werden die Schwachstellen in drei Kategorien eingeteilt:

  • Schwachstellen in der Programmierung des UPnP Protokolls (SSDP), die ausgenutzt werden können um den Dienst anzugreifen und eigenen bösartigen Programmcode einzuschleusen.
  • Bloßlegen  von Informationen  über das UPnP control interface (SOAP). Hiermit können Daten über das Internet aus  dem lokalen Netzwerk ausgelesen werden.
  • Schwachstellen in der Programmierung der UPnP HTTP- und SOAP- Anwendungen, die ausgenutzt werden können um die Anwendungen anzugreifen und eigenen bösartigen Programmcode einzuschleusen.

 

Folgende Produkte sind gemäß den Untersuchungen von Rapid7 mit Schwachstellen behaftet:

Produkte mit Schwachstellen: Portable SDK for UPnP Devices (libupnp)

Produkte mit Schwachstellen: MiniUPnP

Produkte mit Schwachstellen: SOAP API Exposure

 

Mittlerweile gibt es verschiedene Möglichkeiten das eigene Netzwerk auf diese Schwachstelle zu prüfen. Rapid7 stellt selbst eine Tool zum Download zur Verfügung. Außerdem besteht die Möglichkeit, das eigene Netzwerk online zu testen.

rapid7

Auf der Webseite von Heise Security lässt sich ein ebenfalls ein Netzwerkcheck online ausführen.

heisec

Anwender des Metasploit-Frameworks können diesen Test sowohl online als auch im lokalen Netzwerk ausführen. Dazu wird ein entsprechendes  Modul bereitgestellt. Es lässt sich in der Metasploit-Konsole in einem lokalen Netzwerk wie folgt einsetzen:

 

msf >  use auxiliary/scanner/upnp/ssdp_msearch
msf  auxiliary(ssdp_msearch) > show options 

Module options (auxiliary/scanner/upnp/ssdp_msearch):

   Name             Current Setting  Required  Description
   ----             ---------------  --------  -----------
   BATCHSIZE        256              yes       The number of hosts to probe in each set
   CHOST                             no        The local client address
   REPORT_LOCATION  false            yes       This determines whether to report the UPnP endpoint service advertised by SSDP
   RHOSTS                            yes       The target address range or CIDR identifier
   RPORT            1900             yes       The target port
   THREADS          1                yes       The number of concurrent threads

msf  auxiliary(ssdp_msearch) > set RHOSTS 192.168.111.0/24
RHOSTS => 192.168.111.0/24
msf  auxiliary(ssdp_msearch) > set VERBOSE true
VERBOSE => true
msf  auxiliary(ssdp_msearch) > run

[*] Sending UPnP SSDP probes to 192.168.111.0->192.168.111.255 (256 hosts)

*] 192.168.111.0:1900 - SSDP - sending M-SEARCH probe
[*] 192.168.111.1:1900 - SSDP - sending M-SEARCH probe
[*] 192.168.111.2:1900 - SSDP - sending M-SEARCH probe
[*] 192.168.111.3:1900 - SSDP - sending M-SEARCH probe
[*] 192.168.111.4:1900 - SSDP - sending M-SEARCH probe

									

Mit der Variable RHOSTS wird das zu prüfende Netzwerk eingestellt. Hierbei kann es sich sowohl über ein lokales Netzwerk als auch um  eine IP-Adresse im Internet handeln.

Das Setzen der  Variable VERBOSE auf true bewirkt ein eine erweiterte Ausgabe der Scanergebnisse.

Als Ergebnis werden alle UPnP-fähigen Geräte im Netzwerk mit IP-Adresse dargestellt. Das Gerät mit der IP-Adresse 192.168.111.254 (letzte Zeile des Scans) ist mit einer Schwachstelle behaftet. Hier werden die relevanten CVEs aufgelistet.

[*] 192.168.111.1:1900 SSDP RAIDiator/4.1 DLNADOC/1.50 UPnP/1.0 ReadyDLNA/1.0.25 | http://192.168.111.1:8199/rootDesc.xml | uuid:4d6444e69-444c-164e-9d41-c43dc74941c5::upnp:rootdevice
[*] 192.168.111.7:1900 SSDP FRITZ!Box Fon WLAN 7240 (UI) UPnP/1.0 AVM FRITZ!Box Fon WLAN 7240 (UI) 73.05.17 | http://192.168.111.7:49000/igddesc.xml | uuid:75806709-absd-40e7-3773c-0024FE12C848::upnp:rootdevice
[*] 192.168.111.9:1900 SSDP Net-OS 5.xx UPnP/1.0 | http://192.168.111.9:3278/etc/linuxigd/gatedesc.xml
[+] 192.168.111.254:1900 SSDP miniupnpd/1.0 UPnP/1.0 | vulns:2 (CVE-2013-0229, CVE-2013-0230)
									

Sollte eines der mit der Schwachstelle behafteten Geräte aus dem Internet erreichbar sein, so hilft nur ein Firmware-Update des Herstellers. Das könnte aber Probleme bereiten, wenn das Gerät schon etwas älter ist und möglicherweise kein Support des Herstellers mehr besteht. Ist dies der Fall, so sollte das Gerät zeitnah ausgetauscht werden.

Entdeckt man eine Schwachstelle in einem lokalen Netzwerk, so sollte die UPnP-Funktion deaktiviert werden. Als Alternative sollte die Kommunikation vom und in das Internet durch eine Firewall unterbunden werden. Auf alle Fälle sollte man den Scan danach erneut starten, um zu überprüfen, ob das Problem tatsächlich damit gelöst ist.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Diese Seite verwendet Cookies, um die Nutzerfreundlichkeit zu verbessern. Mit der weiteren Verwendung stimmst du dem zu.

Datenschutzerklärung