Alertas de seguridad

Vulnerabilidad de elevación de privilegios en el Kernel de Linux

El CVE 2020-14386 hace alusión a una falla encontrada en el servicio de sockets de los paquetes del kernel de Linux en las versiones anteriores a 5.9-rc4, dicho bug le permite a un atacante disparar una corrupción de la memoria que puede ser explotada para apropiarse de los datos y recursos del sistema, hasta conseguir privilegios root de procesos no privilegiados. La mayor amenaza de esta vulnerabilidad es la confidencialidad e integridad de datos.

Un atacante puede desencadenar la vulnerabilidad enviando un paquete crudo personalizado sobre la interfaz de red “loopback”. Cuando el kernel procesa dicho paquete ocurre un desbordamiento que conduce a la sobreescritura en la memoria del kernel.

Los paquetes crudos son paquetes especiales sin cabecera y manualmente formateados, totalmente contrario a las cabeceras predefinidas de los paquetes TCP y datagramas UDP. Para crear paquetes crudos, el atacante requiere la capacidad CAP_NET_RAW, la cual se encuentra disponible por defecto en algunos sistemas como Ubuntu, Debian y en contenedores Docker, pero no en otros sistemas como RedHat.

La mejor solución a este problema de seguridad es actualizar el kernel. Una actualización del kernel es la manera más efectiva de resolver no solo este inconveniente, sino cualquier otro problema de seguridad encontrado y corregido hasta ahora. Otra solución es parchar el kernel sin realizar una actualización completa. Eso resolvería el problema, sin causar algún tipo de incompatibilidad potencial para otro software en el sistema.

Alternativamente, en Debian, Ubuntu y kernels derivados, es posible deshabilitar el soporte para el namespaces de usuarios sin privilegios ajustando la opción de compilación del kernel CONFIG_USER_NS, lo cual previene la explotación de la vulnerabilidad. Ambas opciones exigen aún la reconstrucción de la imagen del kernel y posteriormente, su actualización en los dispositivos.

Para los fabricantes que no puedan actualizar o parchar el kernel, se cuentan aún con 2 mitigaciones disponibles. En Debian, Ubuntu y kernels derivados, ejecutar el siguiente comando sysctl -w kernel.unprivileged_userns_clone=0 como parte de los scripts de inicialización del sistema que previene la explotación. Adicionalmente, la capacidad CAP_NET_RAW puede ser eliminada removiéndola desde las cuentas de usuario, ejecutables y contenedores Docker.

Acciones recomendadas

Con el objetivo de mitigar y solventar los efectos del CVE-2020-14386, algunas de las distribuciones de Linux recomiendan la ejecución de las siguientes actividades:

  • Parchar el sistema operativo: La acción más inmediata para su ejecución consiste en programar una ventana de mantenimiento para parchar las estaciones vulnerables.
  • Deshabilitar CAP_NET_RAW: Programar una ventana de mantenimiento siempre toma su tiempo además que deja expuesto el ambiente. Una tarea rápida y útil que puede considerarse es deshabilitar CAP_NET_RAW por defecto. En la mayoría de los sistemas RedHat ésta ya se encuentra deshabilitada.
  • Políticas PodSecurity Kubernetes: Configurar la política de seguridad en los Pods para dropear el servicio CAP_NET_RAW en los contenedores en ejecución como lo sugiere Google en su documentación.