CVE-2026-14366 in Zephyr
Sumário
de VulDB • 31/08/2026
O callback de transmissão do driver WiFi SiWx917 da Silicon Labs, `siwx91x_send()`, em `drivers/wifi/siwx91x/siwx91x_wifi.c`, libera um pacote de rede que não é de sua propriedade. No caminho TX (transmissão) do Zephyr, o `net_pkt` pertence à pilha L2/de redes; o driver apenas o empresta para copiar os bytes da trama em um `net_buf` local. Antes da correção, após a transmissão, `siwx91x_send()` chamava adicionalmente `net_pkt_unref(pkt)` no pacote de propriedade do chamador, reduzindo sua última referência e retornando-o prematuramente ao pool compartilhado de pacotes. Este caminho de código é compilado por padrão (`CONFIG_WIFI_SILABS_SIWX91X_NET_STACK_NATIVE`).
O chamador, `ethernet_send()` em `subsys/net/l2/ethernet/ethernet.c`, continua a usar o pacote após o retorno do driver: ele lê `net_pkt_get_len(pkt)`, atualiza as estatísticas de TX e, em seguida, executa sua própria chamada para `net_pkt_unref(pkt)`. Como o driver já havia liberado o pacote, essas operações resultam em leituras use-after-free seguidas por um segundo unref (um double free). Quando a atividade de rede concorrente recicla a slot do slab liberado entre os dois unrefs, o unref final decrementa a contagem de referência de um pacote diferente e ativo, libertando-o incorretamente, corrompendo assim o pool `net_pkt` compartilhado pelos caminhos de recebimento (RX) e transmissão (TX).
A falha é acionada por transmissões normais na interface WiFi SiWx917 com pilha nativa, e um atacante adjacente na mesma rede Wi-Fi pode induzir transmissões (por exemplo, respostas ARP ou eco ICMP, ou handshakes TCP) para forçar a execução desse caminho. O impacto observável principal é a perda de disponibilidade (travamentos de transmissão e crashes devido à corrupção do pool), com corrupção de memória dependente de race condition no pool de buffers de rede do kernel. A correção remove o `net_pkt_unref(pkt)` incorreto de `siwx91x_send()`; o unref do caminho de recebimento do driver, que libera corretamente um pacote alocado pelo próprio driver, permanece inalterado.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.