
Verhindern Sie SSRF-Angriffe auf AWS EC2 durch automatisierte Upgrades auf den sichereren Instance Metadata Service v2 (IMDSv2).
SSRF-Angriffe auf AWS EC2 verhindern durch automatisierte Upgrades auf den sichereren Instance Metadata Service v2 (IMDSv2).
Zweck und Funktionalität
Entwicklungsteams können eine große Vielfalt an Compute-Infrastruktur in AWS haben, die sie vor bestimmten Schwachstellen schützen müssen, die den Metadatendienst ausnutzen. Der Metadatendienst muss auf Instanzen ausgeführt werden, wenn IAM verwendet wird oder wenn die Instanz beim Start Benutzerdaten benötigt. Die Einschränkung der Angriffsfläche Ihrer Instanzen ist entscheidend, um zu verhindern, dass Angreifer durch Diebstahl von Informationen des Dienstes in Ihre Umgebung eindringen können. Zahlreiche bekannte Angriffe in der Vergangenheit haben diesen speziellen Dienst genutzt, um eine Rolle auszunutzen, die an die Instanz gebunden ist, oder um sensible Daten zu erbeuten, die über den Metadatendienst zugänglich sind. Metabadger kann helfen, zu identifizieren, wo und wie Sie den Instance Metadata Service nutzen, und gibt Ihnen gleichzeitig die Möglichkeit, unerwünschte Angriffsmöglichkeiten zu reduzieren, um Ihr Gesamtrisiko beim Betrieb in EC2 zu senken.
Die Verwendung dieses Tools kann Ihre AWS-Compute-Infrastruktur beeinträchtigen, da nicht alle Dienste und Anwendungen entweder ohne den Metadatendienst oder mit Version 2 funktionieren. Seien Sie vorsichtig beim Einsatz in Ihrer Produktionsumgebung und haben Sie einen Rollback-Plan bereit, falls etwas ungewöhnlich erscheint. Metabadger verfügt über die integrierte Möglichkeit, mit dem Flag -v1 auf die Standardversion 1 des Dienstes zurückzusetzen. Sie können dies verwenden, um Ihre Instanzen schnell wieder auf die Standardeinstellung zurückzusetzen. Idealerweise sollten Sie dieses Tool ausführen und Ihre Metadatenversion in Nicht-Produktionsumgebungen als Testumgebung aktualisieren, bevor Sie es in der Produktion einsetzen.
Schritt 1
Zunächst möchten wir die Gesamtnutzung des Metadatendienstes in einer bestimmten AWS-Region ermitteln. Metabadger bewertet den aktuellen Status Ihrer Nutzung in der Region, auf die Ihre Anmeldeinformationen in Ihrer /.aws/credentials-Datei verweisen, oder die aktuell angenommene Rolle. Sie können auch das Flag --region angeben, wenn Sie den Befehl discover-metadata ausführen, um zu einer anderen als der aktuell konfigurierten Region zu wechseln. Wenn Sie eine gute Vorstellung davon haben, welche Version Ihre Instanzen ausführen und ob der Dienst aktiviert oder deaktiviert ist, können Sie einen viel konkreteren Aktionsplan zur Härtung des Dienstes erstellen. Beachten Sie, dass Sie die genaue Bedeutung jeder Metadatenoption hier nachlesen können.
Schritt 2
Einer der Bereiche, die bei der Umstellung auf Version 2 des Dienstes bewertet werden sollten, ist die Verwendung von IAM-Rollen. Metabadger ermöglicht es Ihnen, Instanzen in einer Region zu identifizieren, die möglicherweise bereits eine IAM-Rolle verwenden. Der Befehl discover-role-usage gibt eine Liste von Instanzen aus, an die Rollen gebunden sind. Wenn Sie viele Instanzen haben, die Rollen verwenden, sollten Sie bei der Aktualisierung des Dienstes auf Version 2 Vorsicht walten lassen, um sicherzustellen, dass die Gesamtfunktionalität Ihrer Workloads nicht beeinträchtigt wird.
Schritt 3
Nach Abschluss der ersten Erkundung und Bewertung können Sie nun einen stufenweisen Ansatz zur Härtung Ihrer Compute-Infrastruktur erstellen, um entweder Version 2 des Metadatendienstes zu verwenden oder ihn dort zu deaktivieren, wo er nicht benötigt wird. Der Befehl harden-metadata ermöglicht es Ihnen, standardmäßig alle Instanzen in einer bestimmten Region zu aktualisieren. Sie können auch Instanz-Tags mit dem Flag --tags oder eine Eingabedatei mit einer CSV-Liste von Instanzen übergeben, für die Sie eine Konfiguration anwenden möchten. Sobald Sie die entsprechenden Aktualisierungen auf Version 2 vorgenommen und den Dienst dort deaktiviert haben, wo er nicht verwendet wird, können Sie mit den Punkten aus Schritt 1 erneut prüfen, ob Ihre Umgebung abgesichert ist. Wenn Sie bestimmte Instanzen nicht aktualisieren möchten, können Sie sie über das Flag --exclusion nach Tag oder Instanz-ID ausschließen.
Metabadger erfordert eine IAM-Rolle oder Anmeldeinformationen mit den folgenden Berechtigungen:
ec2:ModifyInstanceAttribute
ec2:DescribeInstances
Wenn Sie Änderungen am Instance Metadata Service vornehmen, sollten Sie vorsichtig sein und zusätzliche Anleitungen von AWS befolgen, wie Sie sicher auf Version 2 upgraden können. Metabadger wurde entwickelt, um Sie bei diesem Prozess zu unterstützen und Ihre Compute-Infrastruktur in AWS weiter zu sichern.
AWS Best Practice Guide on Updating to IMDSv2
Installation mit pip
pip3 install --user metabadger
Installation über Github
$ git clone https://github.com/salesforce/metabadger
$ cd metabadger
$ pip install -e .
$ metabadger
Usage: metabadger [OPTIONS] COMMAND [ARGS]...
Metabadger is an AWS Security Tool used for discovering and hardening the
Instance Metadata service.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
cloudwatch-metrics Pull CloudWatch Metrics for MetadataNoToken usage
disable-metadata Disable the IMDS service on EC2 instances
discover-metadata Discover summary of IMDS service usage within EC2
discover-role-usage Discover summary of IAM role usage for EC2
harden-metadata Harden the AWS instance metadata service from v1 to v2
cloudwatch-metrics
Rufen Sie direkt Informationen über Ihre Nutzung von IMDSv1 mit der Metrik MetadataNoToken in AWS CloudWatch ab. Dieser Befehl zeigt Ihnen Instanzen innerhalb der letzten Stunde an, die aktiv Version 1 des Dienstes verwenden. Beachten Sie, dass Sie für die Ausführung dieses Befehls über IAM-Berechtigungen verfügen sollten, um CloudWatch-Metriken anzeigen zu können.
Options:
-a, --all-region Pull CloudWatch metrics across all available
regions
-r, --region TEXT Specify which AWS region you will perform this
command in
-t, --time-period INTEGER The CloudWatch time period in seconds used to
track the IMDS v1 metric
-p, --profile TEXT Specify the AWS IAM profile.
--help Show this message and exit.
discover-metadata
Eine Zusammenfassung Ihrer gesamten Instance-Metadata-Service-Nutzung, einschließlich der Version und eines Gesamtdurchsetzungsprozentsatzes. Diese Zahlen helfen Ihnen, die allgemeine Härtung Ihrer Metadatennutzung zu verstehen und zu erkennen, wo Sie Version 2 gegenüber Version 1 durchsetzen.
Options:
-a, --all-region Provide a metadata summary for all available regions in the AWS account
-j, --json Get metadata summary in JSON format
-r, --region TEXT Specify which AWS region you will perform this command in
-p, --profile TEXT Specify the AWS IAM profile.
discover-role-usage
Eine Zusammenfassung der Instanzen und der von ihnen verwendeten Rollen. Dies gibt Ihnen eine gute Vorstellung von der Vorsicht, die Sie bei Aktualisierungen des Metadatendienstes selbst walten lassen müssen.
Options:
-p, --profile TEXT Specify the AWS IAM profile.
-r, --region TEXT Specify which AWS region you will perform this command in
harden-metadata
Die Möglichkeit, Instanzen so zu ändern, dass sie entweder Metadaten v1 oder v2 verwenden, und zu verstehen, wie viele Instanzen durch einen Probelauf (Dry Run) geändert würden.
Options:
-a, --all-region Update IMDS across all regions in your account
-e, --exclusion The exclusion flag will apply to everything besides what is specified, tags or instances
-d, --dry-run Dry run of hardening metadata changes
-v1, --v1 Enforces v1 of the metadata service
-i, --input-file PATH Path of csv file of instances to harden IMDS for
-t, --tags TEXT A comma seperated list of tags to apply the hardening setting to
-r, --region TEXT Specify which AWS region you will perform this command in
-p, --profile TEXT Specify the AWS IAM profile.
disable-metadata
Verwenden Sie diesen Befehl, um den Metadatendienst auf Instanzen vollständig zu deaktivieren.
Options:
-e, --exclusion The exclusion flag will apply to everything besides what is specified, tags or instances
-d, --dry-run Dry run of disabling the metadata service
-i, --input-file PATH Path of csv file of instances to disable IMDS for
-t, --tags TEXT A comma seperated list of tags to apply the hardening setting to
-r, --region TEXT Specify which AWS region you will perform this command in
-p, --profile TEXT Specify the AWS IAM profile.
Alle von Metabadger vorgenommenen Änderungen werden in einer Datei mit dem Namen metabadger.log im Arbeitsverzeichnis protokolliert. Die Datei enthält für jede Aktion, die das Tool bei der Änderung des Metadatendienstes ausführt, Folgendes: