Lier un rôle à un pool d'identités Cognito
Peut lier un rôle à un Cognito Identity Pool et récupérer ses identifiants.
N'accorde l'escalade qu'en combinaison. Tous ces éléments sont nécessaires ensemble :
iam:PassRolecognito-identity:SetIdentityPoolRolesiam:PassRole peut lier un rôle à un Cognito Identity Pool et récupérer ses identifiants, mais uniquement lorsqu'elle est détenue conjointement avec cognito-identity:SetIdentityPoolRoles. Détenues ensemble, elles atteignent l'accès administrateur.
Pourquoi c'est dangereux
Un principal détient iam:PassRole sur le rôle cible plus cognito-identity:SetIdentityPoolRoles, il peut donc lier le rôle cible comme rôle (non authentifié) d'un pool d'identités Cognito puis échanger des identifiants temporaires pour le rôle cible via GetId + GetCredentialsForIdentity. Comme le rôle cible fait confiance à cognito-identity.amazonaws.com (AssumeRoleWithWebIdentity), la liaison est acceptée ; si le rôle cible est privilégié, il s'agit d'une escalade de privilèges complète, atteignable même par un appelant anonyme.
En termes MITRE ATT&CK, cela correspond à T1078.004, Comptes valides : comptes cloud, dans la tactique escalade de privilèges. AWS l'enregistre dans CloudTrail sous SetIdentityPoolRoles, GetCredentialsForIdentity. L'appel apparaît dans CloudTrail mais se fond dans l'administration normale, il lui faut donc une règle pour ressortir.
Détection
SetIdentityPoolRolesGetCredentialsForIdentityPrérequis
La politique d'approbation du rôle cible doit autoriser cognito-identity.amazonaws.com via sts:AssumeRoleWithWebIdentity ; un identity pool existant (accès non authentifié activé pour le chemin anonyme).
MITRE ATT&CK
T1078.004 · Comptes valides : comptes cloudTactique
Escalade de privilèges
Un contrôle qui le supprimerait : Retirer iam:PassRole / cognito-identity:SetIdentityPoolRoles ; restreindre la portée des rôles d'identity pool et désactiver l'accès non authentifié.
La décision de l'appliquer dépend de la façon dont la permission est utilisée dans votre environnement, il s'agit donc d'une décision métier plutôt que d'un correctif automatique. La même permission peut être porteuse dans un compte et pur risque dans un autre.
Pathbreak confirme si ce chemin se résout dans votre compte, le classe par rapport aux autres selon l'ampleur de ce qu'il ouvre, et utilise votre modèle de menace et votre contexte métier pour montrer quels chemins valent la peine d'être coupés.
Questions
Que permet iam:PassRole ?
Peut lier un rôle à un Cognito Identity Pool et récupérer ses identifiants.
Que faut-il d'autre pour que iam:PassRole soit dangereux ?
Cela ne devient une escalade que lorsqu'il est détenu conjointement avec cognito-identity:SetIdentityPoolRoles. À lui seul, il ne suffit pas, ce qui rend la combinaison facile à manquer.
Comment détecter l'association d'un rôle à un Cognito Identity Pool ?
Surveillez SetIdentityPoolRoles, GetCredentialsForIdentity dans CloudTrail. Cet appel apparaît dans CloudTrail mais se fond dans l'administration normale, il faut donc une règle pour le faire ressortir.
Comment briser ce chemin ?
Un contrôle qui le supprimerait est : Retirez iam:PassRole / cognito-identity:SetIdentityPoolRoles ; restreignez les rôles de pool d'identités et désactivez l'accès non authentifié. L'appliquer ou non dépend de la manière dont l'autorisation est utilisée dans votre compte, il s'agit donc d'une décision métier plutôt que d'un correctif automatique.
De quelle technique MITRE ATT&CK s'agit-il ?
T1078.004, Comptes valides : comptes cloud, dans la tactique escalade de privilèges.
Chemins associés
Références
Trouvez ceci dans votre propre compte
Nous réalisons un scan en lecture seule d'un compte AWS et vous montrons lesquels de ces chemins existent, classés par rayon d'impact, avec le changement qui brise chacun d'eux. Premiers chemins validés en moins d'une heure.