Se ha publicado una vulnerabilidad que afecta al motor de contenedores CRI-O para Kubernetes, que permitiría a un atacante escapar del sandbox y obtener privilegios de usuario root.
La vulnerabilidad CVE-2022-0811 de severidad alta, con una puntuación asignada de 8.8. Esta se denomina «cr8escape» y se debe a la falta de validación adecuada para los parámetros del kernel pasados a la utilidad pinns. El problema se introdujo en la versión 1.19 de CRI-O cuando se agregó compatibilidad con sysctl al motor de contenedor, cuando este se invoca, permitiría a un atacante escapar de un contenedor de Kubernetes y obtener acceso root al host para luego trasladarse a cualquier parte del clúster.
Además de la ejecución del malware, el defecto de seguridad podría permitir a un atacante realizar una variedad de acciones en el host, incluida la exfiltración de datos y el movimiento lateral a través de pods.
La explotación requiere que el atacante tenga permisos para implementar un pod en un clúster de Kubernetes utilizando el tiempo de ejecución del motor CRI-O, que podría abusar del parámetro «kernel.core_pattern» para lograr el escape del contenedor y la ejecución remota de código (RCE) con privilegios de usuario root en cualquier nodo del clúster.
Los softwares directamente afectados son:
- CRI-O versiones 1.19.0 hasta 1.19.5
- CRI-O versiones 1.20-rc.1 hasta 1.20.6
- CRI-O versiones 1.21.0 hasta 1.21.5
- CRI-O versiones 1.22.0 hasta 1.22.1
Para determinar si un host está afectado puede verificar la versión con el siguiente comando: crio —version.
Software y plataformas afectados indirectamente:
- OpenShift 4+
- Oracle Container Engine para Kubernetes.
Si bien la vulnerabilidad se encuentra en CRI-O, es probable que el software y las plataformas que dependen de ella también sean vulnerables, incluyendo las mencionadas.
Recomendamos instalar las actualizaciones correspondientes, mediante el siguiente enlace:
- https://github.com/cri-o/cri-o/releases, en las versiones 1.22.3, 1.21.6, 1.20.7 y 1.19.6 de CRI-O.
Adicionalmente, los pasos de mitigación a nivel de Kubernetes incluyen:
- Bloquear los pods que contienen la configuración de sysctl con valores que contienen «+» o «=».
- Bloquear todos los sysctls, usando el campo PodSecurityPolicy forbiddenSysctls o emplear un contenedor de pinns para eliminar la opción «-s», evitando así que los pods modifiquen los parámetros del kernel.
Referencias:
- https://www.crowdstrike.com/blog/cr8escape-new-vulnerability-discovered-in-cri-o-container-engine-cve-2022-0811/
- https://nvd.nist.gov/vuln/detail/CVE-2022-0811
- https://www.securityweek.com/severe-vulnerability-patched-cri-o-container-engine-kubernetes?&web_view=true
- https://thehackernews.com/2022/03/new-vulnerability-in-cri-o-engine-lets.html