Jakub Jirsák - stock.adobe.com
Sicherheitsprobleme in Serverless-Umgebungen erkennen
In Serverless-Umgebungen gibt es zwei Security-Risiken: Zum einen hängen sie mit der Entwicklung von sicherem Code und zum anderen mit dem Identity and Access Management zusammen.
Da sich auf DevOps und Microservices basierende Architekturen in Unternehmen immer weiter verbreiten, benötigen die meisten App-Entwickler leichtgewichtige Cloud-Dienste, um ihre Anwendungen und Workloads bereitzustellen. Eine häufig für diesen Zweck eingesetzte Technologie ist das sogenannte Serverless Computing, bei dem der gesamte Workload, also die Container- und OS-Instanzen, in die Backplane des Providers verlagert werden. Das hat den Vorteil, dass die Entwickler den gesamten Code für ihre Mikro-Service-Apps in die Umgebung des Cloud-Anbieters hochladen und dort auch ausführen lassen können.
Wie bei nahezu jeder neuen technologischen Entwicklung sorgt die zunehmende Nutzung von Serverless-Cloud-Infrastrukturen jedoch für neue Risiken, um die sich die Security-Teams in den Unternehmen kümmern müssen. Lesen Sie weiter, um zu erfahren, welches die größten Probleme in Serverless-Umgebungen sind und wie sie sich am besten beheben lassen.
Risiken beim Programmieren für Serverless-Umgebungen
Serverless Computing ist besonders gefährdet, wenn beim Entwickeln der Apps Fehler gemacht werden. So hat etwa Rich Jones den bemerkenswerten Vortrag Gone in 60 Milliseconds gehalten, in dem er beschreibt, wie leicht gefährlicher Code in Serverless-Umgebungen eingebracht werden kann, wo er dann möglicherweise für lange Zeit im Speicher bleibt.
Immer wieder anzutreffende Schwächen in Serverless-Umgebungen müssen erkannt und entfernt werden, da sie zu einer unerwünschten Ausführung von fremdem Code aus der Ferne führen können. Mehrere Beispiele dafür hat Eric Johnson auf der RSA Conference in San Francisco in diesem Jahr im Vortrag Defending Serverless Infrastructure in the Cloud (PDF) genannt.
Auch die Serverless-Umgebungen selbst sind anfällig gegen Fehler im Code. Die Kunden haben aber in der Regel keinen Zugriff auf die Plattform, auf der die Container gehostet werden. Die Entwickler in den Unternehmen können sich deswegen nur auf die Erstellung sicheren Codes und eine sichere Ausführung konzentrieren.
Beim Entwickeln einer Strategie zum Verringern von Sicherheitsrisiken in Serverless-Umgebungen sollten zunächst statische Code-Reviews erwogen werden. Manche Angebote von Drittfirmen wie etwa AWS Lambda integrieren sich direkt in die Serverless-Umgebungen und können den dort genutzten Code auf Sicherheitslücken überprüfen.
Viele Risiken bei der Entwicklung von Serverless-Code treten aber unabhängig davon auf, wo und wie er ausgeführt wird. Das führt zu folgenden, zentralen Problemen, um die Sie sich kümmern sollten:
- Event Injection: Das Einfügen fremden Codes bleibt eine Gefahr für die Verarbeitung von Daten in Serverless-Umgebungen. Als Gegenmaßnahmen eignen sich eine verbesserte Input-Validierung und Sicherheitsanpassungen der zugrundeliegenden Datenbanken.
- Fehler bei der Authentifizierung: Alle Serverless-Nutzer sollten bei der Anmeldung eine starke Authentifizierung nutzen sowie vordefinierte Rollen zugewiesen bekommen.
- Unsicherer „geheimer“ App-Storage: Bei der Ausführung von Serverless-Funktionen werden oft API-Schlüssel, Schlüssel für die Verschlüsselung und andere geheim zu haltende Daten verwendet. Die Sicherheitsteams müssen deshalb sicherstellen, dass die Entwickler nur moderne und sichere Tools zur Verwaltung dieser äußerst sensiblen Daten sowie Cloud-spezifische Lösungen zur Speicherung der Schlüssel nutzen.
- Fehler bei der Behandlung von Ausnahmen: Die Entwickler müssen sicherstellen können, dass Fehler und Ausnahmen angemessen behandelt und nicht leichtfertig übersehen werden. Dabei müssen auch die Daten aus der Bearbeitung von Stacks geschützt werden, so dass sie nicht versehentlich in die falschen Hände gelangen.
Probleme bei der Verwaltung von Identitäten und bei Zugriffen in Serverless-Umgebungen
Ein weiteres wichtiges und besonders sicherheitsrelevantes Thema ist die Kontrolle von Privilegien und Zugriffsberechtigungen in Serverless-Umgebungen. Bei jedem Einsatz von Serverless-Anwendungen müssen zuverlässige und ausgereifte Cloud-IAM-Lösungen (Identity and Access Management) genutzt werden.
Unternehmen sollten darüber hinaus dafür sorgen, dass die Berechtigungen, mit denen ihre Serverless-Apps laufen, so gering wie nur möglich sind. Das gleiche gilt für die Berechtigungen für alle Dienste, die ebenfalls auf die Serverless-Funktionen zugreifen dürfen.
Beginnen Sie damit, jedes API-Ereignis in Ihrer Serverless-Umgebung zu protokollieren, inklusive allen erfolgten und versuchten Zugriffen, Veränderungen und Ausführungen innerhalb der eigentlichen Cloud-Umgebung. Dieses Ziel kann unter anderem mit Services wie AWS CloudTrail oder der Google Cloud Operations Suite (früher Stackdriver) erreicht werden.
Weitere Sicherheitsgefahren und verfügbare Dienstleistungsangebote
Nachlässigkeiten beim Programmieren und ein unsicheres IAM sind nicht die einzigen möglichen Probleme in Serverless-Umgebungen. Andere Gebiete, auf die Sie sich konzentrieren sollten, hängen mit der eigentlichen Konfiguration der Dienste zusammen: Unsichere Serverless-Einstellungen müssen gefunden und korrigiert werden, indem zum Beispiel der Speicherverbrauch und die Nutzung von Input-Vektoren begrenzt werden. Auch ein Tuning des Execution-Timeouts kann bei der Abwehr von DoS-Attacken (Denial of Service) hilfreich sein. Außerdem lassen sich durch eine solche Maßnahme Kosten sparen.
Bislang gibt es nur eine beschränkte Zahl an Cloud-eigenen Möglichkeiten zum Schutz von Serverless-Umgebungen. Um sie vollständig abzusichern, benötigen Unternehmen unter anderem eine voll integrierte statische Code-Analyse, eine Speicheranalyse zum Erkennen von Buffer Injection, ein dynamisches Scannen von Eingaben und Verhalten sowie ein Aufzeichnen aller Aktivitäten.
Die meisten Cloud-Provider bieten aber nur Optionen für den operativen Betrieb an, wie zum Beispiel ein Begrenzen des Speichers und seiner Nutzung oder Berechtigungen für die Serverless-Funktionen und -Dienste selbst.
Nichtsdestotrotz gibt es mehrere Werkzeuge, die genutzt werden können, um für eine höhere Transparenz bei der Ausführung von Code in Serverless-Umgebungen zu sorgen. Dazu gehören Check Point Protego sowie Dashbird.
Unternehmen sollten sich zudem über Tools informieren, die mehr Sicherheit im CI/CD-Prozess (Continuous Integration, Continuous Delivery) und bei der Ausführung innerhalb der Cloud bringen können. Viele Sicherheits-Tools für Container wie Palo Alto Prisma und Aqua eignen sich für diesen Zweck. Seien Sie aber gewarnt: Alle diese Lösungen erfordern sehr viel Einsatz und Ressourcen. Trotzdem lassen sich damit leider nicht alle möglichen Sicherheitsrisiken abdecken.