Serverlose Architekturen erfreuen sich zunehmender Beliebtheit, da in dieser Konstellation der Cloud-Anbieter die meiste Arbeit übernimmt, so dass sich die Entwickler auf die Erstellung und Ausführung ihrer Anwendungen konzentrieren können. Dieser Trend hat jedoch wie immer auch eine Kehrseite, denn Bedrohungsakteure interessieren sich ebenfalls dafür.
Obwohl serverlose Umgebungen eine relativ geringe Angriffsfläche bieten, weil bestimmte Verantwortlichkeiten auf den Cloud Service Provider (CSP) verlagert werden, müssen die Benutzer darauf achten, kein zusätzliches Risiko einzugehen, wie etwa unsicheren Code zu schreiben, Assets falsch zu konfigurieren oder Endpunkte nicht ausreichend zu schützen.
Über eine Simulation des Missbrauchs von benutzerdefinierten Code-Schwachstellen haben wir infizierte serverlose Umgebungen auf Microsoft Azure evaluiert. Dabei identifizierten wir sensible Umgebungsvariablen innerhalb der Azure-Umgebung, die Möglichkeiten für böswillige Akteure bieten.
Wir fanden zwei kritische Probleme:
- Einige wesentliche Geheimnisse für serverlose Azure-Umgebungen sind in „Umgebungsvariablen“ gespeichert. Diese Variablen sind in jedem Prozess vorhanden und werden standardmäßig vererbt, was die Wahrscheinlichkeit einer Anfälligkeit erheblich erhöht. Eine einzige ausgenutzte Schwachstelle in einem Prozess könnte zu einer vollständigen Kompromittierung der serverlosen Umgebung führen.
- Wenn Azure-Kunden einen Masterkey für den SSH-Zugang verwenden, können Angreifer mit einem bekannten Kennwort die Privilegien innerhalb eines Containers erhöhen. Benutzer müssen für die Authentifizierung bei SSH eine Verschlüsselung mit öffentlichen Schlüsseln einsetzen, um sicher zu sein.
Azure-Benutzer sollten berücksichtigen, dass sie für die Implementierung von Best Practices und Sicherheitsrichtlinien verantwortlich sind, die die Standard-Sicherheitsmaßnahmen von Microsoft ergänzen. Anwendungscode ist besonders wichtig, da er als Einstiegspunkt für Angreifer dienen könnte, wenn er nicht entsprechend gesichert ist, so unser Bericht „The State of Serverless Security on Microsoft Azure“.
Wir haben einige Empfehlungen für die Nutzer von diesen serverlosen Umgebungen:
- Befolgen Sie die Empfehlungen des CSP zur Sicherung von Umgebungen und Projekten.
- Nutzen Sie Tresore zur Speicherung von Schlüsseln und Passwörtern, auch wenn dies zusätzliche Kosten verursacht.
- Verwenden Sie benutzerdefinierte Images, die mehr Möglichkeiten für sofort einsetzbare Lösungen und zusätzliche Sicherheit bieten.
- Setzen Sie verschlüsselte Kanäle und Pipelines ein, um die Werte der Variablen zu sperren und sicherzustellen, dass sensible Informationen (z. B. Kennwörter und IDs) auch bei unbefugtem Zugriff geheim bleiben.
- Befolgen Sie die Grundsätze von Zero Trust, d.h. prinzipiell einen Verstoß anzunehmen, und minimieren Sie die Auswirkungen eines Angriffs, der aus der Ausnutzung einer Schwachstelle resultiert.
- Befolgen Sie das Prinzip der geringsten Privilegien, indem Sie einen nicht-privilegierten Benutzer für Container und Anwendungen einsetzen, gemanagte Identitäten und Rollen verwenden und öffentliche Endpunkte von verknüpften Cloud Services einschränken. Erwägen Sie außerdem die Verwendung sicherer Mechanismen für die Erzeugung und Verwaltung von Geheimnissen, wie Passwörter und API-Schlüssel.
- Prüfen und sichern Sie alle sofort einsatzbereiten Lösungen, indem Sie Überprüfungen durch Dritte durchführen und die Best Practices der Anbieter für Sicherheit befolgen
Weitere Details enthält der vollständige Bericht „The State of Serverless Security on Microsoft Azure“.