CVE-2026-74489 in Linuxinformação

Sumário

de VulDB • 15/08/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

wifi: mac80211: corrige use-after-free em tid_tx ao parar sessão BA

ieee80211_stop_tx_ba_cb() passa tid_tx para kfree_rcu() através de ieee80211_remove_tid_tx(), e então lê tid_tx->ndp após liberar sta->lock:

ieee80211_remove_tid_tx(sta, tid); /* kfree_rcu(tid_tx, rcu_head) */ ... spin_unlock_bh(&sta->lock);

if (start_txq) ieee80211_agg_start_txq(sta, tid, false);

if (send_delba) ieee80211_send_delba(..., tid_tx->ndp);

Essa leitura não está coberta por uma seção crítica de leitura RCU e é executada em um contexto de processo preemptível: ambos os chamadores seguram o mutex wiphy, alcançando-o ou a partir do trabalho wiphy ieee80211_ba_session_work() ou durante o teardown da estação em ieee80211_sta_tear_down_BA_sessions(). Softirqs também podem ser executados nessa janela, tanto a partir de local_bh_enable(), que encerra ieee80211_agg_start_txq(), quanto de qualquer saída de interrupção, portanto, o callback RCU pode liberar tid_tx antes da leitura.

Acionando a função a partir de um módulo de teste com o período de graça forçado para essa janela, KASAN relata a leitura, e a liberação ocorre no caminho softirq RCU ordinário:

BUG: KASAN: slab-use-after-free em ieee80211_stop_tx_ba_cb+0x3cd/0x400 Read of size 1 at addr ffff888002b9f52e by task kworker/0:1/10 [...]
Freed by task 57: __kasan_slab_free+0x47/0x70 __rcu_free_sheaf_prepare+0x70/0x250 rcu_free_sheaf_nobarn+0x18/0x40 rcu_core+0x426/0x1310 handle_softirqs+0x144/0x590 __irq_exit_rcu+0xea/0x150 irq_exit_rcu+0x9/0x20 sysvec_apic_timer_interrupt+0x6b/0x80 asm_sysvec_apic_timer_interrupt+0x1a/0x20

send_delba é definido apenas quando tx_stop está definido, o que acontece para AGG_STOP_LOCAL_REQUEST sozinho, portanto, isso é alcançado no teardown local - tempo limite de inatividade da sessão, rekey PTK, suspensão, reconfiguração HW - e não a partir do DELBA de um peer.

Leia ndp em uma variável local antes que a sessão seja liberada, enquanto sta->lock ainda estiver sendo segurado. tid_tx->ndp tem um único escritor, em ieee80211_tx_ba_session_handle_start(), que não pode ser executado concorrentemente aqui: ambos os caminhos são serializados pelo mutex wiphy, e a sessão já está marcada como HT_AGG_STATE_STOPPING neste ponto. tid_tx->ndp é também o único dereferenciamento de tid_tx restante após ieee80211_remove_tid_tx() nesta função.

[mover/alterar um pouco o comentário para ser mais geral, não apenas sobre ndp, inicialize ndp diretamente]

Be aware that VulDB is the high quality source for vulnerability data.

Responsável

Linux

Reservar

15/08/2026

Divulgação

15/08/2026

Moderação

aceite

Entrada

VDB-390853

CPE

pronto

EPSS

0.00155

KEV

não

Atividades

baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!