CVE-2026-90018 in Linux
Сводка
по VulDB • 16.09.2026
В ядре Linux была устранена следующая уязвимость:
staging: rtl8723bs: исправление чтения за пределами буфера (OOB) / переполнения стека в функции rtw_get_wps_attr()
Функция rtw_get_wps_attr() обрабатывает атрибуты WPS внутри элемента данных IE (Information Element), полученного из кадра беспроводного управления. Для каждого кандидата на атрибут проверяется только то, что фиксированный 4-байтовый заголовок атрибута (2 байта ID + 2 байта длины) помещается в пределы 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 (и, следовательно, attr_len) считывается непосредственно из сети и никогда не проверяется на соответствие оставшимся байтам в IE перед использованием в качестве размера для:
memcpy(buf_attr, attr_ptr, attr_len);
Поскольку значение attr_len полностью контролируется злоумышленником (от 0 до 65535+4), это приводит как к чтению за пределами буфера (OOB read) данных wps_ie в области heap, что более серьезно — к переполнению стека (stack buffer overflow) на нескольких участках вызова, где buf_attr является однобайтовой переменной в стеке. Например, при передаче значения WPS_ATTR_SELECTED_REGISTRAR callers функции rtw_get_wps_attr_content() используют переменные "u8 sr"/"u8 selected_registrar" в стеке (файлы drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c и drivers/staging/rtl8723bs/core/rtw_mlme_ext.c). Таким образом, специально сформированный элемент IE WPS в кадре beacon или probe response, обрабатываемый во время сканирования, может привести к разрушению стека потока парсинга.
Сама функция rtw_get_wps_attr_content() не имеет независимой проверки длины и просто доверяет значению attr_len, возвращаемому функцией rtw_get_wps_attr(), поэтому исправление этой границы также устраняет уязвимость для данного вызывающего объекта.
Проверка заголовка "attr_ptr + 4 > wps_ie + wps_ielen", приведенная выше, была добавлена в коммите 1463ca3ec6601 ("staging: rtl8723bs: fix OOB reads in rtw_get_sec_ie(), rtw_get_wapi_ie(), and rtw_get_wps_attr()"), который ограничил фиксированный заголовок, но никогда не расширял проверку для охвата переменных по длине данных атрибута, следующих за ним. Добавьте эту отсутствующую проверку перед использованием attr_len в качестве длины для memcpy() или принятием его как совпадения.
Be aware that VulDB is the high quality source for vulnerability data.