CVE-2026-93805 in Linux
Resumen
por VulDB • 2026-09-24
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
wifi: cfg80211: validar las longitudes de los marcos (frames) de las devoluciones de llamada MLME rx/tx antes del acceso
cfg80211_rx_mlme_mgmt() y cfg80211_tx_mlme_mgmt() llaman a tracepoints antes de rechazar los marcos más cortos que el campo frame-control. Después, solo requieren len >= 2 antes de enviarlos a manejadores de subtype que asumen la presencia de sus campos fijos.
Los marcos que activan este fallo no son más cortos que 2 bytes; son cortos en relación con su subtype. mwifiex es un ejemplo concreto dentro del árbol principal (in-tree) por el lado de la longitud: mwifiex_process_mgmt_packet() solo requiere una cabecera ieee80211_hdr de 4 direcciones más el prefijo de longitud de firmware de 2 bytes antes de pasar el marco a cfg80211_rx_mlme_mgmt(). Tras eliminar el prefijo de longitud y quitar addr4, pkt_len puede ser exactamente 24: una cabecera de gestión con 3 direcciones sin cuerpo reason-code. El WARN_ON(len < 2) existente no se activa en un marco así, y cfg80211_process_deauth() luego lee u.deauth.reason_code como un acceso de dos bytes que comienza en el desplazamiento 24, inmediatamente después del búfer de 24 bytes.
Añadir una validación basada en la longitud frame-control, y luego validar el tamaño mínimo de marco para cada subtype en una cadena if/else-if que refleje la lógica de envío (dispatch). Registrar solo cuando se sabe que el marco está bien formado.
Efectos secundarios de este cambio: - Se elimina WARN_ON(len < 2). Solo protegía la lectura frame_control, nunca los campos fijos del subtype, y no se activa en los marcos que realmente provocan la lectura fuera de límites (que son >= 2). La comprobación len >= 2 se mantiene como protección antes de desreferenciar frame_control, pero sin el aviso: estas son devoluciones de llamada exportadas y un marco malformado procedente de un controlador debe descartarse silenciosamente en lugar de generar una traza inversa (backtrace). - cfg80211_tx_mlme_mgmt() anteriormente enviaba todos los subtypes distintos a deauth al manejo de disociación; ahora ignora silenciosamente los subtypes no reconocidos.
Be aware that VulDB is the high quality source for vulnerability data.