Los investigadores de ciberseguridad han revelado una falla de seguridad que afecta el kit de desarrollo en la nube (CDK) de Amazon Web Services (AWS) que podría haber llevado a la apropiación de cuentas en circunstancias específicas.
“El impacto de este problema podría, en ciertos escenarios, permitir que un atacante obtenga acceso administrativo a una cuenta de AWS objetivo, lo que resultaría en una toma completa de la cuenta”, dijo Aqua en un comunicado. informe compartido con The Hacker News.
Tras una divulgación responsable el 27 de junio de 2024, los funcionarios del proyecto resolvieron el problema en CDK versión 2.149.0 lanzado en julio.
AWS CDK es un marco de desarrollo de software de código abierto para definir recursos de aplicaciones en la nube utilizando Python, TypeScript o JavaScript y aprovisionarlos a través de CloudFormation.
El problema identificado por Aqua se basa en hallazgos anteriores de la compañía de seguridad en la nube con respecto a los recursos ocultos en AWS y cómo las convenciones de nomenclatura predefinidas para los depósitos de AWS Simple Storage Service (S3) podrían usarse para orquestar ataques de Bucket Monopoly y acceder a datos confidenciales.
La preparación de un entorno de AWS para su uso con el kit de desarrollo en la nube de AWS (AWS CDK) se logra mediante un proceso llamado arranque, en el que ciertos recursos de AWS se aprovisionan en el entorno. Esto incluye un depósito de AWS S3, un repositorio de Amazon Elastic Container Registry (Amazon ECR) y funciones de AWS Identity and Access Management (IAM).
“Los recursos y su configuración utilizados por el CDK se definen en una plantilla de AWS CloudFormation”, según Documentación de AWS.
“Para iniciar un entorno, utilice el comando cdk bootstrap desde la interfaz de línea de comandos de AWS CDK (AWS CDK CLI). La CLI de CDK recupera la plantilla y la implementa en AWS CloudFormation como una pila, llamada pila de arranque. De forma predeterminada, la pila El nombre es CDKToolkit.”
Algunos de los Funciones de IAM creado como parte del proceso de arranque, otorga permiso para cargar y eliminar activos del depósito S3 asociado, así como para realizar implementaciones de pila con acceso de administrador.
Aqua dijo que el patrón de nomenclatura para los roles de IAM creados por AWS CDK sigue la estructura “cdk-{Qualifier}-{Description}-{Account-ID}-{Región}”, donde cada uno de los campos se explica a continuación:
- Calificador, un valor de cadena único de nueve caracteres cuyo valor predeterminado es “hnb659fds”, aunque se puede personalizar durante el arranque.
- Descripción, descripción del recurso (por ejemplo, cfn-exec-role)
- ID de cuenta, ID de cuenta de AWS del entorno
- Región, región de entorno de AWS
En la misma línea, el depósito S3 creado durante el arranque sigue el patrón de nomenclatura “cdk-{Qualifier}-assets-{Account-ID}-{Región}”.
“Dado que muchos usuarios ejecutan el comando cdk bootstrap sin personalizar el calificador, el patrón de nomenclatura del depósito S3 del depósito provisional se vuelve predecible”, dijo Aqua. “Esto se debe a que el calificador de nombre del depósito por defecto es ‘hnb659fds’, lo que hace que sea más fácil anticipar el nombre del depósito.
Con miles de casos descubierto en GitHub donde se usa el calificador predeterminado, esto también significa que adivinar el nombre del depósito es tan fácil como encontrar el ID de la cuenta de AWS y la región en la que está implementado el CDK.
Combinando este aspecto con el hecho de que los nombres de los depósitos de S3 son globalmente únicos en todas las cuentas de AWS, esta falla abre la puerta a lo que se conoce como Nombre del depósito S3 en cuclillas (o Bucket Sniping), lo que permite a un atacante reclamar el depósito CDK de otro usuario si aún no existe.
Esto podría entonces abrir la puerta a una denegación de servicio (DoS) parcial cuando un usuario intenta iniciar el CDK con el mismo ID de cuenta y región, un escenario que podría resolverse especificando un calificador personalizado al preparar.
Podría ocurrir una consecuencia más grave si al CDK de la víctima se le permite leer y escribir datos hacia y desde el depósito S3 controlado por el atacante, lo que permite que las plantillas de CloudFormation sean manipuladas y que se ejecuten acciones maliciosas dentro de la cuenta de AWS de la víctima.
“La función de implementación del servicio CloudFormation, que es CloudFormationExecutionRole en CDK, tiene de forma predeterminada privilegios administrativos dentro de la cuenta”, señaló Aqua.
“Esto significa que cualquier plantilla de CloudFormation escrita en el depósito S3 del atacante mediante el CDK de la víctima se implementaría posteriormente con privilegios administrativos en la cuenta de la víctima. Esto permitiría al atacante crear recursos privilegiados”.
En un ataque hipotético, si un usuario hubiera iniciado el proceso de arranque del CDK en el pasado y luego hubiera eliminado el depósito S3 debido a límites de cuota, un adversario podría aprovechar la situación para crear un depósito con el mismo nombre.
Esto podría hacer que el CDK confíe implícitamente en el depósito que no es de confianza y lea/escriba plantillas de CloudFormation, haciéndolos susceptibles a la explotación. Sin embargo, para que esto tenga éxito, el atacante debe cumplir los siguientes requisitos previos:
Reclame el depósito con el nombre predecible y permita el acceso público
Cree una función Lambda que inyectará una función de administrador malicioso o una puerta trasera en un archivo de plantilla de CloudFormation determinado cada vez que se cargue en el depósito.
En el último paso, cuando el usuario implementa el CDK usando “cdk implementar”, el proceso no solo envía la plantilla al depósito de replicación, sino que también inyecta una función de administrador que el atacante puede asumir para, en última instancia, tomar el control de la cuenta de la víctima.
En otras palabras, la cadena de ataque facilita la creación de una función de administrador en una cuenta de AWS de destino cuando se elimina un depósito de CDK de S3 configurado durante el proceso de arranque y se vuelve a utilizar el CDK. Desde entonces, AWS ha confirmado que aproximadamente el 1% de los usuarios de CDK son vulnerables al vector de ataque.
La solución de AWS garantiza que los activos solo se carguen en depósitos dentro de la cuenta del usuario para evitar que el CDK envíe datos a depósitos que no pertenecen a la cuenta que inició la semilla. el tambien tiene clientes invitados utilizar un calificador personalizado en lugar del predeterminado “hnb659fds”.
Dicho esto, se requiere la acción del usuario si el arranque se realizó con la versión CDK v2.148.1 o anterior, lo que requiere que actualice el CDK a la última versión y ejecute nuevamente el comando de arranque. Los usuarios también tienen la opción de aplicar una condición de política de IAM a la función del CDK FilePublishingRole.
Los hallazgos exigen una vez más mantener en secreto las credenciales de las cuentas de AWS, establecer una política amplia de IAM y evitar dar nombres predecibles a los depósitos de S3.
“En su lugar, genere hashes únicos o ID aleatorios por región y cuenta, e incorpórelos en los nombres de sus depósitos S3”, concluyó Aqua. “Esta estrategia le ayuda a protegerse contra los atacantes que se apoderan de su depósito de forma preventiva”.
La divulgación se produce cuando Symantec, propiedad de Broadcom, descubrió varias aplicaciones de Android e iOS que contienen credenciales de servicios en la nube codificadas y no cifradas para AWS y Microsoft Azure Blob Storage, poniendo datos de usuario en riesgo.
Algunas de las aplicaciones acusadas incluyen Pic Stitch: Collage Maker, Crumbl, Eureka: Earn Money for Surveys, Videoshop – Video Editor, Meru Cabs, Sulekha Business y ReSound Tinnitus Relief.
“Esta práctica peligrosa significa que cualquier persona con acceso al código fuente o binario de la aplicación podría extraer estas credenciales y hacer un uso indebido de ellas para manipular o filtrar datos, lo que provocaría graves vulnerabilidades de seguridad”, dijeron los investigadores de seguridad Yuanjing Guo y Tommy Dong. dicho.



