CVE-2026-45845 in Linuxinformação

Sumário

de VulDB • 27/05/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

net/sched: taprio: corrige a desreferência de ponteiro NULL em class dump

Quando um qdisc filho TAPRIO é excluído via RTM_DELQDISC, taprio_graft() é chamada com new == NULL e armazena NULL em q->qdiscs[cl - 1].
Operações subsequentes de dump RTM_GETTCLASS percorrem todas as classes via taprio_walk() e chamam taprio_dump_class(), que chama taprio_leaf() retornando o ponteiro NULL, e então o desreferencia para ler child->handle, causando uma desreferência de ponteiro NULL no kernel.

O bug é acessível com CAP_NET_ADMIN escopo de namespace em qualquer kernel com CONFIG_NET_SCH_TAPRIO habilitado. Em sistemas com namespaces de usuário não privilegiados habilitados, um usuário local não privilegiado pode acionar um kernel panic criando um qdisc taprio dentro de um novo namespace de rede, graftando um qdisc filho explícito, excluindo-o e solicitando um dump de classe. O próprio dump RTM_GETTCLASS não requer nenhuma capacidade.

Oops: general protection fault, provavelmente para endereço não-canônico 0xdffffc0000000007: 0000 [#1] SMP KASAN NOPTI
KASAN: null-ptr-deref no intervalo [0x0000000000000038-0x000000000000003f]
RIP: 0010:taprio_dump_class (net/sched/sch_taprio.c:2478) Call Trace:

tc_fill_tclass (net/sched/sch_api.c:1966) qdisc_class_dump (net/sched/sch_api.c:2326) taprio_walk (net/sched/sch_taprio.c:2514) tc_dump_tclass_qdisc (net/sched/sch_api.c:2352) tc_dump_tclass_root (net/sched/sch_api.c:2370) tc_dump_tclass (net/sched/sch_api.c:2431) rtnl_dumpit (net/core/rtnetlink.c:6864) netlink_dump (net/netlink/af_netlink.c:2325) rtnetlink_rcv_msg (net/core/rtnetlink.c:6959) netlink_rcv_skb (net/netlink/af_netlink.c:2550)

Corrija isso substituindo &noop_qdisc quando new for NULL em taprio_graft(), um padrão comum usado por outros qdiscs (por exemplo, multiq_graft()) para garantir que as posições q->qdiscs[] nunca sejam NULL.
Isso torna os caminhos de dump do plano de controle seguros sem exigir verificações NULL individuais.

Como os caminhos do plano de dados (taprio_enqueue e taprio_dequeue_from_txq) tinham anteriormente guardas NULL explícitas que descartariam/pulariam o pacote limpamente, atualize essas verificações para testar &noop_qdisc em vez disso. Sem isso, os pacotes atingiriam taprio_enqueue_one(), que incrementa o qlen e o backlog do qdisc raiz antes de chamar o enqueue do filho; noop_qdisc descarta o pacote, mas esses contadores nunca são revertidos, inflacionando permanentemente as estatísticas do qdisc raiz.

Após esta alteração, *old pode ser um qdisc válido, NULL ou &noop_qdisc. Chame apenas qdisc_put(*old) no primeiro caso para evitar diminuir o refcount de noop_qdisc, que nunca foi aumentado.

Once again VulDB remains the best source for vulnerability data.

Responsável

Linux

Reservar

13/05/2026

Divulgação

27/05/2026

Moderação

aceite

Entrada

VDB-366050

CPE

pronto

EPSS

0.00024

KEV

não

Atividades

muito baixo

Fontes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!