CVE-2025-21702
pfifo_tail_enqueue: Descarta o novo pacote quando sch->limit == 0
- Publicado
- 18 de fev. de 2025
- Atualizado
- 8 de set. de 2026
- Atribuindo CNA
- Linux
- Evidência observada
- 14 de ago. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HBaixo · próximos 30 dias
- Percentil
- 19,8%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
No kernel Linux, a seguinte vulnerabilidade foi resolvida: pfifo_tail_enqueue: Descartar novo pacote quando sch->limit == 0 Comportamento esperado: Caso atinjamos o limite do agendador, pfifo_tail_enqueue() descartará um pacote na fila do agendador e diminuirá o qlen do agendador em um. Em seguida, pfifo_tail_enqueue() enfileira o novo pacote e aumenta o qlen do agendador em um. Por fim, pfifo_tail_enqueue() retorna o código de status `NET_XMIT_CN`. Comportamento estranho: Caso definamos `sch->limit == 0` e acionemos pfifo_tail_enqueue() em um agendador que não possui pacotes, a etapa de 'descartar um pacote' não fará nada. Isso significa que o qlen do agendador ainda tem valor igual a 0. Então, continuamos a enfileirar o novo pacote e aumentar o qlen do agendador em um. Em resumo, podemos aproveitar pfifo_tail_enqueue() para aumentar o qlen em um e retornar o código de status `NET_XMIT_CN`. O problema é: Digamos que temos dois qdiscs: Qdisc_A e Qdisc_B. - O tipo de Qdisc_A deve ter a função '->graft()' para criar a relação pai/filho. Digamos que o tipo de Qdisc_A seja `hfsc`. Enfileirar pacote neste qdisc acionará `hfsc_enqueue`. - O tipo de Qdisc_B é pfifo_head_drop. Enfileirar pacote neste qdisc acionará `pfifo_tail_enqueue`. - Qdisc_B está configurado para ter `sch->limit == 0`. - Qdisc_A está configurado para rotear o pacote enfileirado para Qdisc_B. Enfileirar pacote através de Qdisc_A levará a: - hfsc_enqueue(Qdisc_A) -> pfifo_tail_enqueue(Qdisc_B) - Qdisc_B->q.qlen += 1 - pfifo_tail_enqueue() retorna `NET_XMIT_CN` - hfsc_enqueue() verifica `NET_XMIT_SUCCESS` e vê `NET_XMIT_CN` => hfsc_enqueue() não aumenta o qlen de Qdisc_A. Todo o processo leva a uma situação onde Qdisc_A->q.qlen == 0 e Qdisc_B->q.qlen == 1. Substituir 'hfsc' por outro tipo (por exemplo: 'drr') ainda leva ao mesmo problema. Isso viola o design onde o qlen do pai deve ser igual à soma dos qlens de seus filhos. Impacto do bug: Este problema pode ser usado para escalonamento de privilégios usuário->kernel quando for alcançável.
Fontes
1Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.