Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2025-38591)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
19/08/2025
Última modificación:
20/08/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: bpf: Rechazo de acceso más estrecho a campos de puntero ctx. El siguiente programa BPF, simplificado a partir de una reproducción de syzkaller, genera una advertencia del kernel: r0 = *(u8 *)(r1 + 169); exit; Con el campo de puntero sk en el desplazamiento 168 en __sk_buff. Este acceso se detecta como una lectura más estrecha en bpf_skb_is_valid_access porque no coincide con offsetof(struct __sk_buff, sk). Por lo tanto, se permite y posteriormente procede a bpf_convert_ctx_access. Tenga en cuenta que para el caso "is_narrower_load" en convert_ctx_accesses(), insn->off está alineado, por lo que cnt puede no ser 0 porque coincide con offsetof(struct __sk_buff, sk) en bpf_convert_ctx_access. Sin embargo, el tamaño objetivo permanece en 0 y el verificador genera una advertencia del kernel: error del verificador: error durante la conversión de acceso a ctx(1). Este parche corrige este error para devolver un error correcto de "acceso a bpf_context no válido off=X size=Y" en la instrucción de carga. El mismo problema afecta a varios campos en las estructuras de contexto que permiten acceso restringido. Algunos campos no afectados (para sk_msg, sk_lookup y sockopt) también se modificaron para usar bpf_ctx_range_ptr por consistencia. Tenga en cuenta que este fallo de syzkaller se reportó en el enlace "Cierres" a continuación, que solía referirse a un error diferente, corregido en el commit fce7bd8e385a ("bpf/verifier: Handle BPF_LOAD_ACQ instructions in insn_def_regno()"). Debido a que syzbot confundió de alguna manera los dos errores, el nuevo fallo y la reproducción no se reportaron a la lista de correo.

Impacto