Navigation und Service

CERT-Bund Reports:

Offene Memcached-Server

Memcached ist ein Open-Source Cache-Server zum einfachen Hinterlegen und Abholen von Daten aus dem Arbeitsspeicher. Memcached wird häufig in Verbindung mit Web-Applikationen eingesetzt. In der Standardkonfiguration lauscht memcached auf Port 11211/tcp und (bis einschließlich Version 1.5.5) zusätzlich auf Port 11211/udp.

Problem

Per UDP offen aus aus dem Internet erreichbare memcached-Server werden regelmäßig für DDoS-Reflection-Angriffe gegen IT-Systeme Dritter missbraucht. Aufgrund des dabei erreichbaren extrem hohen Verstärkungsfaktors stellt dies ein erheblichen Gefahrenpotenzial dar.

Ist ein memcached-Server offen aus dem Internet per TCP oder UDP erreichbar und wurde keine SASL-Authentifizierung konfiguriert, können Angreifer nach Belieben die mittels memcached verwalteten Daten auslesen, modifizieren oder löschen. Dies ermöglicht Angreifern ggf. das Ausspähen von sensiblen Informationen wie beispielsweise Zugangsdaten zu Web-Applikationen, Kundendaten von Online-Shops oder andere vertrauliche Inhalte.

Prüfung

Dieser Abschnitt beschreibt, wie Sie Ihr System auf einen offenen Dienst prüfen können. Es existieren üblicherweise mehrere Wege, dies zu testen. Das hier beschriebene Verfahren ist eines davon. Für alle hier beschriebenen Testverfahren werden Programme verwendet, die in gängigen Linux/Unix-Distributionen enthalten sind. Um zu überprüfen, ob ein Dienst offen aus dem Internet erreichbar ist, sollte die Prüfung nicht auf dem System selbst oder im lokalen Netzwerk erfolgen, sondern von einem anderen System im Internet, zum Beispiel an einem Kabel/DSL-Internetzugang. In allen Beispielen muss 192.168.45.67 durch die IP-Adresse des Systems ersetzt werden, welches geprüft werden soll.

TCP

Um zu überprüfen, ob ein Memcached-Server per TCP offen aus dem Internet erreichbar ist, kann das Programm 'netcat' wie folgt verwendet werden:

$ echo "stats" | netcat 192.168.45.67 11211

Ein offen erreichbarer Memcached-Server liefert eine Antwort wie die folgende zurück:

STAT pid 1090
STAT uptime 1808125
STAT time 1483622758
STAT version 1.4.14 (Ubuntu)
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 57.424253
STAT rusage_system 54.322505
STAT curr_connections 5
STAT total_connections 643
STAT connection_structures 9
STAT reserved_fds 20

Wenn keine Verbindung zu dem Server hergestellt werden konnte, liefert netcat eine Fehlermeldung zurück:

netcat: connect to 192.168.45.67 port 11211 (tcp) failed: Connection refused

oder

netcat: connect to 192.168.45.67 port 11211 (tcp) failed: Connection timed out

UDP

Um zu überprüfen, ob ein Memcached-Server per UDP offen aus dem Internet erreichbar ist, kann das Programm 'netcat' wie folgt verwendet werden:

$ echo -en "\x00\x00\x00\x00\x00\x01\x00\x00stats\r\n" | netcat -u 192.168.45.67 11211

Ein offen erreichbarer Memcached-Server liefert eine Antwort wie die oben gezeigte.

Lösung

  • Beschränken Sie den Zugriff auf den Memcached-Server auf vertrauenswürdige Systeme, entweder in der Konfiguration des Memcached-Servers oder durch Blockieren eingehender Verbindungen aus dem Internet auf die Ports 11211/tcp und 11211/udp in der Firewall.
  • Der UDP-Port wird üblicherweise nicht benötigt. Starten Sie memcached mit der Option "-U 0", um diesen zu deaktivieren.
  • Halten Sie Ihre Memcached-Installation auf dem aktuellen Stand. Installieren Sie verfügbare Sicherheitsupdates zeitnah.

Weitere Informationen