Vulnerabilidad remota en la implementación del protocolo TIPC en el kernel de Linux

Se ha identificado una vulnerabilidad crítica (CVE-2021-43267) en la implementación del protocolo de red TIPC (Transparent Inter-process Communication) suministrado en el kernel de Linux, que le permite ejecutar su código de forma remota con privilegios del kernel enviando un mensaje especialmente diseñado. paquete de red. El peligro del problema se ve mitigado por el hecho de que el ataque requiere la habilitación explícita del soporte TIPC en el sistema (cargar y configurar el módulo del kernel tipc.ko), lo que no se hace de forma predeterminada en distribuciones de Linux no especializadas.

El protocolo TIPC ha sido compatible desde el kernel 3.19 de Linux, pero el código que conduce a la vulnerabilidad se incluyó en el kernel 5.10. La vulnerabilidad se solucionó en los núcleos 5.15.0, 5.10.77 y 5.14.16. El problema aparece y aún no se ha solucionado en Debian 11, Ubuntu 21.04/21.10, SUSE (en la rama SLE15-SP4 aún no lanzada), RHEL (aún no se detalla si la solución vulnerable ha sido respaldada) y Fedora. La actualización del kernel ya se lanzó para Arch Linux. Las distribuciones con un kernel anterior a 5.10, como Debian 10 y Ubuntu 20.04, no se ven afectadas por el problema.

El protocolo TIPC fue desarrollado originalmente por Ericsson, diseñado para organizar la comunicación entre procesos en un clúster y se activa principalmente en los nodos del clúster. TIPC puede funcionar a través de Ethernet o UDP (puerto de red 6118). Cuando se trabaja a través de Ethernet, el ataque se puede realizar desde la red local, y cuando se utiliza UDP, desde la red global si el puerto no está cubierto por un firewall. El ataque también puede ser llevado a cabo por un usuario local sin privilegios del host. Para activar TIPC, debe descargar el módulo del kernel tipc.ko y configurar el enlace a la interfaz de red usando netlink o la utilidad tipc.

La vulnerabilidad se manifiesta en la función tipc_crypto_key_rc y es causada por la falta de verificación adecuada de la correspondencia entre los datos especificados en el encabezado y el tamaño real de los datos al analizar paquetes del tipo MSG_CRYPTO, utilizados para obtener claves de cifrado de otros nodos. en el clúster con el fin de descifrar posteriormente los mensajes enviados desde estos nodos. El tamaño de los datos copiados en la memoria se calcula como la diferencia entre los valores de los campos con el tamaño del mensaje y el tamaño del encabezado, pero sin tener en cuenta el tamaño real del nombre del algoritmo de cifrado y el contenido del clave transmitida en el mensaje. Se supone que el tamaño del nombre del algoritmo es fijo, y además se pasa un atributo separado con el tamaño para la clave, y un atacante puede especificar un valor en este atributo que difiere del real, lo que conducirá a escribir el cola del mensaje más allá del búfer asignado. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; keylen int sin firmar; /* en bytes */ char key[]; };

Vulnerabilidad remota en la implementación del protocolo TIPC en el kernel de Linux


Fuente: opennet.ru

Añadir un comentario