Vincular un rol a un Cognito Identity Pool
Puede vincular un rol a un Cognito Identity Pool y canjear sus credenciales.
Concede escalada solo en combinación. Se necesitan todos estos a la vez:
iam:PassRolecognito-identity:SetIdentityPoolRolesiam:PassRole puede vincular un rol a un Cognito Identity Pool y canjear sus credenciales, pero solo cuando se combina con cognito-identity:SetIdentityPoolRoles. Combinados, llegan a acceso de administrador.
Por qué es peligroso
Un principal tiene iam:PassRole sobre el rol objetivo más cognito-identity:SetIdentityPoolRoles, por lo que puede vincular el rol objetivo como rol (no autenticado) de un Cognito Identity Pool y después canjear credenciales temporales del rol objetivo mediante GetId + GetCredentialsForIdentity. Como el rol objetivo confía en cognito-identity.amazonaws.com (AssumeRoleWithWebIdentity), la vinculación se acepta; si el rol objetivo es privilegiado, se trata de una escalada total de privilegios, alcanzable incluso por un llamador anónimo.
En términos de MITRE ATT&CK, esto corresponde a T1078.004, Cuentas válidas: cuentas cloud, en la táctica de escalada de privilegios. AWS lo registra en CloudTrail como SetIdentityPoolRoles, GetCredentialsForIdentity. La llamada aparece en CloudTrail pero se confunde con la administración normal, así que necesita una regla para destacar.
Detección
SetIdentityPoolRolesGetCredentialsForIdentityRequisitos previos
La política de confianza del rol objetivo debe permitir cognito-identity.amazonaws.com mediante sts:AssumeRoleWithWebIdentity; un grupo de identidades existente (con el acceso no autenticado habilitado para la vía anónima).
MITRE ATT&CK
T1078.004 · Cuentas válidas: cuentas cloudTáctica
Escalada de privilegios
Un control que lo eliminaría: Elimina iam:PassRole / cognito-identity:SetIdentityPoolRoles; acota los roles de los grupos de identidades y desactiva el acceso no autenticado.
Aplicarla o no depende de cómo se use el permiso en tu entorno, así que es una decisión de negocio y no una corrección automática. El mismo permiso puede ser imprescindible en una cuenta y puro riesgo en otra.
Pathbreak confirma si esta ruta se resuelve en tu cuenta, la clasifica frente a las demás según cuánto abre y usa tu modelo de amenazas y tu contexto de negocio para mostrar qué rutas merece la pena cortar.
Preguntas
¿Qué permite iam:PassRole?
Puede vincular un rol a un Cognito Identity Pool y canjear sus credenciales.
¿Qué más hace falta para que iam:PassRole sea peligroso?
Solo se convierte en escalada cuando se combina con cognito-identity:SetIdentityPoolRoles. Por sí solo no basta, y eso es lo que hace que la combinación sea fácil de pasar por alto.
¿Cómo se detecta vincular un rol a un Cognito Identity Pool?
Vigila SetIdentityPoolRoles, GetCredentialsForIdentity en CloudTrail. La llamada aparece en CloudTrail pero se confunde con la administración normal, así que necesita una regla para destacar.
¿Cómo se rompe esta ruta?
Un control que lo eliminaría es: Elimina iam:PassRole / cognito-identity:SetIdentityPoolRoles; acota los roles de los identity pools y desactiva el acceso no autenticado. Aplicarla o no depende de cómo se use el permiso en tu cuenta, así que es una decisión de negocio y no una corrección automática.
¿De qué técnica de MITRE ATT&CK se trata?
T1078.004, Cuentas válidas: cuentas cloud, en la táctica de escalada de privilegios.
Rutas relacionadas
Referencias
Encuéntralo en tu propia cuenta
Ejecutamos un escaneo de solo lectura de una cuenta de AWS y te mostramos cuáles de estas rutas existen, ordenadas por radio de impacto, con el cambio que rompe cada una. Primeras rutas validadas en menos de una hora.