CVE-2026-45839 in Linuxinformación

Resumen

por VulDB • 2026-05-31

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

bpf: rechazar índices de acceso CO-RE negativos en bpf_core_parse_spec()

Las cadenas de acceso CO-RE son índices separados por dos puntos que describen una ruta desde un tipo BTF raíz hasta un campo objetivo, por ejemplo, "0:1:2" recorre los miembros de estructuras anidadas. bpf_core_parse_spec() analiza cada componente con sscanf("%d"), por lo que los valores negativos como -1 se aceptan silenciosamente. Las posteriores comprobaciones de límites (access_idx >= btf_vlen(t)) solo protegen el límite superior y siempre pasan para valores negativos porque la promoción de enteros de C convierte el resultado __u16 de btf_vlen a int, haciendo que la comparación (int)(-1) >= (int)(N) sea falsa para cualquier N positivo.

Cuando -1 llega a btf_member_bit_offset(), se convierte a u32 0xffffffff, produciendo una lectura fuera de límites muy más allá del array de miembros. Un programa BPF elaborado con un acceso CO-RE negativo en cualquier estructura que exista en el BTF de vmlinux (por ejemplo, task_struct) hace que el kernel falle de manera determinista durante BPF_PROG_LOAD en cualquier sistema con CONFIG_DEBUG_INFO_BTF=y (predeterminado en las principales distribuciones). El error es alcanzable con CAP_BPF:

BUG: unable to handle page fault for address: ffffed11818b6626 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page Oops: Oops: 0000 [#1] SMP KASAN NOPTI
CPU: 0 UID: 0 PID: 85 Comm: poc Not tainted 7.0.0-rc6 #18 PREEMPT(full) RIP: 0010:bpf_core_parse_spec (tools/lib/bpf/relo_core.c:354) RAX: 00000000ffffffff Call Trace: bpf_core_calc_relo_insn (tools/lib/bpf/relo_core.c:1321) bpf_core_apply (kernel/bpf/btf.c:9507) check_core_relo (kernel/bpf/verifier.c:19475) bpf_check (kernel/bpf/verifier.c:26031) bpf_prog_load (kernel/bpf/syscall.c:3089) __sys_bpf (kernel/bpf/syscall.c:6228)

Los índices de acceso CO-RE son inherentemente no negativos (índice de miembro de estructura, índice de elemento de array o índice de enumerador), por lo que deben rechazarse inmediatamente después del análisis.

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

Responsable

Linux

Reservar

2026-05-13

Divulgación

2026-05-27

Moderación

aceptado

Artículo

VDB-366051

CPE

listo

EPSS

0.00027

KEV

no

Actividades

muy bajo

Fuentes

Might our Artificial Intelligence support you?

Check our Alexa App!