
Scansiona le configurazioni AWS IAM per gli amministratori ombra rilevando politiche deny configurate in modo errato che non riescono a limitare le azioni degli utenti sui gruppi, consentendo il rilevamento e la correzione dell'escalation dei privilegi.
Scansiona la tua configurazione AWS IAM per individuare shadow admin in AWS IAM basati su policy di negazione configurate in modo errato che non influenzano gli utenti nei gruppi, scoperte dal Team di Ricerca sulla Sicurezza di Lightspin.
Lo strumento rileva le configurazioni errate nei seguenti oggetti IAM:
Policies Gestite
Policies Inline degli Utenti
Policies Inline dei Gruppi
Policies Inline dei Ruoli
La logica di valutazione AWS IAM per le policy di negazione applicate ai gruppi non funziona allo stesso modo a cui la maggior parte degli ingegneri della sicurezza potrebbe essere abituata con altri meccanismi di autorizzazione.
Supponiamo che una policy con una risorsa di gruppo abbia una negazione esplicita. In tal caso, ciò influenzerà solo le azioni di gruppo e non le azioni degli utenti, esponendo le organizzazioni a configurazioni errate e vulnerabilità se presumono che il processo sia lo stesso, ad esempio, di Active Directory.
Esempio di policy json vulnerabile:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProtectManagersByDeny",
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::123456789999:group/managers"
}
]
}
In questo esempio, la policy dovrebbe negare qualsiasi azione iam eseguita da utenti, gruppi o ruoli a cui è allegata tale policy, verso il gruppo chiamato managers.
Il fatto è che una semplice azione IAM come iam:ChangePassword funzionerebbe perché la policy di negazione è inefficace.
Link al blog completo della ricerca sulla sicurezza
AWS IAM ha una chiara separazione tra le azioni sugli oggetti utente e le azioni sugli oggetti di gruppo.
La seguente lista include le azioni sugli oggetti utente che lo strumento scansiona sulle policy di negazione che influenzano i gruppi (oltre al 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"]
Molte delle azioni sugli oggetti utente menzionate sopra possono facilmente portare a un escalation di privilegi o al compromissione dell'account, come il ripristino della password dell'amministratore, la disattivazione dell'MFA dell'account root e altro.
Red-Shadow è costruito con Python 3 e Boto3.
Lo strumento richiede:
sudo git clone https://github.com/lightspin-tech/red-shadow.git
cd red-shadow
pip3 install -r requirements.txt
python3 red-shadow.py
I risultati scoprono qualsiasi oggetto IAM vulnerabile a tale bypass di autorizzazione in AWS.
Esempio di output dei risultati:
++ 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 questo output della console, possiamo vedere che la nostra policy di negazione ProtectManagers è inefficace e vulnerabile ad attacchi come l'escalation di privilegi menzionata sopra.
Per convalidare la vulnerabilità IAM ed eseguire lo sfruttamento, puoi seguire il seguente flusso:
aws iam create-group --group-name managers
aws iam attach-group-policy --group-name managers --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
aws iam create-user --user-name JohnAdmin
aws iam add-user-to-group --user-name JohnAdmin --group-name managers
crea un file policy.json con i contenuti qui sotto (sostituisci l'ID dell'account):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProtectManagersByDeny",
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::123456789999:group/managers"
}
]
}
aws iam create-policy --policy-name ProtectManagers --policy-document file://policy.json
aws iam create-group --group-name backend-dev
aws iam create-user --user-name BobAttacker
aws iam add-user-to-group --user-name BobAttacker --group-name backend-dev
aws iam attach-group-policy --group-name backend-dev --policy-arn arn:aws:iam::123456789999:policy/ProtectManagers