Öffentlich erreichbarer Container-Port
Ein veröffentlichter Port kann die Datenbank im Internet erreichbar machen.
Was ist Öffentlich erreichbarer Container-Port?
Wird ein Container-Port veröffentlicht, bindet Docker ihn standardmäßig an alle Netzwerkschnittstellen des Hosts. Eine bequeme Portzuordnung für die lokale Entwicklung kann so eine Datenbank im öffentlichen Internet exponieren, während die Host-Firewall den Port weiterhin als blockiert führt. Zuerst nehmen Sie die Sicht des Angreifers ein: Sie scannen den Host, verbinden sich mit einem alten gestohlenen Passwort direkt mit der Datenbank und lesen Mieterdaten ohne Umweg über die Anwendung. Danach binden Sie die Portzuordnung an 127.0.0.1, prüfen sie von außen und ändern das offengelegte Passwort.
Was Sie lernen in Öffentlich erreichbarer Container-Port
- Erkennen Sie, dass -p einen Container-Port standardmäßig an alle Netzwerkschnittstellen des Hosts bindet, einschließlich öffentlicher Schnittstellen
- Führen Sie die Exposition der Datenbank anhand der PORTS-Spalte des laufenden Containers auf die Portzuordnung in Compose zurück
- Erklären Sie, warum eine Host-Firewall wie ufw einen von Docker veröffentlichten Port nicht blockiert, da die eigenen iptables-Regeln von Docker zuerst ausgewertet werden
- Binden Sie die Portzuordnung an 127.0.0.1 und prüfen Sie von außen, dass die Datenbank nicht mehr erreichbar ist
- Ändern Sie alle Zugangsdaten, die bei offenem Port genutzt werden konnten; das Schließen des Ports macht bereits gestohlene Zugangsdaten nicht ungültig
Öffentlich erreichbarer Container-Port — Trainingsschritte
-
Eine Datenbank im öffentlichen Internet
Bob hat noch keinen Zugang zu Halvexis. Vor einigen Monaten kaufte er einen Datendump mit Zugangsdaten für einen lesenden Datenbankbenutzer von Halvexis. Ohne Netzwerkzugriff auf die Datenbank sind sie nutzlos. Deshalb scannt er die Datenbank-Hosts des Unternehmens und prüft, ob einer von außen antwortet.
-
Direkt hinein, ohne Anwendung
Es gibt weder Anmeldeseite noch API oder Rate Limit. Wer den veröffentlichten Port erreicht, kann direkt das PostgreSQL-Protokoll sprechen. Bob verbindet einen Datenbank-Client damit und meldet sich mit den bereits vorhandenen Zugangsdaten an.
-
Die Tabelle „residents“ lesen
Die Zugangsdaten erlauben nur Lesezugriff. Das genügt Bob: Er fragt die Produktionstabelle mit den Daten der Mieter ab. Bob besitzt genau diese Zugangsdaten seit Monaten und hat sie nie benutzt.
-
Was sich geändert hat
-
Das Monitoring meldet den Datenverkehr
Halvexis überwacht seine Produktions-Hosts. Das Monitoring kennt den Zweck der Datenbank nicht; es meldet lediglich den beobachteten Datenverkehr.
-
Den offenen Port finden
Wenn die Firewall Port 5432 weiterhin blockiert, lässt etwas auf dem Host Datenverkehr an ihr vorbei: die Art, wie ein Container seinen Port veröffentlicht hat. Alice listet den Datenbank-Container auf und prüft in der Port-Spalte, an welche Netzwerkschnittstellen er gebunden ist.
-
Wo der Port veröffentlicht wird
Das Port-Mapping stammt aus der Compose-Datei, die den Stack definiert. Alice öffnet sie, um die Zeile zu sehen, die 5432 veröffentlicht hat.
-
Die entscheidende Zeile
Eine einzige Portzuordnung, wie sie auf einem Entwicklerrechner bequem ist, machte die Datenbank nach der Bereitstellung im Produktionssystem aus dem Internet erreichbar.
-
An localhost binden
Die API erreicht die Datenbank im Compose-Netzwerk über ihren Servicenamen, nicht über einen veröffentlichten Host-Port. Die Portzuordnung muss deshalb nicht öffentlich sein. Alice bindet sie an die Loopback-Schnittstelle. So kann der Host über die Zuordnung auf die Datenbank zugreifen; die API erreicht sie weiter direkt im Compose-Netzwerk.
-
Die korrigierte Bindung lesen
Nur ein Schnittstellenpräfix ändert sich, doch es ist entscheidend. Alice prüft die neue Portzuordnung vor der erneuten Bereitstellung: Von wo aus wird die Datenbank dann erreichbar sein?
Abdeckung der Sicherheits-Frameworks
CWE
- CWE-668 Exposure of Resource to Wrong Sphere
- CWE-306 Missing Authentication for Critical Function
MITRE ATT&CK
- T1046 Network Service Discovery
- T1210 Exploitation of Remote Services
CIS Controls
- CIS 12 Network Infrastructure Management
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.IR Technology Infrastructure Resilience