Vulnerabilidad en el módulo ksmbd del kernel de Linux que permite ejecutar su código de forma remota

Se ha identificado una vulnerabilidad crítica en el módulo ksmbd, que incluye una implementación de un servidor de archivos basado en el protocolo SMB integrado en el kernel de Linux, que permite la ejecución remota de código con derechos del kernel. El ataque se puede realizar sin autenticación, basta con que el módulo ksmbd esté activado en el sistema. El problema se ha manifestado desde el kernel 5.15, lanzado en noviembre de 2021, y se solucionó silenciosamente en las actualizaciones 5.15.61, 5.18.18 y 5.19.2, formadas en agosto de 2022. Dado que al problema aún no se le ha asignado un identificador CVE, todavía no hay información exacta sobre cómo solucionar el problema en las distribuciones.

Los detalles sobre la explotación de la vulnerabilidad aún no han sido revelados, solo se sabe que la vulnerabilidad es causada al acceder a un área de memoria ya liberada (Use-After-Free) debido a la falta de verificar la existencia de un objeto antes de realizar operaciones. con eso. El problema está relacionado con el hecho de que en la función smb2_tree_disconnect(), la memoria asignada para la estructura ksmbd_tree_connect se liberó, pero después de eso todavía se usaba un puntero al procesar ciertas solicitudes externas que contenían comandos SMB2_TREE_DISCONNECT.

Además de la vulnerabilidad mencionada en ksmbd, también se solucionan 4 problemas menos peligrosos:

  • ZDI-22-1688: ejecución remota de código con derechos del kernel debido a la falta de verificación del tamaño real de los datos externos en el código de procesamiento de atributos del archivo antes de copiarlos al búfer asignado. El peligro de la vulnerabilidad se ve mitigado por el hecho de que el ataque sólo puede ser realizado por un usuario autenticado.
  • ZDI-22-1691: fuga remota de información de la memoria del kernel debido a una verificación incorrecta de los parámetros de entrada en el controlador de comandos SMB2_WRITE (el ataque solo puede ser realizado por un usuario autenticado).
  • ZDI-22-1687: denegación remota de servicio por agotamiento de la memoria disponible en el sistema debido a la liberación incorrecta de recursos en el controlador de comandos SMB2_NEGOTIATE (el ataque se puede realizar sin autenticación).
  • ZDI-22-1689: llamada remota para bloquear el kernel debido a la falta de verificación adecuada de los parámetros del comando SMB2_TREE_CONNECT, lo que lleva a la lectura desde un área fuera del búfer (el ataque solo puede ser realizado por un usuario autenticado ).

La compatibilidad con la ejecución de un servidor SMB utilizando el módulo ksmbd se incluye en el paquete Samba desde la versión 4.16.0. A diferencia de un servidor SMB de espacio de usuario, ksmbd es más eficiente en términos de rendimiento, consumo de memoria e integración con funciones avanzadas del kernel. Ksmbd se promociona como una extensión de Samba de alto rendimiento y lista para integrar, que se integra con las herramientas y bibliotecas de Samba según sea necesario. El código ksmbd fue escrito por Namjae Jeon de Samsung y Hyunchul Lee de LG, y mantenido en el kernel por Steve French de Microsoft, mantenedor de los subsistemas CIFS/SMB2/SMB3 en el kernel de Linux y miembro veterano del equipo de desarrollo de Samba, quien contribuyó significativamente a la implementación de soporte para protocolos SMB/CIFS en Samba y Linux.

Fuente: opennet.ru

Añadir un comentario