AWS - Missbrauch von Lambda-Erweiterungen

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Lambda-Erweiterungen

Lambda-Erweiterungen verbessern Funktionen, indem sie sich mit verschiedenen Überwachungs-, Beobachtungs-, Sicherheits- und Governance-Tools integrieren. Diese Erweiterungen, die über .zip-Archive mit Lambda-Schichten hinzugefügt oder in Container-Image-Bereitstellungen enthalten sind, arbeiten in zwei Modi: intern und extern.

  • Interne Erweiterungen verschmelzen mit dem Laufzeitprozess und manipulieren dessen Start mit sprachspezifischen Umgebungsvariablen und Wrapper-Skripten. Diese Anpassung gilt für eine Reihe von Laufzeiten, einschließlich Java Correto 8 und 11, Node.js 10 und 12 sowie .NET Core 3.1.
  • Externe Erweiterungen laufen als separate Prozesse und halten die Betriebsanpassung an den Lebenszyklus der Lambda-Funktion aufrecht. Sie sind mit verschiedenen Laufzeiten wie Node.js 10 und 12, Python 3.7 und 3.8, Ruby 2.5 und 2.7, Java Corretto 8 und 11, .NET Core 3.1 und benutzerdefinierten Laufzeiten kompatibel.

Für weitere Informationen darüber, wie Lambda-Erweiterungen funktionieren, siehe die Dokumentation.

Externe Erweiterung für Persistenz, Stehlen von Anfragen & Modifizieren von Anfragen

Dies ist eine Zusammenfassung der in diesem Beitrag vorgeschlagenen Technik: https://www.clearvector.com/blog/lambda-spy/

Es wurde festgestellt, dass der Standard-Linux-Kernel in der Lambda-Laufzeitumgebung mit den Systemaufrufen “process_vm_readv” und “process_vm_writev” kompiliert ist. Und alle Prozesse laufen mit derselben Benutzer-ID, selbst der neue Prozess, der für die externe Erweiterung erstellt wurde. Das bedeutet, dass eine externe Erweiterung vollen Lese- und Schreibzugriff auf den Heap-Speicher von Rapid hat, per Design.

Darüber hinaus haben Lambda-Erweiterungen die Fähigkeit, sich für Aufrufereignisse anzumelden, jedoch gibt AWS die Rohdaten nicht an diese Erweiterungen weiter. Dies stellt sicher, dass Erweiterungen keinen Zugriff auf sensible Informationen haben, die über die HTTP-Anfrage übertragen werden.

Der Init (Rapid)-Prozess überwacht alle API-Anfragen unter http://127.0.0.1:9001, während Lambda-Erweiterungen initialisiert und vor der Ausführung von Laufzeitcode, aber nach Rapid, ausgeführt werden.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

Die Variable AWS_LAMBDA_RUNTIME_API gibt die IP-Adresse und die Portnummer der Rapid-API an untergeordnete Laufzeitprozesse und zusätzliche Erweiterungen weiter.

warning

Durch Ändern der AWS_LAMBDA_RUNTIME_API-Umgebungsvariable auf einen Port, auf den wir Zugriff haben, ist es möglich, alle Aktionen innerhalb der Lambda-Laufzeit abzufangen (man-in-the-middle). Dies ist möglich, weil die Erweiterung mit denselben Berechtigungen wie Rapid Init läuft und der Kernel des Systems Änderungen am Prozessspeicher zulässt, was die Änderung der Portnummer ermöglicht.

Da Erweiterungen vor jedem Laufzeitcode ausgeführt werden, beeinflusst die Modifikation der Umgebungsvariable den Laufzeitprozess (z. B. Python, Java, Node, Ruby) beim Start. Darüber hinaus werden nachfolgende Erweiterungen, die auf dieser Variablen basieren, ebenfalls über unsere Erweiterung geleitet. Diese Konfiguration könnte Malware ermöglichen, Sicherheitsmaßnahmen oder Protokollierungserweiterungen direkt innerhalb der Laufzeitumgebung vollständig zu umgehen.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

Das Tool lambda-spy wurde entwickelt, um Speicher zu schreiben und sensible Informationen aus Lambda-Anfragen, anderen Erweiterungsanfragen und sogar diese zu modifizieren.

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks