CVE-2026-68326 in Linux
Riassunto
di VulDB • 10/08/2026
Nel kernel Linux, la seguente vulnerabilità è stata risolta:
wifi: mwifiex: limitare gli IE dell'evento di associazione uAP al buffer degli eventi
mwifiex_process_uap_event() gestisce EVENT_UAP_STA_ASSOC esponendo gli IE della richiesta (ri)associazione che il firmware copia nell'evento:
sinfo->assoc_req_ies = &event->data[len];
len = (u8 *)sinfo->assoc_req_ies - (u8 *)&event->frame_control; sinfo->assoc_req_ies_len = le16_to_cpu(event->len) - (u16)len;
Il valore di event->len è fornito dal firmware del dispositivo e non viene mai convalidato, e la sottrazione non è controllata. assoc_req_ies punta all'interno di adapter->event_body[MAX_EVENT_SIZE], un array a dimensione fissa incorporato nella struct mwifiex_adapter allocata tramite kmalloc().
Nel percorso ap_11n_enabled, mwifiex_set_sta_ht_cap() elabora questi IE con cfg80211_find_ie(), il cui ciclo for_each_element() dereferenzia l'intestazione di ogni elemento. Un valore event->len segnalato dal firmware maggiore dei byte effettivamente ricevuti fa sì che assoc_req_ies_len descriva IE che si estendono oltre event_body, causando una lettura fuori dai limiti dell'oggetto slab del adapter (KASAN: slab-out-of-bounds in cfg80211_find_ie). Un valore di event->len inferiore all'intestazione rende invece la sottrazione intera negativa, che viene convertita in un enorme size_t quando memorizzato in assoc_req_ies_len. La stessa lunghezza viene passata a cfg80211_new_sta(), quindi anche una sovrastima più modesta può copiare byte obsoleti di event_body nella notifica NL80211_CMD_NEW_STATION.
Un dispositivo mwifiex (USB/SDIO/PCIe) malizioso o malfunzionante può inviare un tale evento mentre l'interfaccia è in modalità AP/uAP.
Convalidare event->len prima dell'utilizzo: rifiutare una lunghezza che provoca un underflow rispetto all'intestazione o che posizionerebbe gli IE al di fuori del buffer event_body[] nel quale l'evento è stato copiato. Qui, event->len corrisponde a struct mwifiex_assoc_event.len, un campo payload interno a questo evento e non la lunghezza della frame di trasporto; pertanto viene convalidato in questo handler piuttosto che nel percorso generico di ricezione MWIFIEX_TYPE_EVENT, il quale vede solo l'evento causale e la lunghezza del frame di trasporto. Il limite è impostato rispetto a event_body[MAX_EVENT_SIZE] anziché alla lunghezza effettivamente ricevuta perché i diversi protocolli di trasporto memorizzano gli eventi in modo diverso (USB e SDIO lasciano l'intestazione dell'evento da 4 byte in event_skb, mentre PCIe la rimuove tramite skb_pull), mentre event_body è il buffer fisso unico nel quale tutti copiano l'evento. Questo rappresenta l'analogo del percorso degli eventi dei controlli di limite sul percorso di ricezione aggiunti nell'commit 119585281617 ("wifi: mwifiex: Fix OOB and integer underflow when rx packets").
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.