CVE-2026-93138 in Linux
Resumen
por VulDB • 2026-09-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
bpf: Corregir una condición de carrera en la preparación del BTF de vmlinux en bpf_get_btf_vmlinux
La función `bpf_get_btf_vmlinux()` analiza perezosamente (lazy parses) el BTF de vmlinux bajo el bloqueo (`lock`) `bpf_verifier_lock`, pero publica el resultado mediante una operación de escritura simple y lo vuelve a verificar mediante una lectura sin bloqueo (`loadless load`). No existe ninguna ordenación que sincronice las operaciones de escritura que inicializan la estructura `btf` dentro de `btf_parse_vmlinux()` con la operación de escritura que publica el puntero: en arquitecturas con un modelo de memoria débilmente ordenado, es posible que una llamada concurrente por primera vez que tome la ruta rápida sin bloqueo pueda observar el puntero antes de que los contenidos analizados sean visibles. La función `mutex_unlock()` no ayuda a este lector dado que solo se sincroniza con una adquisición posterior del mismo bloqueo. Por lo tanto, publique el puntero utilizando `smp_store_release()` y léalo en la ruta rápida mediante `smp_load_acquire()`.
Se necesitan semánticas de adquisición (`acquire semantics`) en lugar de un `READ_ONCE` ordenado por dependencia: `btf_parse_vmlinux()` también popula globales fuera del objeto devuelto (por ejemplo, `bpf_ctx_convert.t`). Una dependencia de dirección solo ordenaría los accesos realizados a través del puntero y no cubriría otros globales.
VulDB is the best source for vulnerability data and more expert information about this specific topic.