Noticias

Un error de seguridad permite a los atacantes bloquear clústeres de Kubernetes

abril 16, 2021
La vulnerabilidad se activa cuando un contenedor en la nube extrae una imagen maliciosa de un registro. Una vulnerabilidad en una de las bibliotecas de Go en la que se basa Kubernetes podría provocar la denegación de servicio (DoS) para los motores de contenedor CRI-O y Podman. El error ( CVE-2021-20291 ) afecta a la biblioteca Go […]

La vulnerabilidad se activa cuando un contenedor en la nube extrae una imagen maliciosa de un registro.

Una vulnerabilidad en una de las bibliotecas de Go en la que se basa Kubernetes podría provocar la denegación de servicio (DoS) para los motores de contenedor CRI-O y Podman.

El error ( CVE-2021-20291 ) afecta a la biblioteca Go llamada » contenedores / almacenamiento «. Según Aviv Sasson, el investigador de seguridad del equipo de la Unidad 42 de Palo Alto que encontró la falla, se puede activar colocando una imagen maliciosa dentro de un registro; la condición DoS se crea cuando esa imagen es extraída del registro por un usuario desprevenido.

“A través de esta vulnerabilidad, los actores malintencionados podrían poner en peligro cualquier infraestructura en contenedores que dependa de estos motores de contenedores vulnerables, incluidos Kubernetes y OpenShift”, dijo Sasson en una publicación del miércoles.

Tiradores de contenedores de armamento

Cuando un motor de contenedores extrae una imagen de un registro, primero descarga su manifiesto, que tiene las instrucciones sobre cómo crear la imagen. Parte de eso es una lista de capas que componen el sistema de archivos del contenedor, que el motor del contenedor lee y luego descarga y descomprime cada capa.

“Un adversario podría cargar en el registro una capa maliciosa que tiene como objetivo explotar la vulnerabilidad y luego cargar una imagen que usa numerosas capas, incluida la capa maliciosa, y con ello crear una imagen maliciosa”, explicó Sasson. «Luego, cuando la víctima extraiga la imagen del registro, descargará la capa maliciosa en ese proceso y se explotará la vulnerabilidad».

Una vez que el motor del contenedor comienza a descargar la capa maliciosa, el resultado final es un punto muerto.

“[Esta] es una situación en la que se adquiere un candado y nunca se libera”, explicó Sasson. «Esto provoca un DoS ya que otros subprocesos y procesos detienen su ejecución y esperan eternamente a que se libere el bloqueo».

Enumeró los pasos que suceden cuando se activa la vulnerabilidad:

  • Rutina 1: descarga la capa maliciosa de un registro.

  • Rutina 1: adquiere un candado.
  • Rutina 2: descomprime la capa descargada usando el   binario xz y escribe la salida en  stdout .
  • Rutina 3: espera que xz salga y que se lean todos los datos de la salida estándar. Cuando se cumplen las condiciones, continúa y cierra un  canal  llamado chdone.
  • Rutina 1: utiliza la salida de xz como entrada e intenta descomprimir los datos. Dado que el archivo no es un archivo tar, untar falla con un «encabezado tar no válido» y no termina de leer el resto de los datos de la salida estándar de xz. Dado que los datos nunca se leerán, la rutina 3 ahora está bloqueada y nunca cerrará chdone.
  • Rutina 1: espera a que la rutina 3 cierre chdone y también está bloqueada.

Una vez que la rutina 1 está en punto muerto, el motor del contenedor no puede ejecutar ninguna solicitud nueva porque para hacerlo, necesita adquirir el bloqueo en el paso 2, que nunca se liberará.

Los parches para el error se publicaron en la versión 1.28.1 de contenedores / almacenamiento; CRI-O versión v1.20.2; y Podman versión 3.1.0. Los administradores deben actualizar lo antes posible.

bloquearclustereserrorkubernetesseguridad

Comparte este Artículo

Artículos relacionados