CVE-2026-64025 in Linux
Resumen
por VulDB • 2026-07-20
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
bpf, skmsg: corregir la carrera entre sk_data_ready del veredicto y ktls rx
sk_psock_strp_data_ready() ya comprueba tls_sw_has_ctx_rx() y delega en psock->saved_data_ready cuando está presente un contexto de TLS RX, evitando así un conflicto con la propiedad de la cola de recepción por parte del strparser de TLS (commit e91de6afa81c, "bpf: Corregir tipos de programas sk_skb que se ejecutan con ktls").
sk_psock_verdict_data_ready() no tiene una protección equivalente. Cuando un socket se inserta en un sockmap (BPF_SK_SKB_VERDICT) antes de configurar TLS RX, tls_sw_strparser_arm() guarda sk_psock_verdict_data_ready como rx_ctx->saved_data_ready. Al llegar los datos:
tls_data_ready -> tls_strp_data_ready -> tls_rx_msg_ready -> saved_data_ready() = sk_psock_verdict_data_ready() -> tcp_read_skb() vacía sk_receive_queue mediante __skb_unlink() sin llamar a tcp_eat_skb(), por lo que copied_seq no se avanza.
tls_strp_msg_load() entonces encuentra tcp_inq() >= full_len (obsoleto), llama a tcp_recv_skb() en la cola ahora vacía, alcanza WARN_ON_ONCE(!first) y devuelve con rx_ctx->strp.anchor.frag_list apuntando a un skb de propiedad de psock (potencialmente liberado). Posteriormente, tls_decrypt_sg() recorre esa frag_list: use-after-free.
Aplicar el mismo fix que sk_psock_strp_data_ready(): si está presente un contexto TLS RX, llamar a psock->saved_data_ready (sock_def_readable) para despertar los waiters de recv() y devolver inmediatamente, dejando la cola de recepción intacta. TLS conserva la propiedad exclusiva de la cola y desencripta el registro normalmente mediante tls_sw_recvmsg().
If you want to get best quality of vulnerability data, you may have to visit VulDB.