Serverlose Überprivilegierung
Eine Funktion ist ein Prinzipal und ihre Anmeldeinformationen sind Umgebungsdaten.
Was ist Serverlose Überprivilegierung?
Eine Funktion ist ein Prinzipal. Die Anmeldeinformationen für die Ausführungsrolle sind Ambient, sodass jeder, der die Funktion ausführen kann, die Rolle behält, ohne etwas zu stehlen. Das ist in Ordnung, bis ein Bild-Resizer über kontoweite Berechtigungen verfügt, Geheimnisse in Umgebungsvariablen behält und nicht authentifizierte Anfragen entgegennimmt. Sie werden die Funktions-URL im Netzwerkfenster des Browsers erkennen, ein übriggebliebenes Debug-Flag auslösen, das die Umgebung ausgibt, und ein Produktionsgeheimnis als Funktion lesen. Anschließend legen Sie den Umfang der Rolle fest, fordern eine IAM-Authentifizierung an und verschieben Geheimnisse in eine Managerreferenz.
Was Sie lernen in Serverlose Überprivilegierung
- Eine Funktion ist ein Prinzipal und ihre Anmeldeinformationen sind Umgebungsdaten, sodass die Codeausführung in der Funktion einen unmittelbaren Zugriff auf ihre Rolle darstellt.
- Geheimnisse in Umgebungsvariablen werden jedem zugänglich gemacht, der die Funktionskonfiguration lesen kann, und sie tauchen in der Diagnose auf.
- Eine nicht authentifizierte Funktions-URL verwandelt eine interne Fehlkonfiguration in eine über das Internet erreichbare.
- Der Umfang der Rolle ist am wichtigsten, da sie den Schaden begrenzt, wenn die anderen beiden Kontrollen versagen.
Serverlose Überprivilegierung — Trainingsschritte
-
Beginnen Sie dort, wo jeder hinschauen kann
Bob ist nicht in Vaelrick. Er befindet sich auf ihrer öffentlichen Website mit Immobilienangeboten, der gleichen Seite, die jeder Käufer sieht. Hier gibt es nichts Privilegiertes – und genau deshalb beginnt er hier.
-
Achten Sie darauf, was auf der Seite verlangt wird
Bob öffnet das Netzwerkfenster des Browsers und lädt die Seite neu, sodass er die Anfragen der Galerie sehen kann, bevor ein Bild angezeigt wird.
-
Es antwortet jedem
Bob ruft den Endpunkt direkt von seinem eigenen Computer aus an, ohne jegliche Anmeldeinformationen.
-
Das Debug-Flag gibt seine Identität zurück
Bob fügt den Debug-Parameter hinzu, von dem ihm die Site erzählt hat. Die Funktion druckt ihre gesamte Umgebung.
-
Legen Sie die Identität der Funktion fest
Die drei AWS_-Werte aus dem Dump sind ein vollständiger, funktionierender Satz temporärer Anmeldeinformationen. Bob lädt sie in ein benanntes Profil auf seinem eigenen Computer und von diesem Moment an kann seine CLI als Funktion fungieren.
-
Werde zur Funktion
Das Profil wird geladen. Bob stellt AWS die erste Frage, die ein Angreifer mit neuen Anmeldeinformationen stellt: Wer bin ich jetzt?
-
Wie weit reicht ein Thumbnail-Maker?
Eine Funktion, die Miniaturansichten schreibt, sollte einen Bucket sehen. Bob bittet um alle.
-
Nimm die Kronjuwelen
Bob nutzt die Rolle, um ein Geheimnis zu lesen, das überhaupt nichts mit der Größenänderung von Bildern zu tun hat.
-
Welcher Fehler hat den Schaden verursacht?
Nennen Sie vor der Reaktion, was aus einem durchgesickerten Endpunkt einen Produktionsverstoß verursacht hat.
-
Jemand verwendet unseren Stripe-Schlüssel
Der Zahlungsabwickler von Vaelrick hat mit seinem Live-Schlüssel signierte API-Aufrufe von einer unbekannten Adresse markiert. Dieser Schlüssel befindet sich im Secrets Manager, der angeblich der sichere Ort dafür ist.
Abdeckung der Sicherheits-Frameworks
CWE
- CWE-250 Execution with Unnecessary Privileges
- CWE-522 Insufficiently Protected Credentials
MITRE ATT&CK
- T1552 Unsecured Credentials
- T1078.004 Valid Accounts: Cloud Accounts
CIS Controls
- CIS 6 Access Control Management
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.AA Identity Management, Authentication, and Access Control