
Scannt AWS IAM-Konfigurationen auf Shadow-Administratoren, indem es falsch konfigurierte Deny-Richtlinien erkennt, die Aktionen von Benutzern auf Gruppen nicht einschränken, und so die Erkennung und Behebung von Privilegieneskalation ermöglicht.
Scannen Sie Ihre AWS IAM-Konfiguration auf Schattenadministratoren in AWS IAM, basierend auf falsch konfigurierten Deny-Richtlinien, die Benutzer in Gruppen nicht betreffen, entdeckt vom Lightspin Security Research Team.
Das Tool erkennt die Fehlkonfigurationen in den folgenden IAM-Objekten:
Managed Policies
Users Inline Policies
Groups Inline Policies
Roles Inline Policies
Die AWS IAM-Auswertungslogik für Deny-Richtlinien, die auf Gruppen angewendet werden, funktioniert nicht so, wie die meisten Sicherheitsingenieure es von anderen Autorisierungsmechanismen gewohnt sind.
Angenommen, eine Richtlinie mit einer Gruppenressource hat eine explizite Deny. In diesem Fall betrifft dies nur Gruppenaktionen und nicht Benutzeraktionen, was Organisationen für Fehlkonfigurationen und Schwachstellen öffnet, wenn sie annehmen, der Prozess sei derselbe wie z.B. bei Active Directory.
Beispiel für eine angreifbare JSON-Richtlinie:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProtectManagersByDeny",
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::123456789999:group/managers"
}
]
}
In diesem Beispiel soll die Richtlinie alle IAM-Aktionen verweigern, die von Benutzern, Gruppen oder Rollen, an die diese Richtlinie angehängt ist, gegenüber der Gruppe namens managers durchgeführt werden.
Tatsache ist, dass eine einfache IAM-Aktion wie iam:ChangePassword funktionieren würde, da die Deny-Richtlinie unwirksam ist.
Link zum vollständigen Sicherheitsforschungsblog
AWS IAM unterscheidet klar zwischen Benutzerobjektaktionen und Gruppenobjektaktionen.
Die folgende Liste enthält die Benutzerobjektaktionen, die das Tool über Deny-Richtlinien scannt, die Gruppen betreffen (zusätzlich zu Wildcard):
AWS_USER_ACTIONS = ["iam:CreateUser",
"iam:GetUser",
"iam:UpdateUser",
"iam:DeleteUser",
"iam:GetUserPolicy",
"iam:PutUserPolicy",
"iam:DeleteUserPolicy",
"iam:ListUserPolicies",
"iam:AttachUserPolicy",
"iam:DetachUserPolicy",
"iam:ListAttachedUserPolicies",
"iam:SimulatePrincipalPolicy",
"iam:GetContextKeysForPrincipalPolicy",
"iam:TagUser",
"iam:UpdateSSHPublicKey",
"iam:UntagUser",
"iam:GetSSHPublicKey",
"iam:ListUserTags",
"iam:DeleteSSHPublicKey",
"iam:GetLoginProfile",
"iam:GetAccessKeyLastUsed",
"iam:UpdateLoginProfile",
"iam:UploadSigningCertificate",
"iam:DeleteLoginProfile",
"iam:ListSigningCertificates",
"iam:CreateLoginProfile",
"iam:UpdateSigningCertificate",
"iam:EnableMFADevice",
"iam:DeleteSigningCertificate",
"iam:ResyncMFADevice",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:ResetServiceSpecificCredential",
"iam:DeactivateMFADevice",
"iam:CreateServiceSpecificCredential",
"iam:ChangePassword",
"iam:UpdateServiceSpecificCredential",
"iam:CreateAccessKey",
"iam:DeleteServiceSpecificCredential",
"iam:ListAccessKeys",
"iam:PutUserPermissionsBoundary",
"iam:UpdateAccessKey",
"iam:DeleteUserPermissionsBoundary",
"iam:DeleteAccessKey",
"iam:ListGroupsForUser",
"iam:ListSSHPublicKeys",
"iam:UploadSSHPublicKey"]
Viele der oben genannten Benutzerobjektaktionen können leicht zu einer Privilegienausweitung oder zur Kompromittierung des Kontos führen, z.B. durch Zurücksetzen des Admin-Passworts, Deaktivieren der Root-Konto-MFA usw.
Red-Shadow ist mit Python 3 und Boto3 erstellt.
Das Tool benötigt:
sudo git clone https://github.com/lightspin-tech/red-shadow.git
cd red-shadow
pip3 install -r requirements.txt
python3 red-shadow.py
Die Ergebnisse decken jedes IAM-Objekt auf, das in AWS anfällig für solche Autorisierungsumgehungen ist.
Beispiel für die Ausgabe der Ergebnisse:
++ Starting Red-Shadow ++
++ AWS IAM Vulnerability Scanner
++ Red Shadow scans for shadow admins in AWS IAM based on misconfigured deny policies not affecting users in groups
Step 1: Searching for IAM Group misconfigurations in managed policies
Found potential misconfiguration at arn:aws:iam::123456789999:policy/ProtectManagers
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 2: Searching for IAM Group misconfigurations in Users inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 3: Searching for IAM Group misconfigurations in Groups inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 4: Searching for IAM Group misconfigurations in Roles inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Done
In dieser Konsolenausgabe sehen wir, dass unsere ProtectManagers-Deny-Richtlinie unwirksam und anfällig für Angriffe wie die oben genannte Privilegienausweitung ist.
Um die IAM-Sicherheitslücke zu validieren und die Ausnutzung durchzuführen, führen Sie den folgenden Ablauf aus: