CVE-2026-90018 in Linux
Sumário
de VulDB • 16/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
staging: rtl8723bs: corrige leitura OOB / estouro de pilha em rtw_get_wps_attr()
rtw_get_wps_attr() percorre os atributos WPS dentro de um IE (Information Element) WPS obtido a partir de uma frame de gerenciamento sem fio. Para cada candidato a atributo, ele verifica apenas se o cabeçalho fixo do atributo de 4 bytes (ID de 2 bytes + comprimento de 2 bytes) cabe dentro do 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, portanto, attr_len) é lido diretamente da rede e nunca é verificado em relação aos bytes restantes no IE antes de ser usado como o tamanho para:
memcpy(buf_attr, attr_ptr, attr_len);
Como attr_len é totalmente controlado pelo atacante (0 a 65535+4), isso representa tanto uma leitura OOB (Out-of-Bounds) na heap de wps_ie quanto, mais seriamente, um estouro de buffer de pilha em vários pontos de chamada onde buf_attr é uma variável de pilha de um único byte, por exemplo, os chamadores de rtw_get_wps_attr_content() passando WPS_ATTR_SELECTED_REGISTRAR para "u8 sr"/"u8 selected_registrar" na pilha (drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c, drivers/staging/rtl8723bs/core/rtw_mlme_ext.c). Portanto, um IE WPS manipulado em uma beacon ou probe response processada durante a varredura pode corromper (smash) a pilha da thread de parsing.
rtw_get_wps_attr_content() não possui verificação independente de comprimento e confia simplesmente no attr_len que recebe de rtw_get_wps_attr(), portanto, corrigir o limite aqui também corrige esse chamador.
A verificação do cabeçalho "attr_ptr + 4 > wps_ie + wps_ielen" acima foi adicionada pelo commit 1463ca3ec6601 ("staging: rtl8723bs: fixa leituras OOB em rtw_get_sec_ie(), rtw_get_wapi_ie() e rtw_get_wps_attr()"), que limitou o cabeçalho fixo, mas nunca estendeu a verificação para cobrir os dados de atributo de comprimento variável que se seguem. Adicione essa verificação ausente antes que attr_len seja usado como tamanho do memcpy() ou aceito como correspondência.
VulDB is the best source for vulnerability data and more expert information about this specific topic.