Tod durch Doki: Eine neue Docker-Schwachstelle mit ernsthaftem Biss (und was Sie dagegen tun können)

Veröffentlicht Aug 25, 2020
von Matias Madou, Ph.D.
FALLSTUDIE

Tod durch Doki: Eine neue Docker-Schwachstelle mit ernsthaftem Biss (und was Sie dagegen tun können)

Veröffentlicht Aug 25, 2020
von Matias Madou, Ph.D.
Ressource anzeigen
Ressource anzeigen

In der japanischen Onomatopoesie steht der Ausdruck "doki-doki" ("""") für das Geräusch eines heftig schlagenden Herzens... was genau das ist, was Mitglieder des Sicherheitsteams erleben könnten, wenn ihr Docker-Server mit Doki infiziert ist, einer neuen Schwachstelle, die eine Hintertür für die Einschleusung von bösartigem Code und vieles mehr bietet. Ein passender Name, um es mal so zu sagen.

Mit der zunehmenden Abhängigkeit von Cloud-Infrastrukturen ist die Notwendigkeit einer präzisen und skalierbaren Effektivität von Best Practices für die Sicherheit von entscheidender Bedeutung. Sie muss weit über das bloße Minimum für eine sichere Anwendungsbereitstellung hinausgehen, wobei individuelle Maßnahmen für die Containersicherheit während des gesamten SDLC bekannt gemacht und eingesetzt werden müssen.

Cyberattacken werden immer häufiger, und Bedrohungen, die Linux-basierte Infrastrukturen betreffen, werden immer häufiger, mit dem Ziel, eine Beutetruhe mit sensiblen Daten zu knacken, die in der Cloud gespeichert sind. Doki zielt darauf ab, genau das zu tun, und seine Verwendung mehrerer Technologien, um unentdeckt, leistungsstark und effektiv zu bleiben, ist anders als alles, was zuvor im Bereich der Docker-basierten Sicherheitsprobleme gesehen wurde.

Was ist Doki, und wie funktioniert es?

Wie bei vielen kompromittierten Anwendungen spielt eine falsche Sicherheitskonfiguration eine unannehmbar große Rolle bei der Art und Weise, wie die Software angegriffen wurde. Speziell bei Docker hat sich die falsch konfigurierte Docker-Engine-API als fruchtbar für Angreifer erwiesen. Der Kryptomining-Bot des Ngrok-Botnets hat seit 2018 nach unsicheren Docker-Servern geschnüffelt, seine eigenen Container aufgesetzt und Malware auf der Infrastruktur des Opfers ausgeführt.

Doki ist eine raffiniertere, bösartigere Version dieser Malware, die über dasselbe Botnetz mit demselben Angriffsvektor erfolgreich war: API-Fehlkonfiguration, die schon lange vor der Bereitstellung von Code oder der öffentlichen Sichtbarkeit des Servers hätte behoben werden müssen. Doki nutzt die Blockchain der beliebten satirischen Kryptowährung Dogecoin, um als praktisch unerkennbare Hintertür zu fungieren. So wie es aussieht, hat es sich seit Januar spurlos aus dem Staub gemacht.

Die Malware missbraucht im Wesentlichen eine Blockchain-Wallet, um Command-and-Control (C2)-Domain-Namen zu generieren, was an und für sich nichts Neues ist, aber Doki bietet eine kontinuierliche Möglichkeit zur Remote-Code-Ausführung auf einem infizierten Server und macht damit den Weg frei für eine Reihe von schädlichen Malware-basierten Angriffen wie Ransomware und DDoS. Es ist unerbittlich, wie ein "Doge mit einem Knochen", wenn Sie so wollen. Die Kollegen von Intezer haben einen ausführlichen Bericht über die gesamte Bedrohung und ihre umfangreiche Nutzlast verfasst.

Erkennen eines Doki-Pfades im Code.

Die Tatsache, dass es sich bei Doki um eine Hintertür handelt, die auf einem dezentralen Blockchain-Netzwerk operiert und schwer fassbare und schnelle Container-Entweichungstechniken einsetzt, um Spuren zu verwischen, auf weitere Bereiche des Hosts zuzugreifen und die Infektion weiter zu verbreiten, macht es zu einem ziemlichen Alptraum für Entwickler und Sicherheitsteams gleichermaßen.

Dennoch kann Doki keinen Docker-Server infizieren, der über sichere API-Ports verfügt. Eine Fehlkonfiguration dieser Ports während der Produktion ist ein Fehler mit weitreichenden Folgen, aber eine effektive Schulung des Sicherheitsbewusstseins und der praktischen Fähigkeiten zur sicheren Programmierung für Cloud-Entwickler ist eine etwas "einfache" Lösung angesichts einer so komplexen und schwer zu treffenden Malware.

Werfen wir einen Blick auf dieses Beispiel einer unsicheren Docker-API, in die Doki eindringen und sich verbreiten könnte:

dockerd -H tcp://0.0.0.0:2375

Können Sie die Fehlkonfigurationen erkennen? Die gesicherte Version sieht wie folgt aus:

dockerd -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=/etc/ssl/certs/ca.pem --tlscert=/etc/ssl/certs/server-cert.pem --tlskey=/etc/ssl/private/server-key.pem

Im unsicheren Beispiel lauscht die Docker-Engine-API auf Port TCP 2375 und akzeptiert jede Verbindungsanforderung, sodass sie für jeden verfügbar ist, der den Docker-Server erreicht.

Im sicheren Beispiel wurde die Docker-Engine-API so konfiguriert, dass sie die TLS-Zertifikatsvalidierung verwendet und nur Verbindungen von Clients akzeptiert, die ein von Ihrer CA vertrauenswürdiges Zertifikat bereitstellen.

Wir haben eine völlig neue Reihe von spielerischen Herausforderungen, die Entwicklern dabei helfen, die Ursache einer Doki-Infektion zu identifizieren und zu beheben, und Sie können eine davon spielen hier:

Eine sichere Cloud-Infrastruktur ist ein Teamsport.

Cloud-Fehlkonfigurationen kosten Unternehmen in den Jahren 2018 und 2019 sage und schreibe 5 Billionen US-Dollar, was Milliarden von gefährdeten Datensätzen und irreversiblen Reputationsschäden entspricht. Für einen Angriffsvektor, der weitgehend vermeidbar ist, ist dies eine ziemlich alarmierende Statistik. Und wenn man bedenkt, dass Maßnahmen wie das Überwachen und Reparieren offener Ports (idealerweise vor der Bereitstellung), das Überprüfen unbekannter Container und das Beobachten übermäßiger Serverlast den sich ausbreitenden Schaden von etwas wie Doki stoppen könnten, dann ist das ein kleiner Preis, den man für seinen Seelenfrieden zahlt.

Ein unternehmensweites Sicherheitsbewusstsein ist von entscheidender Bedeutung, und für jede einzelne Person, die am SDLC beteiligt ist, ist das Arbeiten mit Best Practices im Bereich Sicherheit nicht verhandelbar. Die besten Unternehmen setzen auf einen soliden DevSecOps-Prozess, bei dem die Verantwortung für die Sicherheit geteilt wird und Entwickler und AppSec-Fachleute gleichermaßen über das Wissen und die Tools verfügen, um zu verhindern, dass häufige Schwachstellen ihren Weg in die Software und in die lebenswichtige Infrastruktur finden.
Möchten Sie als sicherheitsbewusster, hochleistungsfähiger Cloud Engineer einsteigen? Fangen Sie jetzt an, Ihre Fähigkeiten zu testen.

Ressource anzeigen
Ressource anzeigen

Autor

Matias Madou, Ph.D.

Matias ist ein Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung im Bereich der Softwaresicherheit. Er hat Lösungen für Unternehmen wie Fortify Software und sein eigenes Unternehmen Sensei Security entwickelt. Im Laufe seiner Karriere hat Matias mehrere Forschungsprojekte zur Anwendungssicherheit geleitet, die zu kommerziellen Produkten geführt haben, und kann auf über 10 Patente verweisen. Wenn er nicht am Schreibtisch sitzt, ist Matias als Ausbilder für fortgeschrittene Anwendungssicherheitstrainings courses tätig und hält regelmäßig Vorträge auf globalen Konferenzen wie RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec und BruCon.

Matias hat einen Doktortitel in Computertechnik von der Universität Gent, wo er die Sicherheit von Anwendungen durch Programmverschleierung untersuchte, um die innere Funktionsweise einer Anwendung zu verbergen.

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Tod durch Doki: Eine neue Docker-Schwachstelle mit ernsthaftem Biss (und was Sie dagegen tun können)

Veröffentlicht Aug 25, 2020
Von Matias Madou, Ph.D.

In der japanischen Onomatopoesie steht der Ausdruck "doki-doki" ("""") für das Geräusch eines heftig schlagenden Herzens... was genau das ist, was Mitglieder des Sicherheitsteams erleben könnten, wenn ihr Docker-Server mit Doki infiziert ist, einer neuen Schwachstelle, die eine Hintertür für die Einschleusung von bösartigem Code und vieles mehr bietet. Ein passender Name, um es mal so zu sagen.

Mit der zunehmenden Abhängigkeit von Cloud-Infrastrukturen ist die Notwendigkeit einer präzisen und skalierbaren Effektivität von Best Practices für die Sicherheit von entscheidender Bedeutung. Sie muss weit über das bloße Minimum für eine sichere Anwendungsbereitstellung hinausgehen, wobei individuelle Maßnahmen für die Containersicherheit während des gesamten SDLC bekannt gemacht und eingesetzt werden müssen.

Cyberattacken werden immer häufiger, und Bedrohungen, die Linux-basierte Infrastrukturen betreffen, werden immer häufiger, mit dem Ziel, eine Beutetruhe mit sensiblen Daten zu knacken, die in der Cloud gespeichert sind. Doki zielt darauf ab, genau das zu tun, und seine Verwendung mehrerer Technologien, um unentdeckt, leistungsstark und effektiv zu bleiben, ist anders als alles, was zuvor im Bereich der Docker-basierten Sicherheitsprobleme gesehen wurde.

Was ist Doki, und wie funktioniert es?

Wie bei vielen kompromittierten Anwendungen spielt eine falsche Sicherheitskonfiguration eine unannehmbar große Rolle bei der Art und Weise, wie die Software angegriffen wurde. Speziell bei Docker hat sich die falsch konfigurierte Docker-Engine-API als fruchtbar für Angreifer erwiesen. Der Kryptomining-Bot des Ngrok-Botnets hat seit 2018 nach unsicheren Docker-Servern geschnüffelt, seine eigenen Container aufgesetzt und Malware auf der Infrastruktur des Opfers ausgeführt.

Doki ist eine raffiniertere, bösartigere Version dieser Malware, die über dasselbe Botnetz mit demselben Angriffsvektor erfolgreich war: API-Fehlkonfiguration, die schon lange vor der Bereitstellung von Code oder der öffentlichen Sichtbarkeit des Servers hätte behoben werden müssen. Doki nutzt die Blockchain der beliebten satirischen Kryptowährung Dogecoin, um als praktisch unerkennbare Hintertür zu fungieren. So wie es aussieht, hat es sich seit Januar spurlos aus dem Staub gemacht.

Die Malware missbraucht im Wesentlichen eine Blockchain-Wallet, um Command-and-Control (C2)-Domain-Namen zu generieren, was an und für sich nichts Neues ist, aber Doki bietet eine kontinuierliche Möglichkeit zur Remote-Code-Ausführung auf einem infizierten Server und macht damit den Weg frei für eine Reihe von schädlichen Malware-basierten Angriffen wie Ransomware und DDoS. Es ist unerbittlich, wie ein "Doge mit einem Knochen", wenn Sie so wollen. Die Kollegen von Intezer haben einen ausführlichen Bericht über die gesamte Bedrohung und ihre umfangreiche Nutzlast verfasst.

Erkennen eines Doki-Pfades im Code.

Die Tatsache, dass es sich bei Doki um eine Hintertür handelt, die auf einem dezentralen Blockchain-Netzwerk operiert und schwer fassbare und schnelle Container-Entweichungstechniken einsetzt, um Spuren zu verwischen, auf weitere Bereiche des Hosts zuzugreifen und die Infektion weiter zu verbreiten, macht es zu einem ziemlichen Alptraum für Entwickler und Sicherheitsteams gleichermaßen.

Dennoch kann Doki keinen Docker-Server infizieren, der über sichere API-Ports verfügt. Eine Fehlkonfiguration dieser Ports während der Produktion ist ein Fehler mit weitreichenden Folgen, aber eine effektive Schulung des Sicherheitsbewusstseins und der praktischen Fähigkeiten zur sicheren Programmierung für Cloud-Entwickler ist eine etwas "einfache" Lösung angesichts einer so komplexen und schwer zu treffenden Malware.

Werfen wir einen Blick auf dieses Beispiel einer unsicheren Docker-API, in die Doki eindringen und sich verbreiten könnte:

dockerd -H tcp://0.0.0.0:2375

Können Sie die Fehlkonfigurationen erkennen? Die gesicherte Version sieht wie folgt aus:

dockerd -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=/etc/ssl/certs/ca.pem --tlscert=/etc/ssl/certs/server-cert.pem --tlskey=/etc/ssl/private/server-key.pem

Im unsicheren Beispiel lauscht die Docker-Engine-API auf Port TCP 2375 und akzeptiert jede Verbindungsanforderung, sodass sie für jeden verfügbar ist, der den Docker-Server erreicht.

Im sicheren Beispiel wurde die Docker-Engine-API so konfiguriert, dass sie die TLS-Zertifikatsvalidierung verwendet und nur Verbindungen von Clients akzeptiert, die ein von Ihrer CA vertrauenswürdiges Zertifikat bereitstellen.

Wir haben eine völlig neue Reihe von spielerischen Herausforderungen, die Entwicklern dabei helfen, die Ursache einer Doki-Infektion zu identifizieren und zu beheben, und Sie können eine davon spielen hier:

Eine sichere Cloud-Infrastruktur ist ein Teamsport.

Cloud-Fehlkonfigurationen kosten Unternehmen in den Jahren 2018 und 2019 sage und schreibe 5 Billionen US-Dollar, was Milliarden von gefährdeten Datensätzen und irreversiblen Reputationsschäden entspricht. Für einen Angriffsvektor, der weitgehend vermeidbar ist, ist dies eine ziemlich alarmierende Statistik. Und wenn man bedenkt, dass Maßnahmen wie das Überwachen und Reparieren offener Ports (idealerweise vor der Bereitstellung), das Überprüfen unbekannter Container und das Beobachten übermäßiger Serverlast den sich ausbreitenden Schaden von etwas wie Doki stoppen könnten, dann ist das ein kleiner Preis, den man für seinen Seelenfrieden zahlt.

Ein unternehmensweites Sicherheitsbewusstsein ist von entscheidender Bedeutung, und für jede einzelne Person, die am SDLC beteiligt ist, ist das Arbeiten mit Best Practices im Bereich Sicherheit nicht verhandelbar. Die besten Unternehmen setzen auf einen soliden DevSecOps-Prozess, bei dem die Verantwortung für die Sicherheit geteilt wird und Entwickler und AppSec-Fachleute gleichermaßen über das Wissen und die Tools verfügen, um zu verhindern, dass häufige Schwachstellen ihren Weg in die Software und in die lebenswichtige Infrastruktur finden.
Möchten Sie als sicherheitsbewusster, hochleistungsfähiger Cloud Engineer einsteigen? Fangen Sie jetzt an, Ihre Fähigkeiten zu testen.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.