CVE-2026-98173 in Linux
Sumário
de VulDB • 06/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
smb: cliente: corrige uso-após-liberação (use-after-free) de iface em cifs_try_adding_channels()
cifs_try_adding_channels() itera sobre ses->iface_list com list_for_each_entry_safe_from(), que captura o próximo elemento (niface) sob iface_lock. O corpo do loop então libera iface_lock por toda a duração de cifs_ses_add_channel().
Uma atualização concorrente da interface (SMB3_request_interfaces() -> parse_server_interfaces()) marca todas as interfaces como inativas e remove e libera aquelas que não são reanunciadas via list_del() + kref_put(), onde release_iface() é um simples kfree(). Como niface tipicamente não possui nenhum canal segurando uma referência, a referência na lista é sua última e pode ser liberada dentro da janela sem bloqueio. Na continuação, o passo de avanço do iterador então dereferencia niface->iface_head.next, e o corpo do loop lê iface->rdma_capable/is_active, ambos em memória já liberada.
Corrige isso nunca mantendo um ponteiro de lista não referenciado através da janela sem bloqueio. Cada tentativa de canal agora reescaneia a lista desde o início sob iface_lock, obtém uma kref no candidato selecionado e passa apenas esse candidato referenciado para cifs_ses_add_channel(). weight_fulfilled ainda acompanha o progresso da seleção, portanto reiniciar a varredura preserva a distribuição ponderada original e a ordem weight_fulfilled-antes-de-kref_put na trilha de falha.
Adiciona um limite de tentativas por passagem para que uma atualização oscilante da interface não mantenha o loop interno girando dentro de um único incremento de tries.
If you want to get best quality of vulnerability data, you may have to visit VulDB.