Vulnerabilidad De Autenticación En El Servicio De Kubernetes De AWS
Un investigador de seguridad reportó recientemente un problema en AWS IAM Authenticator de Kubernetes, usado por el servicio Amazon Elastic Kubernetes Service (EKS). El investigador identificó un problema en la validación de parámetros en el plugin de autenticación cuando éste se configura para hacer uso de parámetro de plantilla "AccessKeyID" en el contenido de la string de la petición.
El problema habría permitido a un atacante con cierto nivel de conocimientos escalar privilegios dentro de un cluster de Kubernetes.
¿Qué es EKS?
Según la documentación oficial de AWS, Amazon Elastic Kubernetes (EKS) se trata de un servicio administrado (esto es, por AWS, no por el cliente) que se puede utilizar "para ejecutar Kubernetes en AWS sin necesidad de instalar, operar ni mantener" un plano de control propio propio o nodos de Kubernetes.
El fallo causante de la vulnerabilidad se encuentra en una línea de código concreta del mecanismo de autenticación de IAM para Kubernetes:
El funcionamiento esperado del fragmento de código anterior es una validación de la capitalización del parámetro que se recibe, es decir, del uso de mayúsculas y minúsculas. Sin embargo, esta validación no se estaba llevando a cabo de la manera correcta, siendo posible enviar parámetros duplicados.
Este fallo en el proceso de autenticación que podría permitir a un atacante evadir las protecciones existentes frente a ataques en los que una transmisión de datos válidas es repetida de manera fraudulenta (replay attacks).
La vulnerabilidad está presente desde el primer commit de AWS IAM Authenticator realizado el 12 de octubre de 2017, lo que implica que tanto la acción modificable como los tokens de identificación de clusters han sido explotables desde el primer momento.
Concretamente, la explotación del nombre de usuario a través del parámetro "AccessKeyID" habría sido posible desde el pasado 2 de septiembre de 2020, momento en el que AWS introdujo esta característica en el servicio.
No obstante, cabe mencionar que solo aquellos clientes que usan el parámetro "AccessKeyID" se ven afectados por la vulnerabilidad, y Amazon lanzó un parche que la solventaba el pasado 28 de junio, por lo que aquellos usuarios que usen AWS IAM Authenticator para Kubernetes en el servicio Amazon EKS no necesitan tomar ninguna medida de mitigación.
Sin embargo, para aquellos clientes que administren sus propios clusters de Kubernetes y hagan uso de "AccessKeyID", situación en la que se debe actualizar AWS IAM Authenticator a la versión 0.5.9.
Fuentes:
- Amazon squashes years-old authentication bugs in AWS Kubernetes service
- CVE-2022-2385: AccessKeyID validation bypass #472
- Código vulnerable de AWS IAM Authenticator
- Reported EKS IAM Authenticator Issue
Via: blog.segu-info.com.ar