Vulnerabilidad crítica del kernel de Linux permite controlar una máquina remotamente
Investigadores han revelado una vulnerabilidad crítica de seguridad de desbordamiento de pila en el módulo de comunicación transparente entre procesos (TIPC) del kernel de Linux. La vulnerabilidad podría permitir la explotación local y la ejecución remota de código, lo que provocaría un compromiso total del sistema.
TIPC es un protocolo peer-to-peer utilizado por los nodos dentro de un clúster de Linux para comunicarse entre sí de una manera optimizada. El protocolo habilita varios tipos de mensajes que se utilizan para diferentes propósitos. Según SentinelLabs de SentinelOne, la vulnerabilidad en cuestión (CVE-2021-43267) reside específicamente en un tipo de mensaje que permite a los nodos enviarse claves criptográficas entre sí. Cuando se reciben, las claves se pueden utilizar para descifrar más comunicaciones desde el nodo emisor.
TIPC – Vulnerando el kernel
“Cuando lo carga un usuario, [TIPC] se puede utilizar como un conector y se puede configurar en una interfaz … como un usuario sin privilegios. Toda la construcción y análisis de mensajes se realiza en el kernel. Esto lo convierte en un objetivo ideal para el ataque”.
Max Van Amerongen, investigador de SentinelLabs, en una publicación del jueves.
En cuanto al desbordamiento de pila: cuando se trata de la construcción de ese mensaje, cada mensaje TIPC tiene un formato de encabezado común. Según el investigador, ese encabezado común contiene una asignación de “tamaño de encabezado”, que es el tamaño real del encabezado desplazado a la derecha en dos bits; y una asignación de “tamaño de mensaje” que es igual a la longitud de todo el mensaje TIPC. Estos dos tamaños son validados por la función tipc_msg_validate
.
El tamaño del mensaje se valida correctamente como mayor que el tamaño del encabezado, el tamaño del payload se valida con el tamaño máximo del mensaje del usuario y el tamaño del mensaje se valida con la longitud real del paquete recibido”, según el investigador. Hasta ahí todo bien. Sin embargo, en septiembre de 2020 se introdujo un nuevo tipo de mensaje que carece de validaciones de tamaño. Este mensaje abre la puerta a un exploit de desbordamiento de pila.
El tipo de mensaje adicional, “MSG_CRYPTO
“, permite a los pares enviarse claves criptográficas entre sí, como mencionamos anteriormente. Los mensajes contienen el nombre del algoritmo clave y la clave en sí, según el análisis. La asignación de tamaño para esto es el tamaño del mensaje en sí, menos el tamaño del encabezado.
Sin embargo, “no hay comprobaciones de [validación de tamaño] ni para la [longitud de la clave] ni para el tamaño del nombre del algoritmo de la clave (TIPC_AEAD_ALG_NAME
) con respecto al tamaño del mensaje”, explicó el investigador.
Escenario de ataque
Esto significa que un atacante puede crear un paquete con un tamaño de cuerpo pequeño para asignar memoria de pila. Posteriormente, el atacante puede usar un tamaño arbitrario en el atributo [longitud de clave (keylen
)] para escribir fuera de los límites de esta ubicación.
Además, la función de validación de mensajes solo verifica que el tamaño del mensaje en el encabezado esté dentro de los límites del paquete real: Eso significa que un atacante podría crear un paquete de 20 bytes y establecer el tamaño del mensaje en 10 bytes sin fallar en la verificación”, agregó Van Amerongen.
Parchear el kernel de Linux
La vulnerabilidad afecta a las versiones del kernel de Linux entre 5.10 y 5.15. Cabe señalar que, si bien el módulo TIPC viene con todas las distribuciones principales de Linux, no está “activado” de forma predeterminada. Este módulo debe habilitarse para que una implementación sea vulnerable a los ataques.
Para protegerse, los usuarios de Linux afectados deben aplicar el parche recién lanzado, que agrega controles de verificación de tamaño adecuados al proceso.
Lo que está en juego es significativo, advirtió el investigador. Si bien el sistema TIPC en sí no lo carga automáticamente el sistema, sino los usuarios finales, la capacidad de configurarlo desde una perspectiva local sin privilegios y la posibilidad de explotación remota lo convierte en una vulnerabilidad peligrosa para aquellos que lo usan en sus redes. Lo que es más preocupante es que un atacante que aproveche esta vulnerabilidad podría ejecutar código arbitrario dentro del kernel. Esto provocaría un compromiso total del sistema.
Las vulnerabilidades del kernel de Linux no son tan comunes, pero surgen ocasionalmente. Por ejemplo, en abril, se informó de una vulnerabilidad de divulgación de información (CVE-2020-28588) que podría explotarse para exponer información en la memoria de pila del kernel de dispositivos ARM vulnerables.