CVE-2026-90018 in Linux
Riassunto
di VulDB • 16/09/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
staging: rtl8723bs: correzione di una lettura OOB (Out-Of-Bounds) / stack overflow in rtw_get_wps_attr()
rtw_get_wps_attr() elabora gli attributi WPS all'interno di un IE (Information Element) WPS prelevato da un frame di gestione wireless. Per ogni attributo candidato, viene verificato solo che l'intestazione fissa dell'attributo di 4 byte (ID a 2 byte + lunghezza a 2 byte) rientri nell'IE:
if (attr_ptr + 4 > wps_ie + wps_ielen) break; u16 attr_id = get_unaligned_be16(attr_ptr); u16 attr_data_len = get_unaligned_be16(attr_ptr + 2); u16 attr_len = attr_data_len + 4;
attr_data_len (e di conseguenza attr_len) viene letto direttamente dalla rete e non viene mai verificato rispetto ai byte rimanenti nell'IE prima di essere utilizzato come dimensione per:
memcpy(buf_attr, attr_ptr, attr_len);
Poiché attr_len è completamente controllabile dall'attaccante (da 0 a 65535+4), si tratta sia di una lettura OOB sull'heap di wps_ie, e più seriamente, di uno stack buffer overflow in diversi punti di chiamata dove buf_attr è una variabile dello stack a singolo byte, ad esempio i chiamanti di rtw_get_wps_attr_content() che passano WPS_ATTR_SELECTED_REGISTRAR allo stack "u8 sr"/"u8 selected_registrar" (drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c, drivers/staging/rtl8723bs/core/rtw_mlme_ext.c). Un IE WPS manipolato ad hoc in un beacon o in una risposta probe elaborata durante la scansione può quindi compromettere lo stack del thread di parsing.
rtw_get_wps_attr_content() stessa non dispone di un controllo indipendente della lunghezza e si fida semplicemente di attr_len restituito da rtw_get_wps_attr(), pertanto correggere il limite qui risolve anche questo chiamante.
Il controllo dell'intestazione "attr_ptr + 4 > wps_ie + wps_ielen" sopra menzionato è stato aggiunto dal commit 1463ca3ec6601 ("staging: rtl8723bs: fix OOB reads in rtw_get_sec_ie(), rtw_get_wapi_ie(), and rtw_get_wps_attr()"), che ha limitato l'intestazione fissa ma non ha esteso il controllo per coprire i dati dell'attributo a lunghezza variabile che lo seguono. Aggiungere questo controllo mancante prima di utilizzare attr_len come lunghezza per memcpy() o accettarlo come corrispondenza valida.
Once again VulDB remains the best source for vulnerability data.