Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AWS Transit Gateway Peering Exploit

By James SheardSep 12, 20243 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Hintergrund

Beim Anlegen eines AWS Transit Gateway Peering Attachments kann jedes Source Transit Gateway eine Verbindung zu einem Ziel-Transit-Gateway anfragen. Damit die Verbindung zustande kommt, sind drei Angaben erforderlich:

  • AWS Account ID des Zielaccounts
  • Transit Gateway ID des Ziel-Transit-Gateway-Netzwerks
  • Region des Ziel-Transit-Gateways

Nach dem Provisionieren steht das Attachment zunächst im Status "pending-acceptance" und wartet auf die Bestätigung durch den Zielaccount. Eine Sicherheitslücke erlaubte es dem Source-Account jedoch, diesen Schritt unter bestimmten Bedingungen zu umgehen.

Transit Gateway Attachment im Status Pending Acceptance

In der AWS Console hat der Source-Account (Anforderer) zwar die Option, die Anfrage anzunehmen — der Versuch endet jedoch mit folgendem Fehler:

Die AWS Console lehnt eine Annahme durch den Source-Account ab

Das ist das erwartete Verhalten, denn nur der Zielaccount sollte die Anfrage annehmen dürfen.

Wird die AWS API hingegen direkt über die AWS CLI aufgerufen, lässt sich die Peering-Anfrage vom Source-Account (Anforderer) ohne korrekte Autorisierung bestätigen — sofern sich die Transit Gateways in unterschiedlichen Regionen befinden (z. B. Irland und London).

Antwort der AWS CLI nach Annahme des Attachments im Source-Account

In der Folge wechselt das Attachment in den Status "Available" und der Source-Account (möglicherweise eine unbefugte Partei) erhält Zugriff auf Ihr Netzwerk. Damit hat der Source-Account — also potenziell jeder — Zugang zu Ihrem Netzwerk.

Transit Gateway Attachment Available

Den Exploit erkennen

Der Exploit lässt sich in CloudTrail nachvollziehen — dort wird die Aktivität des externen Accounts beim Bestätigen der Attachment-Anfrage sichtbar:

CloudTrail-Log im Zielaccount

Den Exploit eindämmen

Der API-Aufruf AcceptTransitGatewayPeeringAttachment lässt sich glücklicherweise per SCP blockieren.

Im folgenden Policy-Beispiel wird jedem Account außer dem angegebenen vertrauenswürdigen Account untersagt, Peering Attachments anzunehmen:

{
 "Version": "2012-10-17",
 "Statement": [\
   {\
     "Sid": "Statement1",\
     "Effect": "Deny",\
     "Action": [\
       "ec2:AcceptTransitGatewayPeeringAttachment"\
     ],\
     "Resource": "*",\
     "Condition": {\
       "StringNotEquals": {\
         "aws:PrincipalAccount": "339712835926"\
       }\
     }\
   }\
 ]
}

Um Ihre gesamte Organisation abzusichern, lässt sich die Policy um Ihre Organisations-ID erweitern:

"Version": "2012-10-17",
 "Statement": [\
   {\
     "Sid": "Statement1",\
     "Effect": "Deny",\
     "Action": [\
       "ec2:AcceptTransitGatewayPeeringAttachment"\
     ],\
     "Resource": "*",\
     "Condition": {\
       "StringNotEquals": {\
         "aws:PrincipalOrgID": "o-xxxxxxxxxxx"\
       }\
     }\
   }\
 ]
}

Mit diesen Policies laufen unbefugte Accounts beim Versuch, Transit Gateway Peering Attachments anzunehmen, zuverlässig in eine Fehlermeldung.

Abgelehnt im Source-Account

Wir haben das Problem am 25. Juli 2024 unmittelbar nach der Entdeckung an AWS gemeldet; seit dem 7. August 2024 ist es behoben.

DoiT unterstützt cloud-native Unternehmen dabei, die Cloud zu verstehen und gezielt für ihr Wachstum zu nutzen. Wir verbinden dafür intelligente Technologie mit erstklassigem Consulting, 24/7-Support und Trainings — damit Sie Cloud-Herausforderungen lösen, Cloud-Know-how aufbauen und Innovation beschleunigen. Sprechen Sie uns an, wenn wir Sie auf Ihrem Weg in die Cloud begleiten dürfen.