No kernel Linux, a seguinte vulnerabilidade foi resolvida. ovpn: respeitar o refcount de pares no caminho de erro CMD_NEW_PEER O caminho de erro do ovpn_nl_peer_new_doit() chama ovpn_peer_release() diretamente em vez de ovpn_peer_put(), contornando o kref. O comentário que acompanha ("o pai ainda não foi hashed, portanto não é usado em nenhum contexto") é detido para UDP, mas não para TCP. Para o UDP, a união ovpn_socket usa o braço.ovpn e nunca aponta para um peer; o UDP encap_recv procura pelos pares através das mesas de hash, ainda não povoadas, então o novo peer é inalcaçável até o ovpn_peer_ add() publicá- lo.

Para o TCP, ovpn_socket_new() define ovpn_sock->peer e ovpn_tcp_socket_atach() publica ovpn_sock via rcu_assign_sk_user_data(). A partir desse momento até que ovpn_socket_release() se detache no caminho de erro, o TCP fd está totalmente ligado: o espaço de usuário recvmsg / sendmsg / close / poluente no fd, bem como o caminho do ovpn_tcp_rcv() dirigido pelo strparser, pode alcançar o pair através do sk_user_data -> ovpn_sock->peer e bater o seu refcount via ovpn_peer_hold(). ovpn_tcp_socket_wait_finish() (chamado dentro do ovpn_socket_release()) drena o strparser e o trabalho do tx, mas não sincroniza com os chamados de chamadas de syscall do espaço de usuário que já possuem uma referência de pares. Se ovpn_nl_peer_modify() ou ovpn_peer_add() devolver um erro enquanto um chamador estiver em voo - notadamente um ovpn_tcp_recvmsg() bloqueado em __skb_recv_datagram() no peer->tcp.user_queue - o direto ovpn_peer_release() destrói o peer enquanto o chamador ainda mantém a referência, e o eventual ovpn_peer_put() daquele chamador opera na memória livre. Substitua a chamada direta destrutor por ovpn_peer_put() para que o kref adia corretamente a destruição até que a última referência seja eliminada. No caso comum em que nenhum usuário concorrente está presente, o comportamento não está modificado: o kref bate a zero imediatamente e o ovpn_peer_release_kref() executa o mesmo destrutor.

Com esta conversão ovpn_peer_release() não tem chamadas fora de peer.c - ovpn_peer_release_kref() na mesma unidade de tradução é o único usuário restante - então faça- o estático e solte sua declaração do peer.h. Registro de aconselhamento: GHSA- 52 jg- m 8 r 4 - 36 g 9. Identificadores relacionados: CVE- 2026 - 64044.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 19 T 18: 31: 50.000 Z e lista a sua última modificação como 2026 - 07 - 20 T 15: 31: 57.000 Z. Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H.

Software afetado: o registro de aconselhamento não fornece um pacote normalizado ou faixa de versões. Classificação e evidência: nenhum identificador CWE está listado. O registro contém 4 suporte de referências nestes tipos: AVISO, WEB.