Einführung
Vielen Dank, dass Sie OWASP ServerlessGoat verwenden!
Diese serverlose Anwendung demonstriert häufige Sicherheitsfehler serverloser Anwendungen, wie sie im Leitfaden zu den Top 10 Schwachstellen serverloser Sicherheit beschrieben werden https://github.com/puresec/sas-top-10.
ServerlessGoat wurde für die folgenden Bildungszwecke erstellt:
- Entwicklern & Sicherheitsexperten häufige Risiken und Schwachstellen der serverlosen Anwendungsebene vermitteln
- Darüber aufklären, wie Schwachstellen der serverlosen Anwendungsebene ausgenutzt werden können
- Entwicklern & Sicherheitsexperten Best Practices für serverlose Sicherheit vermitteln
Weitere Informationen über WebGoat finden Sie unter: https://www.owasp.org/index.php/OWASP_Serverless_Goat
WARNUNG 1: Diese Anwendung enthält Schwachstellen. Verwenden Sie sie nur zu Schulungszwecken.
WARNUNG 2: Dieses Programm dient ausschließlich Bildungszwecken. Versuchen Sie diese Techniken nicht ohne Autorisierung durch die Eigentümer der Anwendung.
HINWEIS: Die Anwendung wurde so entwickelt, dass sie Ihr AWS-Konto nicht gefährden sollte. Die eingeführten Schwachstellen sind auf die Grenzen dieser spezifischen Anwendung beschränkt. Dennoch wird Benutzern nicht empfohlen, die Anwendung in Produktionsumgebungen bereitzustellen.
Bereitstellung
ServerlessGoat ist eine einfache AWS-Lambda-Anwendung, die als Dienst zum Konvertieren von MS-Word-.doc-Dateien in Klartext dient. Sie empfängt eine URL zu einer .doc-Datei als Eingabe und gibt den Text im Dokument an den API-Aufrufer zurück.
Die Anwendung ist für die Bereitstellung über das AWS Serverless Application Repository verpackt und veröffentlicht.
Schritte für die Bereitstellung:
- Stellen Sie sicher, dass Sie in Ihrem AWS-Konto angemeldet sind
- Klicken Sie auf den folgenden Link: AWS Serverless Application Repository
- Klicken Sie auf 'Deploy'
- Klicken Sie erneut auf 'Deploy'
- Warten Sie, bis die Meldung 'Your application has been deployed' erscheint
- Klicken Sie auf 'View CloudFormation Stack'
- Unter 'Outputs' finden Sie die URL für die Anwendung (WebsiteURL)
Spickzettel
Der vollständige Durchgang der Lektionen (in Entwicklung) befindet sich in der Datei LESSONS.md
Die folgenden Sicherheitsprobleme existieren in der Anwendung:
- Event-Daten-Injektion, die zu OS-Befehlsinjektion führt (SAS-01)
- Benutzer können die API mit einem
document_url-Parameterwert aufrufen, der Linux-OS-Befehle enthält. Z. B. ; ls -LF
- Unsachgemäße Ausnahmebehandlung und ausführliche Fehlermeldungen (SAS-10), die zur Offenlegung sensibler Informationen führen
- Zum Beispiel gibt der Aufruf der API ohne den erforderlichen Parameter einen ausführlichen Stack-Trace/eine ausführliche Ausnahme zurück
- Unsichere Serverless-Bereitstellungskonfiguration (SAS-03)
- Öffentlich geöffneter S3-Bucket (sein Name kann aus dem Subdomain-/Präfix der URL entdeckt werden)
- Der Parameter
document_url ist im API-Gateway nicht als 'erforderlicher' Parameter definiert und kann weggelassen werden
- Überprivilegierte Funktionsberechtigungen & -rollen, die zu Datenlecks von Informationen führen, die in einer DynamoDB-Tabelle gespeichert sind (SAS-04)
- Die Funktion hat CRUD-Berechtigungen für die Dynamo-Tabelle, die zum Lesen sensibler Daten oder zur Manipulation von Daten missbraucht werden können
- Die Funktion hat eine FullAccess-Richtlinie auf dem S3-Bucket, was zu Datenmanipulation und Datenlecks usw. führt
- Unzureichende Funktionsüberwachung und -protokollierung (SAS-05) – die Anwendung protokolliert Angriffe und Fehler auf Anwendungsebene nicht ordnungsgemäß (kann durch CloudWatch/CloudTrail demonstriert werden)
- Unsichere Abhängigkeiten von Drittanbietern (SAS-06) – kann durch Scannen des Projekts mit einem OSS-Scanner-Tool erkannt werden
- Das verwundbare Paket ist
node-uuid
- Denial of Service auf Anwendungsebene (SAS-08), der leicht demonstriert werden kann
- Ein Angreifer kann die API rekursiv mehrfach aufrufen und dadurch im Wesentlichen genügend Instanzen erzeugen, um das reservierte Kapazitätslimit der Funktion (das auf 5 gesetzt ist) zu erreichen. Zum Beispiel:
https://i92uw6vw73.execute-api.us-east-1.amazonaws.com/Prod/api/convert?document_url=https%3A%2F%2Fi92uw6vw73.execute-api.us-east-1.amazonaws.com%2FProd%2Fapi%2Fconvert%3Fdocument_url...
Danksagungen
ServerlessGoat wurde ursprünglich von Yuri Shapira & Ory Segal, PureSec, erstellt und an OWASP beigetragen.