Contexto
Al crear un attachment de peering en AWS Transit Gateway, cualquier Transit Gateway origen puede solicitar conexión con un Transit Gateway destino. Para establecer esa conexión se requieren tres datos clave:
- AWS Account ID de la cuenta destino
- Transit Gateway ID de la red Transit Gateway destino
- Región del Transit Gateway destino
Una vez aprovisionado, el attachment queda en estado pending-acceptance, a la espera de que la cuenta destino lo apruebe. Sin embargo, una falla de seguridad permite que la cuenta origen se salte ese paso de aprobación bajo ciertas condiciones.
Attachment de Transit Gateway en estado Pending Acceptance
En la consola de AWS, la cuenta origen (solicitante) tiene la opción de aceptar la solicitud, pero arroja el siguiente error:
La consola de AWS rechaza la aceptación desde la cuenta origen
Este es el comportamiento esperado, ya que solo la cuenta destino debería poder aceptar la solicitud.
Sin embargo, si se invoca la API de AWS directamente desde el AWS CLI, la cuenta origen (solicitante) puede aceptar la solicitud de peering sin la autorización adecuada, siempre que los Transit Gateways estén en regiones distintas (por ejemplo, Irlanda y Londres).
Respuesta del AWS CLI al aceptar el attachment desde la cuenta origen
Como consecuencia, el estado del attachment pasa a "Available", con lo que se le otorga a la cuenta origen (potencialmente un tercero no autorizado) acceso a tu red. En la práctica, la cuenta origen (es decir, cualquiera) ya tiene acceso a tu red.
Attachment de Transit Gateway en estado Available
Cómo detectar el exploit
Este exploit se puede rastrear y observar desde CloudTrail, donde queda registrada la actividad de la cuenta externa al aprobar la solicitud de attachment:
Log de CloudTrail en la cuenta destino
Cómo mitigar el exploit
Afortunadamente, se pueden usar SCPs para bloquear la llamada a la API AcceptTransitGatewayPeeringAttachment.
En el siguiente ejemplo de política se bloquea la aceptación de attachments de peering desde cualquier cuenta distinta a la cuenta de confianza especificada:
{
"Version": "2012-10-17",
"Statement": [\
{\
"Sid": "Statement1",\
"Effect": "Deny",\
"Action": [\
"ec2:AcceptTransitGatewayPeeringAttachment"\
],\
"Resource": "*",\
"Condition": {\
"StringNotEquals": {\
"aws:PrincipalAccount": "339712835926"\
}\
}\
}\
]
}
Para proteger toda tu organización, puedes ampliar esta política incluyendo el ID de tu organización:
"Version": "2012-10-17",
"Statement": [\
{\
"Sid": "Statement1",\
"Effect": "Deny",\
"Action": [\
"ec2:AcceptTransitGatewayPeeringAttachment"\
],\
"Resource": "*",\
"Condition": {\
"StringNotEquals": {\
"aws:PrincipalOrgID": "o-xxxxxxxxxxx"\
}\
}\
}\
]
}
Aplicar estas políticas asegura que las cuentas no autorizadas obtendrán un error al intentar aceptar attachments de peering de Transit Gateway.
Acción denegada en la cuenta origen
Reportamos este problema a AWS el 25 de julio de 2024, cuando se descubrió el exploit, y ya quedó parchado el 7 de agosto de 2024.
DoiT ayuda a las organizaciones nativas de la nube a entenderla y aprovecharla para acelerar el crecimiento de su negocio. Lo hacemos combinando tecnología inteligente con una consultoría sin igual, soporte 24/7 y capacitación, para que las organizaciones cloud-driven puedan resolver sus desafíos en la nube, profundizar su conocimiento y acelerar la innovación. Contáctanos y conversemos sobre cómo podemos acompañarte en tu camino a la nube.