Se ha identificado una vulnerabilidad (CVE-2021-39685) en USB Gadget, un subsistema del núcleo de Linux que proporciona una interfaz de programación para crear dispositivos USB de cliente y simular dispositivos USB, que puede llevar a una filtración de información desde el núcleo, un fallo o la ejecución de código arbitrario a nivel del núcleo. Un usuario local sin privilegios puede llevar a cabo el ataque manipulando diversas clases de dispositivos implementadas sobre la API USB Gadget, como rndis, hid, uac1, uac1_legacy y uac2.
La problemática ha sido solucionada en las actualizaciones del núcleo de Linux 5.15.8, 5.10.85, 5.4.165, 4.19.221, 4.14.258, 4.9.293 y 4.4.295 recién publicadas. La vulnerabilidad permanece sin corrección en las distribuciones (Debian, Ubuntu, RHEL, SUSE, Fedora, Arch). Se ha preparado un prototipo de exploit para demostrar la vulnerabilidad.
La vulnerabilidad es causada por un desbordamiento de búfer en los controladores gadget rndis, hid, uac1, uac1_legacy y uac2 al procesar solicitudes de transferencia de datos. Como resultado de la explotación de la vulnerabilidad, un atacante sin privilegios puede acceder a la memoria del núcleo mediante el envío de una solicitud de control especial con un valor en el campo wLength que excede el tamaño del búfer estático, que siempre es de 4096 bytes (USB_COMP_EP0_BUFSIZ). Durante el ataque, se puede leer o escribir hasta 65 KB de datos en la memoria del núcleo desde un proceso no privilegiado en el espacio del usuario.
Fuente: opennet.ru
