Zurück zum Blog
11. April 2026

Sichere Serverless-Apps mit Cloud Penetration Testing

Sie haben die Werbebotschaft für Serverless-Architektur wahrscheinlich schon tausendmal gehört: keine zu verwaltenden Server, automatische Skalierung und ein "Pay-as-you-go"-Modell, das die Kosten niedrig hält. Es klingt wie ein Traum für Entwickler. Sie schreiben eine Funktion, laden sie in AWS Lambda, Google Cloud Functions oder Azure Functions hoch, und der Cloud-Anbieter kümmert sich um den Rest. Aber hier ist der Haken: "Serverless" bedeutet nicht, dass es keine Server gibt. Es bedeutet nur, dass Sie sich keine Sorgen um das Patchen des Betriebssystems oder die Verwaltung der Hardware machen müssen.

Während Sie die Infrastrukturverwaltung an einen Riesen wie Amazon oder Microsoft ausgelagert haben, haben Sie die Sicherheitsverantwortung nicht ausgelagert. Tatsächlich führt Serverless zu einer ganz neuen Reihe von Problemen. Sie schützen nicht mehr einen Perimeter, sondern ein fragmentiertes Netz von Triggern, Berechtigungen und kurzlebigen Ausführungsumgebungen. Wenn ein Angreifer einen Weg findet, Code in eine Ihrer Funktionen einzuschleusen, steckt er nicht nur in einer virtuellen Maschine fest, sondern hat möglicherweise eine direkte Verbindung zu Ihrer Datenbank oder Ihren S3-Buckets über zu permissive IAM-Rollen.

Hier kommt Cloud Penetration Testing ins Spiel. Sie können nicht einfach einen Legacy-Schwachstellenscanner gegen eine Serverless-App ausführen und erwarten, dass er etwas Nützliches findet. Es gibt keinen "Server" im traditionellen Sinne, der gescannt werden könnte. Um diese Apps tatsächlich zu sichern, benötigen Sie einen speziellen Ansatz, der versteht, wie Ereignisse Funktionen auslösen und wie Daten durch ein Cloud-natives Ökosystem fließen.

Was genau ist Cloud Penetration Testing für Serverless?

Wenn wir über Cloud Penetration Testing für Serverless-Anwendungen sprechen, entfernen wir uns von der alten "Break into the Box"-Mentalität. In einer traditionellen Umgebung sucht ein Pentester nach einem offenen Port, einer ungepatchten Version von Apache oder einem Weg, eine Reverse Shell auf dem Server zu erhalten. In Serverless sind diese Angriffsvektoren größtenteils verschwunden. Sie können sich nicht per SSH in eine Lambda-Funktion einloggen.

Stattdessen konzentriert sich Cloud Penetration Testing auf die Anwendungslogik und die Konfiguration der Cloud-Umgebung. Es geht darum, die Lücken in der Interaktion Ihrer Funktionen zu finden. Wenn beispielsweise eine Funktion von einem API Gateway ausgelöst wird, sucht der Pentester nach Injection-Schwachstellen in der API-Anfrage. Wenn diese Funktion dann in eine NoSQL-Datenbank schreibt, prüft er, ob die Eingabe ordnungsgemäß bereinigt wurde, um NoSQL Injection zu verhindern.

Im Wesentlichen handelt es sich um einen simulierten Angriff, der auf den "Klebstoff" abzielt, der Ihre Serverless-App zusammenhält. Dies beinhaltet:

  • Event Source Mapping: Überprüfung, ob ein Angreifer Funktionen auf eine Weise auslösen kann, die Sie nicht beabsichtigt haben.
  • Permission Analysis: Suche nach "Star Permissions" (z. B. Resource: *), die einer Funktion mehr Leistung verleihen, als sie benötigt.
  • Dependency Auditing: Überprüfung der in der Funktion enthaltenen Bibliotheken auf bekannte Schwachstellen.
  • State Management: Analyse, wie Daten zwischen kurzlebigen Funktionen weitergegeben werden, um sicherzustellen, dass es keine Leckstellen gibt.

Da Serverless-Apps so verteilt sind, benötigen Sie eine Plattform, die das Gesamtbild sehen kann. Aus diesem Grund sind Tools wie Penetrify nützlich. Anstatt zu versuchen, fünfzig verschiedene Funktionen und ihre Trigger manuell zu verfolgen, kann eine Cloud-native Plattform helfen, die Angriffsfläche abzubilden und zu simulieren, wie sich ein Angreifer lateral von einer öffentlichen API zu einer privaten Back-End-Ressource bewegen könnte.

Die "Shared Responsibility Model"-Falle

Einer der größten Fehler, den ich bei Unternehmen sehe, ist ein Missverständnis des Shared Responsibility Model. Cloud-Anbieter erklären dies sehr gut in ihrer Dokumentation, aber in der Praxis wird es oft ignoriert.

Im Wesentlichen geht es darum: Der Anbieter (AWS, Azure, GCP) ist für die Sicherheit der Cloud verantwortlich. Sie stellen sicher, dass die physischen Rechenzentren verschlossen sind, die Hypervisoren gepatcht sind und die zugrunde liegende Hardware zuverlässig ist. Sie sind jedoch für die Sicherheit in der Cloud verantwortlich.

In einer Serverless-Welt verschiebt sich die Grenze. Sie kümmern sich nicht mehr um den Betriebssystemkernel, aber Sie sind jetzt zu 100 % verantwortlich für:

  1. Ihren Code: Wenn Ihre Python-Funktion einen Command Injection-Bug hat, wird AWS das nicht für Sie beheben.
  2. IAM Roles: Wenn Sie Ihrer Funktion AdministratorAccess geben, weil es "einfacher einzurichten" war, geht das auf Ihre Kappe.
  3. Data Validation: Sicherstellen, dass die Ereignisdaten, die Ihre Funktion auslösen, sauber sind.
  4. Secrets Management: Keine API-Schlüssel hart in Ihren Umgebungsvariablen codieren.

Viele Teams verfallen in ein falsches Sicherheitsgefühl und denken, dass sie, weil sie "Serverless" sind, "standardmäßig sicher" sind. Es ist eine gefährliche Annahme. Wenn überhaupt, erhöht die Granularität von Serverless die Anzahl der Stellen, an denen ein kleiner Konfigurationsfehler zu einer massiven Verletzung führen kann. Eine einzelne falsch konfigurierte S3-Bucket-Richtlinie oder eine zu breit gefasste Lambda-Ausführungsrolle kann Ihre gesamte Kundendatenbank dem öffentlichen Internet zugänglich machen.

Häufige Angriffsvektoren in Serverless-Anwendungen

Um zu verstehen, warum Sie Cloud Penetration Testing benötigen, müssen Sie sich ansehen, wie Angreifer tatsächlich auf diese Systeme abzielen. Sie suchen nicht nach "offenen Ports", sondern nach Logikfehlern und Berechtigungslücken.

Event Injection

In einer Serverless-App werden Funktionen durch Ereignisse ausgelöst. Diese Ereignisse können von einem API-Aufruf, einem Datei-Upload in einen Storage Bucket, einer Nachricht in einer Queue (SQS) oder einem geplanten Cron-Job stammen. Jeder davon ist ein Einstiegspunkt.

Wenn eine Funktion ein Ereignisobjekt entgegennimmt und es ohne Validierung direkt in eine Datenbankabfrage oder einen Systembefehl übergibt, haben Sie eine Injection-Schwachstelle. Stellen Sie sich beispielsweise eine Funktion vor, die Bild-Metadaten aus einer hochgeladenen Datei verarbeitet. Wenn der Pentester eine Datei mit einem bösartigen "Comment"-Feld hochladen kann, das einen Shell-Befehl enthält, und die Funktion eine Bibliothek verwendet, die diesen Befehl ausführt, hat der Angreifer erfolgreich einen Fuß in Ihre Ausführungsumgebung gesetzt.

Broken Function-Level Authorization

Serverless-Anwendungen bestehen oft aus Dutzenden kleiner Funktionen. Es ist üblich, die "Vordertür" (das API Gateway) zu sichern, aber zu vergessen, die "Hintertüren" (interne Funktionen) zu sichern.

Ein Angreifer könnte einen Weg finden, eine Funktion direkt aufzurufen und dabei die Autorisierungsprüfungen zu umgehen, die auf der API-Ebene durchgeführt werden. Wenn Ihre Funktion davon ausgeht, dass jede Anfrage, die sie erreicht, vom Gateway autorisiert wurde, haben Sie ein Problem. Cloud Penetration Testing beinhaltet den Versuch, diese Funktionen direkt über durchgesickerte Schlüssel oder durch Ausnutzung falsch konfigurierter Berechtigungen zu "invoken".

Überprivilegierte IAM-Rollen

Dies ist wahrscheinlich das häufigste Ergebnis bei jedem Serverless Security Audit. Entwickler verwenden oft eine einzige, breit gefächerte IAM-Rolle für alle ihre Funktionen, um den Aufwand für die Erstellung einer eindeutigen Rolle für jede Funktion zu vermeiden.

Wenn eine Funktion nur eine bestimmte Datei in einen bestimmten Ordner in S3 schreiben muss, ihre Rolle aber s3:*-Berechtigungen für alle Buckets hat, hat ein Angreifer, der diese Funktion kompromittiert, nun die Schlüssel zu Ihrem gesamten Storage-Königreich. Er kann Daten stehlen, Backups löschen oder bösartige Dateien hochladen. Das Ziel eines professionellen Penetration Test ist es, diese "überprivilegierten" Rollen zu identifizieren und sich in Richtung des Prinzips der geringsten Privilegien (Principle of Least Privilege, PoLP) zu bewegen.

Unsichere Drittanbieter-Abhängigkeiten

Serverless-Funktionen sind oft klein, aber sie stützen sich auf einen Berg von npm- oder pip-Paketen. Da diese Funktionen häufig bereitgestellt werden, können Abhängigkeiten schnell veralten.

Da Serverless-Umgebungen kurzlebig sind, funktionieren herkömmliche agentenbasierte Vulnerability Scanner nicht. Sie können keinen Security Agent auf einer Lambda-Funktion installieren. Sie benötigen eine Möglichkeit, das Deployment-Paket selbst zu scannen. Angreifer lieben es, "Supply Chain"-Schwachstellen auszunutzen – eine beliebte Bibliothek mit einem bekannten Fehler zu finden und darauf zu warten, dass ein Unternehmen sie in seinen Serverless-Stack einsetzt.

Ein schrittweiser Ansatz für Serverless Penetration Testing

Wenn Sie mit der Sicherung Ihrer Serverless-Umgebung beauftragt sind, können Sie nicht einfach draufloslegen. Sie benötigen eine strukturierte Methodik. Hier erfahren Sie, wie ein professioneller Cloud Penetration Test typischerweise durchgeführt wird.

Phase 1: Aufklärung und Kartierung

Sie können nicht schützen, was Sie nicht kennen. Der erste Schritt ist die Kartierung des gesamten Serverless-Ökosystems.

  • Identifizieren Sie alle Trigger: Wo gelangen Daten in das System? Geschieht dies über REST APIs, WebSockets, S3-Ereignisse oder Kinesis-Streams?
  • Kartieren Sie den Datenfluss: Wenn eine Anfrage die API erreicht, welche Funktion löst sie aus? Ruft diese Funktion eine andere Funktion auf? Schreibt sie in eine Datenbank?
  • Analysieren Sie den Cloud Footprint: Welcher Cloud-Anbieter wird verwendet? Gibt es öffentlich zugängliche Endpunkte?

Phase 2: Konfigurationsprüfung

Bevor Sie versuchen, den Code zu "brechen", überprüfen Sie die Einstellungen.

  • IAM Review: Exportieren Sie alle IAM-Richtlinien, die den Funktionen zugeordnet sind. Suchen Sie nach Wildcards (*) in Aktionen oder Ressourcen.
  • Umgebungsvariablen-Scan: Suchen Sie nach fest codierten Secrets, Passwörtern oder API-Schlüsseln in der Funktionskonfiguration.
  • Netzwerkanalyse: Laufen die Funktionen innerhalb einer VPC? Wenn ja, wie lauten die Security Group-Regeln? Kann eine kompromittierte Funktion das interne Unternehmensnetzwerk erreichen?

Phase 3: Aktive Angriffssimulation (Der "Spaß"-Teil)

Hier findet das eigentliche Penetration Testing statt.

  • Fuzzing der Eingaben: Senden Sie fehlerhafte, übergroße oder unerwartete Daten an jeden API-Endpunkt, um zu sehen, ob die Funktionen abstürzen oder Fehlermeldungen ausgeben.
  • Injection Testing: Versuchen Sie SQL Injection, NoSQL Injection und OS Command Injection über die Event-Trigger.
  • Auth Bypass: Versuchen Sie, auf "Admin-Only"-Funktionen zuzugreifen, indem Sie JWT-Token manipulieren oder fehlende Autorisierungsprüfungen ausnutzen.
  • Resource Exhaustion: Versuchen Sie, die Funktionen so oft auszulösen, dass Sie das Account Concurrency Limit erreichen, was möglicherweise zu einem Denial of Service (DoS) für andere Teile der Anwendung führt.

Phase 4: Post-Exploitation und laterale Bewegung

Wenn eine Funktion kompromittiert ist, was kommt als Nächstes?

  • Credential Theft: Kann der Angreifer auf die temporären Sicherheitsanmeldeinformationen zugreifen, die der Lambda-Funktion zur Verfügung gestellt werden (normalerweise in Umgebungsvariablen wie AWS_ACCESS_KEY_ID zu finden)?
  • Cloud Pivoting: Kann sich der Angreifer mit diesen gestohlenen Anmeldeinformationen von der Funktion zu einem anderen Dienst bewegen, z. B. auf den Secrets Manager zugreifen oder IAM-Richtlinien ändern?
  • Data Exfiltration: Kann der Angreifer die Berechtigungen der Funktion nutzen, um eine Datenbanktabelle auf einen externen Server zu dumpen?

Phase 5: Reporting und Behebung

Ein Penetration Test ist nutzlos, wenn er nicht zu Korrekturen führt. Der Abschlussbericht sollte die Ergebnisse nach Schweregrad (Kritisch, Hoch, Mittel, Niedrig) kategorisieren und klare, umsetzbare Schritte zur Behebung aufzeigen. Anstatt zu sagen "Fix your IAM", sollte ein guter Bericht sagen "Ändern Sie die Rolle für process-payment-function von S3FullAccess in eine benutzerdefinierte Richtlinie, die nur s3:PutObject für das Präfix /payments erlaubt."

Vergleich von traditionellem Pentesting vs. Serverless Pentesting

Um den Unterschied wirklich zu sehen, betrachten wir, wie diese beiden Ansätze in verschiedenen Kategorien abschneiden.

Feature Traditionelles Pentesting Serverless Pentesting
Primäres Ziel OS, Middleware, Webserver Anwendungslogik, Cloud-Konfiguration, IAM
Einstiegspunkt Offene Ports, SSH, Webformulare Event-Trigger, API Gateways, Cloud Events
Persistenz Installation von Backdoors, Rootkits Aufrechterhaltung des Zugriffs über gestohlene IAM-Token
Scanning-Tools Nmap, Nessus, OpenVAS Cloud-native Scanner, IAM-Analysatoren, benutzerdefinierte Skripte
Risikofokus Buffer Overflows, ungepatchtes OS Überprivilegierte Rollen, fehlerhafte Autorisierung
Umgebung Statisch (Server sind immer eingeschaltet) Ephemeral (Funktionen leben für Millisekunden)

Wie Sie sehen, ist die Verschiebung grundlegend. Wenn Sie einen Pentester einstellen, der nur weiß, wie man Nmap und Metasploit benutzt, wird er in einer serverlosen Umgebung völlig verloren sein. Sie brauchen jemanden – oder eine Plattform –, der die Nuancen der Cloud-Identität und der ereignisgesteuerten Architektur versteht.

Wie Penetrify Cloud Penetration Testing vereinfacht

All dies manuell zu erledigen, ist ein Albtraum. Zwischen dem Mapping, den IAM-Audits und den eigentlichen Angriffssimulationen erfordert es eine enorme Menge an Zeit und Spezialwissen. Die meisten mittelständischen Unternehmen haben keinen dedizierten "Serverless Security Expert" im Personalbestand.

Genau aus diesem Grund wurde Penetrify entwickelt. Es ist eine Cloud-basierte Plattform, die die Komplexität aus diesem Prozess herausnimmt. Anstatt sich auf manuelle Checklisten und veraltete Tools zu verlassen, bietet Penetrify ein umfassendes Ökosystem zur Identifizierung und Behebung von Schwachstellen.

Automatisierte Schwachstellensuche

Penetrify kann Ihre serverlosen Konfigurationen automatisch scannen, um die "low-hanging fruit" zu finden. Es identifiziert übermäßig permissive IAM-Rollen, unverschlüsselte Umgebungsvariablen und veraltete Abhängigkeiten in allen Ihren Funktionen. Das bedeutet, dass Sie nicht stundenlang auf JSON-Richtlinien starren müssen, um ein einzelnes * zu finden, das dort nicht sein sollte.

Simulieren von realen Angriffen

Penetrify scannt nicht nur nach Fehlkonfigurationen, sondern ermöglicht es Ihnen auch zu simulieren, wie sich ein Angreifer tatsächlich durch Ihr System bewegen würde. Es hilft Ihnen, die Angriffspfade zu visualisieren und zeigt Ihnen genau, wie eine Schwachstelle in einer öffentlichen API zu einer vollständigen Datenbankverletzung führen könnte.

Nahtlose Integration

Einer der schwierigsten Teile der Sicherheit ist es, die Entwickler dazu zu bringen, die Fehler tatsächlich zu beheben. Penetrify lässt sich in Ihre bestehenden Sicherheits-Workflows und SIEM-Systeme integrieren. Anstelle eines 50-seitigen PDF-Dokuments, das ignoriert wird, können die Ergebnisse direkt in die Tools übertragen werden, die Ihr Team bereits verwendet, wodurch die Behebung zu einem Teil des täglichen Sprints und nicht zu einer vierteljährlichen Aufgabe wird.

Skalierbarkeit für komplexe Umgebungen

Wenn Sie fünf Funktionen haben, können Sie diese in einer Tabellenkalkulation verwalten. Wenn Sie fünfhundert haben, sind Sie dem Untergang geweiht. Penetrify ist auf Skalierung ausgelegt. Es verarbeitet komplexe Multi-Environment-Setups, sodass Sie Tests gleichzeitig in Entwicklung, Staging und Produktion durchführen können, um sicherzustellen, dass eine Sicherheitskorrektur in einer Umgebung tatsächlich in die anderen übernommen wurde.

Deep Dive: Die Gefahr von "Event Data Trust"

Ich möchte etwas mehr Zeit mit einem Konzept namens "Event Data Trust" verbringen. Hier befinden sich die meisten serverlosen Schwachstellen.

In einer traditionellen Webanwendung sind Sie es gewohnt, nichts zu vertrauen, was vom Browser des Benutzers kommt. Sie bereinigen die Eingabe, validieren die Länge und maskieren die Zeichen. Aber in Serverless vertrauen Entwickler oft "internen" Events.

Stellen Sie sich folgendes Szenario vor:

  1. Ein Benutzer lädt eine Datei in einen S3-Bucket hoch.
  2. Der S3-Upload löst eine "FileProcessor"-Funktion aus.
  3. Die Funktion "FileProcessor" liest den Dateinamen und übergibt ihn über eine SQS-Queue an eine Funktion "ThumbnailGenerator".

Der Entwickler der Funktion "ThumbnailGenerator" könnte denken: "Ich muss den Dateinamen nicht bereinigen, weil er von meiner eigenen FileProcessor-Funktion kommt. Es sind interne Daten; sie sind sicher."

Dies ist ein großer Fehler. Ein Angreifer kann seine hochgeladene Datei ; rm -rf / ; .jpg nennen. Die Funktion "FileProcessor" gibt diese Zeichenkette einfach weiter. Wenn die Funktion "ThumbnailGenerator" das Event empfängt und den Dateinamen in einen Shell-Befehl übergibt, um ein Bildverarbeitungstool auszuführen, führt sie den bösartigen Code aus.

Dies wird als Injection via Event bezeichnet. Um dies zu verhindern, müssen Sie jedes Event – auch solche, die von anderen Cloud-Diensten kommen – als nicht vertrauenswürdige Eingabe behandeln. Cloud Penetration Testing zielt speziell auf diese internen Übergaben ab, um zu prüfen, ob Vertrauen blind vorausgesetzt wird.

Häufige Fehler bei der Sicherung von Serverless Apps

Selbst mit den besten Absichten machen Teams oft die gleichen wenigen Fehler. Wenn Sie gerade eine serverlose App entwickeln, prüfen Sie, ob Sie eines davon tun:

1. Verwenden einer "God Role" für alles

Es ist verlockend, eine IAM-Rolle mit AdministratorAccess zu erstellen und sie an jede Lambda-Funktion anzuhängen. Das beschleunigt die Entwicklung, weil Sie nie auf "Access Denied"-Fehler stoßen. Aber in der Produktion ist das eine Katastrophe. Wenn eine Funktion kompromittiert wird, hat der Angreifer die volle Kontrolle über Ihr AWS-Konto. Die Lösung: Erstellen Sie eine Rolle pro Funktion. Verwenden Sie den IAM Policy Simulator, um die exakt minimal erforderlichen Berechtigungen zu finden.

2. Hardcoding von Secrets in Umgebungsvariablen

Während Umgebungsvariablen besser sind als das Festcodieren von Geheimnissen im Quellcode, werden sie dennoch als Klartext in der Cloud-Konsole gespeichert. Jeder mit "Read-Only"-Zugriff auf Ihre Lambda-Konfiguration kann Ihr Datenbankpasswort sehen. Die Lösung: Verwenden Sie einen dedizierten Dienst zur Verwaltung von Geheimnissen (wie AWS Secrets Manager oder Azure Key Vault). Rufen Sie das Geheimnis zur Laufzeit innerhalb des Funktionscodes ab.

3. Ignorieren von Funktions-Timeouts

Das Festlegen eines Funktions-Timeouts auf 15 Minuten (das Maximum für Lambda) mag wie eine sichere Wahl erscheinen, um sicherzustellen, dass die Funktion abgeschlossen wird. Dies kann jedoch ausgenutzt werden. Ein Angreifer könnte eine Funktion auslösen und ihr dann eine Anfrage senden, die die Verbindung für die vollen 15 Minuten offen hält, wodurch Ihre Parallelitätsgrenzen ausgeschöpft und Ihre Rechnung in die Höhe getrieben wird. Die Lösung: Setzen Sie das Timeout auf den niedrigstmöglichen Wert, der es der Funktion dennoch ermöglicht, ihre Aufgabe unter normalen Bedingungen zu erledigen.

4. Vernachlässigung von Protokollierung und Überwachung

Da Serverless-Funktionen ephemer sind, verschwinden sie nach ihrer Ausführung. Wenn Sie Ihre Protokolle nicht an einen zentralen Ort (wie CloudWatch oder ELK) senden, haben Sie keine Möglichkeit zu wissen, dass ein Angreifer seit drei Wochen versucht, Code in Ihre Funktionen einzuschleusen. Die Lösung: Implementieren Sie eine strukturierte Protokollierung. Protokollieren Sie nicht nur die Fehler, sondern auch die "interessanten" Ereignisse – wie unerwartete Eingabeformate oder wiederholte Autorisierungsfehler.

Serverless Security Checklist für DevSecOps Teams

Wenn Sie einen schnellen Weg suchen, um Ihren aktuellen Zustand zu überprüfen, verwenden Sie diese Checkliste. Wenn Sie nicht jedes Kästchen ankreuzen können, ist es an der Zeit, einen professionellen Cloud Penetration Test durchzuführen.

Identity and Access Management (IAM)

  • Jede Funktion hat ihre eigene, eindeutige IAM-Rolle.
  • Keine Rollen verwenden den *-Platzhalter für kritische Aktionen (z. B. s3:*, iam:*).
  • Rollen sind auf bestimmte Ressourcen beschränkt (z. B. spezifische Bucket-ARNs).
  • IAM-Rollen werden vierteljährlich auf ungenutzte Berechtigungen geprüft.

Daten- und Eingabevalidierung

  • Alle API Gateway-Eingaben werden mit JSON Schema validiert.
  • Alle Daten, die zwischen Funktionen ausgetauscht werden, werden als nicht vertrauenswürdig behandelt.
  • Es werden keine Shell-ausführenden Funktionen (z. B. os.system() in Python) mit benutzerdefinierten Daten verwendet.
  • NoSQL/SQL-Abfragen verwenden parametrisierte Eingaben, um Injection zu verhindern.

Geheimnisse und Konfiguration

  • Keine Geheimnisse (API-Schlüssel, Passwörter) werden in Umgebungsvariablen gespeichert.
  • Alle Geheimnisse werden in einem verwalteten Secrets Vault gespeichert.
  • Umgebungsvariablen werden nur für nicht-sensible Konfigurationen verwendet.
  • Die Geheimnisrotation ist für kritische Anmeldeinformationen aktiviert.

Observability und Resilience

  • Alle Funktionen haben angemessene Timeouts gesetzt (nicht nur das maximale Standardtimeout).
  • Parallelitätsgrenzen werden pro Funktion festgelegt, um DoS zu verhindern.
  • Alle Funktionsprotokolle werden zu einem zentralen Tool zur Sicherheitsüberwachung gestreamt.
  • Warnungen werden für hohe Raten von 4XX- oder 5XX-Fehlern konfiguriert.

Fallstudie: Die "Leaky Bucket"-Funktion

Lassen Sie mich Ihnen von einem Szenario erzählen, dem ich vor einiger Zeit begegnet bin. Ein mittelständisches Fintech-Unternehmen hatte ein Serverless-System entwickelt, um Kunden-Dokumenten-Uploads (IDs, Steuerformulare) zu verarbeiten.

Das Setup: Ein Benutzer lud ein PDF in einen S3-Bucket hoch. Dies löste eine Lambda-Funktion aus, die den Text aus dem PDF extrahierte und in einer Datenbank speicherte.

Die Schwachstelle: Der Entwickler hatte der Lambda-Funktion die s3:GetObject-Berechtigung erteilt, aber er hatte sie auf das gesamte S3-Konto angewendet und nicht nur auf den "uploads"-Bucket. Darüber hinaus überprüfte die Funktion nicht, ob die verarbeitete Datei tatsächlich dem Benutzer gehörte, der die Anfrage ausgelöst hatte.

Der Angriff: Ein cleverer Benutzer fand heraus, dass er, wenn er den Namen der hochgeladenen Datei eines anderen Benutzers erraten konnte (die vorhersehbar wie user123_tax.pdf benannt waren), eine bestimmte API-Anfrage erstellen konnte, die die Lambda-Funktion zwang, das Dokument einer anderen Person zu verarbeiten und den extrahierten Text in der API-Antwort zurückzugeben.

Das Ergebnis: Das Unternehmen gab sensible Steuerdaten für Tausende von Benutzern preis. Der "Server" war vollkommen sicher – es gab kein Betriebssystem zu hacken. Die Schwachstelle lag ausschließlich in den IAM-Berechtigungen und der Anwendungslogik.

Wie ein Penetration Test dies aufgedeckt hätte: Ein Cloud-Penetrationstester hätte die IAM-Rolle analysiert und die breite S3-Berechtigung gesehen. Anschließend hätten sie "IDOR"-Angriffe (Insecure Direct Object Reference) getestet, indem sie versucht hätten, auf Dateien zuzugreifen, die nicht zu ihrem Testkonto gehörten. Als das Unternehmen den Fehler fand, war der Schaden bereits angerichtet. Genau deshalb ist "automatisierte" Sicherheit nicht genug – Sie brauchen aktive, simulierte Angriffe, um diese Logiklücken zu finden.

FAQ: Alles, was Sie über Serverless Security wissen müssen

Ist Serverless sicherer als traditionelles Hosting?

Das hängt davon ab, wo man hinschaut. Auf Infrastrukturebene ist es sicherer, da der Cloud-Anbieter das Patchen und die Isolation übernimmt. Auf Anwendungsebene ist es jedoch oft weniger sicher, da die Komplexität der Verwaltung von Hunderten von Berechtigungen und Ereignisauslösern zu mehr menschlichen Fehlern führt.

Benötige ich für Serverless noch eine Web Application Firewall (WAF)?

Ja, unbedingt. Eine WAF wird zwar keine IAM-Fehlkonfiguration verhindern, aber sie ist Ihre erste Verteidigungslinie gegen häufige Angriffe wie SQL Injection, Cross-Site Scripting (XSS) und Bot-Scraping, bevor die Anfrage überhaupt Ihre Funktion erreicht.

Wie oft sollte ich Cloud Penetration Testing durchführen?

Mindestens einmal jährlich. Wenn Sie jedoch wöchentlich neue Funktionen bereitstellen oder Ihre IAM-Architektur ändern, sollten Sie Sicherheitstests in Ihre CI/CD-Pipeline integrieren. Hier wird eine Plattform wie Penetrify zu einem Wendepunkt, da sie eine kontinuierlichere Bewertung ermöglicht als ein einmal jährliches manuelles Audit.

Kann ein Angreifer aus einer Lambda-Funktion auf den Host-Server "ausbrechen"?

Theoretisch ja (über "Container Escape"-Schwachstellen), aber in der Praxis ist dies äußerst selten. Cloud-Anbieter geben Millionen aus, um sicherzustellen, dass die Micro-VMs (wie Firecracker für AWS) isoliert sind. Ihr eigentliches Risiko besteht nicht darin, aus der Funktion auszubrechen, sondern darin, die Berechtigungen der Funktion zu nutzen, um andere Dienste anzugreifen.

Wird Penetration Testing meine produktive Serverless-App zum Absturz bringen?

Wenn es richtig gemacht wird, nein. Professionelle Pentester verwenden "sichere" Payloads und führen Tests zuerst in einer Staging-Umgebung durch. Dinge wie "Resource Exhaustion"-Tests können jedoch zu Ausfallzeiten führen, wenn Sie keine angemessenen Parallelitätsgrenzen festgelegt haben. Koordinieren Sie Ihre Testfenster immer mit Ihrem DevOps-Team.

Abschließende Gedanken: Hin zu einer proaktiven Sicherheitsstrategie

Der Wechsel zu Serverless ist eine großartige Geschäftsentscheidung, erfordert aber eine Änderung in der Art und Weise, wie Sie über Sicherheit denken. Sie können sich nicht mehr auf eine "Firewall" verlassen, um Ihre App zu schützen. In einer Serverless-Welt ist Identität der neue Perimeter.

Wenn Ihre IAM-Rollen restriktiv sind, Ihre Eingabevalidierung rigoros ist und Ihre Secrets verwaltet werden, sind Sie bereits 90 % der Unternehmen voraus. Aber Sie können nicht einfach "hoffen", dass Ihre Konfigurationen korrekt sind. Der einzige Weg, dies mit Sicherheit zu wissen, ist, zu versuchen, Ihr eigenes System zu zerstören, bevor es jemand anderes tut.

Cloud Penetration Testing ist nicht nur ein Kontrollkästchen für die Compliance, sondern eine Notwendigkeit für jeden, der kritische Geschäftslogik in der Cloud ausführt. Ob Sie dies tun, indem Sie eine Boutique-Sicherheitsfirma beauftragen oder eine Cloud-native Plattform wie Penetrify nutzen, das Ziel ist dasselbe: Finden Sie die Lücken, beheben Sie die Berechtigungen und hören Sie auf, Ihren internen Ereignissen zu vertrauen.

Wenn Sie sich nicht sicher sind, wo Ihre Serverless-Apps heute stehen, beginnen Sie mit der Überprüfung Ihrer IAM-Rollen. Suchen Sie nach Berechtigungen, die mit :* enden. Wenn Sie eine finden, haben Sie bereits Ihre erste Schwachstelle gefunden.

Hören Sie auf zu raten und fangen Sie an zu testen. Ihre Daten – und Ihre Kunden – werden es Ihnen danken.

Sind Sie bereit zu sehen, wo sich Ihre Schwachstellen verstecken? Warten Sie nicht auf eine Sicherheitsverletzung, um herauszufinden, dass Ihre IAM-Rollen zu weit gefasst sind oder Ihre Funktionen Daten verlieren. Entdecken Sie, wie Penetrify Ihnen helfen kann, Ihr Cloud Penetration Testing zu automatisieren und Ihre Serverless-Infrastruktur zu sichern. Verschaffen Sie sich einen klaren Überblick über Ihre Angriffsfläche und beheben Sie Risiken, bevor sie zu Schlagzeilen werden.

Zurück zum Blog