CVE-2026-64177 in Linuxinformação

Sumário

de VulDB • 19/07/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

phonet/pep: desabilitar BH em torno de sk_receive_skb() encaminhado

O caminho de recebimento da rede geralmente é executado no contexto softirq, mas os protocolos que adquirem o bloqueio (lock) do soquete podem ter pacotes armazenados na fila de espera (backlog) e processados posteriormente no contexto de processo. Nesse caso, release_sock() -> __release_sock() libera slock com spin_unlock_bh() e depois chama sk->sk_backlog_rcv() com as interrupções inferiores (bottom halves - BH) habilitadas.

Os manipuladores típicos de sk_backlog_rcv processam o soquete cuja fila de espera está sendo drenada, portanto, o estado do BH na entrada é irrelevante para os slocks que eles acessam. pep_do_rcv() é diferente: quando o skb entrante tem como destino um canal PEP existente, ele encaminha o skb para outro soquete *filho* via sk_receive_skb(). Esse auxiliar adquire o bloqueio do filho (child slock) com bh_lock_sock_nested(), que é apenas spin_lock_nested() e assume que BH já está desabilitado. O mesmo child slock acaba sendo adquirido com BH habilitado (caminho de processo) e com BH desabilitado (caminho softirq):

contexto de processo contexto softirq --------------- --------------- release_sock(listener) __netif_receive_skb() __release_sock() phonet_rcv() spin_unlock_bh() __sk_receive_skb(listener) [BH agora HABILITADO] [já desabilitado]
sk_backlog_rcv: sk_backlog_rcv: pep_do_rcv() pep_do_rcv() sk_receive_skb(child) sk_receive_skb(child) bh_lock_sock_nested(child) bh_lock_sock_nested(child) => SOFTIRQ-ON-W => IN-SOFTIRQ-W

Lockdep sinaliza isso como estado de bloqueio inconsistente, e pode se tornar um verdadeiro deadlock (impasse) autoimposto se um softirq na mesma CPU tentar receber para o mesmo soquete filho enquanto seu slock estiver retido no caminho com BH habilitado:

WARNING: inconsistent lock state inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
(slock-AF_PHONET/1){+.?.}-{3:3}, at: __sk_receive_skb+0x1cf/0x900
__sk_receive_skb net/core/sock.c:563 sk_receive_skb include/net/sock.h:2022 [inline]
pep_do_rcv net/phonet/pep.c:675 sk_backlog_rcv include/net/sock.h:1190 __release_sock net/core/sock.c:3216 release_sock net/core/sock.c:3815 pep_sock_accept net/phonet/pep.c:879

Envolver sk_receive_skb() encaminhado em local_bh_disable() / local_bh_enable() para que o child slock seja sempre adquirido com BH desabilitado. local_bh_disable() aninha-se com segurança no caminho softirq.

Descoberto por meio de fuzzing syzkaller interno; a mesma causa raiz também está presente no painel do linux-6.1.y syzbot como extid 44f0626dd6284f02663c. Reproduzido sob KASAN + LOCKDEP + PROVE_LOCKING, reproducer: https://pastebin.com/A3t8xzCR

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsável

Linux

Reservar

19/07/2026

Divulgação

19/07/2026

Moderação

aceite

Entrada

VDB-380380

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!