Identificadas varias vulnerabilidades en el Kernel de Linux en controladores USB y Wifi Marvell
Uno de los mitos más conocidos por la red acerca de Linux es el clasico “Linux es seguro y no tiene vulnerabilidades”, pero la cosa es que esto es totalmente falso ya que los errores tanto críticos como menores sobre Linux se dan a conocer (no al momento sino después de haber sido solucionados).
Y tal el caso de que recientemente se dio a conocer la noticia de que fueron identificadas tres vulnerabilidades en el controlador para dispositivos inalámbricos basados en chips Marvell ( CVE-2019-14814 , CVE-2019-14815, CVE-2019-14816) que podrían conducir a la escritura de datos fuera del búfer asignado al procesar paquetes especialmente formateados enviados a través de la interfaz netlink .
Sobre las vulnerabilidades de Marvell
Para el caso de CVE-2019-14814 se trata de un desbordamiento en la función mwifiex_set_uap_rates () del controlador Marvell Wifi en el kernel de Linux
El problema está dentro de mwifiex_set_uap_rates () en drivers /net/wireless/marvell/mwifiex/uap_cmd.c.
Hay dos llamadas de memcpy en esta función para copiar el elemento WLAN_EID_SUPP_RATES y WLAN_EID_EXT_SUPP_RATES sin verificar la longitud. El búfer dst bss_cfg-> rates es una matriz de longitud MWIFIEX_SUPPORTED_RATES.
Los dos elementos en cfg80211_ap_settings son del espacio del usuario.
Mientras que para el caso de CVE-2019-14815 este es un desbordamiento en la función mwifiex_set_wmm_params () en el kernel de Linux
El problema está dentro de mwifiex_set_wmm_params () en drivers /net/wireless/marvell/mwifiex/ uap_cmd.c.
mwifiex_set_wmm_params () llama a memcpy para copiar el elemento WLAN_OUI_MICROSOFT en
bss_cfg-> wmm_info sin verificar la longitud.
bss_cfg-> wmm_info es el tipo struct mwifiex_types_wmm_info.
CVE-2019-14816 de igual forma que los anteriores es un desbordamiento de mwifiex_update_vs_ie () en el kernel de Linux
El problema está dentro de mwifiex_update_vs_ie () en drivers /net/wireless/marvell/mwifiex/ie.c.
mwifiex_set_mgmt_beacon_data_ies () analiza los IEs de baliza, los IEs de respuesta de sonda,
IE de respuesta de asociación de cfg80211_ap_settings-> beacon, llamará a mwifiex_update_vs_ie () dos veces por cada IEs si existen IEs.
Para beacon_ies como ejemplo, en la primera llamada, mwifiex_update_vs_ie () alloc y luego copia el elemento WLAN_OUI_MICROSOFT a ie-> ie_buffer,
ie-> ie_buffer esta una matriz de longitud IEEE_MAX_IE_SIZE (256); sobre la egunda llamada, mwifiex_update_vs_ie () copia el elemento WLAN_OUI_WFA que se ha asignado previamente. Si la suma de la longitud de los dos elementos es mayor que IEEE_MAX_IE_SIZE, provocará un desbordamiento del búfer.
Los problemas pueden ser explotados por un usuario local para causar un bloqueo del núcleo en los sistemas que usan tarjetas inalámbricas Marvell.
Tampoco se descarta la posibilidad de que una persona mal intencionada pueda explotar estas vulnerabilidades para aumentar sus privilegios en el sistema.
De momento estos problemas siguen sin corregirse (aun que ya fueron dados a conocer ya hace varios dias) en las distribuciones (Debian, Ubuntu, Fedora, RHEL, SUSE).
Aun que ya se ha propuesto un parche para su inclusión en el Kernel de Linux para las próximas versiones.
Vulnerabilidades en los controladores USB
Andrey Konovalov de Google descubrió 15 vulnerabilidades en los controladores USB ofrecidos en el kernel de Linux.
Esta es la segunda parte de los problemas encontrados durante las pruebas fuzzing: en 2017, este investigador encontró 14 vulnerabilidades más en la pila USB.
Los problemas pueden explotarse potencialmente cuando se conectan dispositivos USB especialmente preparados en una computadora.
Un ataque es posible si hay acceso físico al equipo y puede provocar al menos un bloqueo del Kernel, pero no se excluyen otras manifestaciones (por ejemplo, para una vulnerabilidad similar identificada en 2016, el controlador USB snd-usbmidi logró preparar un exploit para ejecutar código a nivel del kernel).
De los 15 problemas, 13 ya se han solucionado en las actualizaciones actuales del Kernel de Linux, pero dos vulnerabilidades (CVE-2019-15290, CVE-2019-15291) permanecen sin corregir en la última versión 5.2.9.
Las vulnerabilidades sin parches podrían conducir a la desreferenciación del puntero NULL en los controladores ath6kl y b2c2 al recibir datos incorrectos del dispositivo.
Otras vulnerabilidades incluyen:
- Acceso a áreas de memoria ya liberadas (use-after-free) en los controladores v4l2-dev / radio-raremono, dvb-usb, sound / core, cpia2 y p54usb;
- Memoria doble libre (doble libre) en el controlador rio500;
- Desreferencia de puntero NULL en controladores yurex, zr364xx, siano / smsusb, sisusbvga, line6 / pcm, motu_microbookii y line6.