Cómo hackear pods de Kubernetes y ejecutar código malicioso de forma remota

Según los hallazgos de los expertos en seguridad de Akamai, una vulnerabilidad de alta gravedad en Kubernetes puede explotarse para lograr la ejecución remota de código (RCE) en cualquier punto final de Windows que forme parte del clúster.

La falla, identificada como CVE-2023-3676 y con una puntuación CVSS de 8,8, afecta el procesamiento de archivos YAML por parte de Kubernetes. El sistema de orquestación de contenedores utiliza estos archivos para diversos fines, incluida la configuración, la gestión y el manejo de secretos, entre otras cosas.
Los archivos YAML se utilizan para casi todos los aspectos del funcionamiento de Kubernetes, incluida la configuración, la implementación automática, la escalabilidad, la administración de pods de aplicaciones en contenedores y muchos otros.

En 2022 se descubrió que el constructor de SnakeYAML incluía la vulnerabilidad CVE-2022-1471, que permitía la ejecución de código remoto en aplicaciones susceptibles.

El propio Kubernetes encontró muchas vulnerabilidades, como CVE-2021-25749 (las cargas de trabajo podrían ejecutarse como ContainerAdministrator aunque la opción runAsNonRoot estuviera configurada como verdadera), CVE-2017-1002101 y CVE-2021-25741 (situaciones de carrera y enlaces simbólicos en combinación con la subpropiedad subPath en un archivo YAML).

Cuando los usuarios establecen un pod, también tienen la opción de crear un directorio compartido entre el pod y el host. Este directorio se denomina “volúmenes”.

Para que los volúmenes sean accesibles, al archivo YAML se le debe agregar el parámetro de volumen, además de mountPath (que especifica la ubicación del contenedor) y hostPath (que especifica la ubicación del host).

También se puede montar el directorio compartido en un lugar específico con la ayuda de la subpropiedad subPath. Luego, kubelet lee este archivo YAML, que verifica cada parámetro en el archivo YAML y utiliza la función interna isLinkPath para asegurarse de que no se formen enlaces simbólicos en el argumento subPath. Se genera un comando de PowerShell para determinar el tipo de ruta tomando la subpropiedad subPath del archivo YAML y usándola como parámetro en el comando. Después de eso, el ejecutivo. La llamada a la función de comando recibe este comando de PowerShell y lo procesa.

Una investigación adicional descubrió que la variable “exec.Command” puede usarse junto con la entrada del usuario que no ha sido desinfectada, lo que resulta en una vulnerabilidad de inyección de comandos.

Deshabilitar el uso de Volume.Subpath, utilizar el agente Open Policy Agent (OPA) de código abierto para establecer reglas para prohibir archivos YAML particulares y aplicar control de acceso basado en roles (RBAC) para restringir la cantidad de usuarios que pueden realizar actividades en un cluster son algunos de los remedios recomendados.

“CVE-2023-3676 exige privilegios mínimos y, como resultado, establece un umbral bajo para los atacantes. Todo lo que un atacante necesita es acceso a un nodo y la capacidad de aplicar privilegios. “El alto impacto junto con la facilidad de explotación generalmente significa que no Hay una mayor probabilidad de ver este ataque (y ataques similares) en organizaciones”, escribe Akamai. “El alto impacto junto con la facilidad de explotación también significa que hay una mayor probabilidad de ver ataques similares.