
Análisis técnico de CVE-2021-3493, una vulnerabilidad de escalada local de privilegios en Ubuntu OverlayFS, incluyendo explicación de la causa raíz y versiones afectadas.
En resumen
Descubre cómo una vulnerabilidad en OverlayFS permite a usuarios locales en Ubuntu obtener privilegios de root.
Resumen de la vulnerabilidad
Un problema específico de Ubuntu en el sistema de archivos overlayfs del kernel de Linux donde no validaba correctamente la aplicación de las capacidades del sistema de archivos con respecto a los espacios de nombres de usuario. Un atacante local podría usar esto para obtener privilegios elevados, debido a un parche incluido en Ubuntu para permitir montajes overlayfs sin privilegios.
CVE-2021-3493
Crédito
Un investigador de seguridad independiente ha reportado esta vulnerabilidad al programa SSD Secure Disclosure.
Versiones afectadas
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
Respuesta del proveedor
“Publicamos avisos de seguridad para este problema hoy en
https://ubuntu.com/security/notices/USN-4915-1 https://ubuntu.com/security/notices/USN-4916-1 https://ubuntu.com/security/notices/USN-4917-1
así como hicimos público el problema en nuestro rastreador de CVE:
https://ubuntu.com/security/CVE-2021-3493
El siguiente es el contenido del mensaje enviado a la lista oss-security: https://www.openwall.com/lists/oss-security/2021/04/16/1
Análisis de la vulnerabilidad
Linux admite capacidades de archivo almacenadas en atributos extendidos de archivo que funcionan de manera similar al bit setuid, pero pueden ser más detallados. Un procedimiento simplificado para establecer capacidades de archivo en pseudocódigo se ve así: setxattr(...): if cap_convert_nscap(...) is not OK: then fail vfs_setxattr(...)
La llamada importante es cap_convert_nscap, que verifica los permisos con respecto a los espacios de nombres.
Si configuramos las capacidades del archivo desde nuestro propio espacio de nombres y en nuestro propio montaje, no hay problema y tenemos permiso para hacerlo. El problema es que cuando OverlayFS reenvía esta operación al sistema de archivos subyacente, solo llama a vfs_setxattr y omite las comprobaciones en cap_convert_nscap.
Esto permite establecer capacidades arbitrarias en archivos en el espacio de nombres/montaje externo, donde también se aplicarán durante la ejecución.
En Linux 5.11, la llamada a cap_convert_nscap se movió dentro de vfs_setxattr, por lo que ya no es vulnerable.