Linux Kernel hasta 6.18.16/6.19.6/7.0-rc1 bpf bq_enqueue q[] desbordamiento de búfer

CVSS Puntuación meta temporalPrecio actual del exploit (≈)Puntuación de interés CTI
6.7$0-$5k0.63

Resumeninformación

Una vulnerabilidad fue encontrada en Linux Kernel hasta 6.18.16/6.19.6/7.0-rc1 y clasificada como crítica. Resulta afectada una función desconocida dentro del componente bpf. La alteración del argumento q[] resulta en desbordamiento de búfer. Esta vulnerabilidad se conoce como CVE-2026-23294. El ataque debe ser iniciado local. Ningún exploit está disponible. Se recomienda actualizar el componente afectado.

Detallesinformación

Una vulnerabilidad ha sido encontrada en Linux Kernel hasta 6.18.16/6.19.6/7.0-rc1 y clasificada como crítica. La función bq_enqueue del componente bpf es afectada por esta vulnerabilidad. Mediante la manipulación del parámetro q[] de un input desconocido se causa una vulnerabilidad de clase desbordamiento de búfer. Esto tiene repercusión sobre la confidencialidad, integridad y disponibilidad. CVE resume:

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: bpf: Corrige condición de carrera en devmap en PREEMPT_RT En kernels PREEMPT_RT, la xdp_dev_bulk_queue (bq) por CPU puede ser accedida concurrentemente por múltiples tareas preemptivas en la misma CPU. El código original asume que bq_enqueue() y __dev_flush() se ejecutan atómicamente con respecto la una a la otra en la misma CPU, confiando en local_bh_disable() para prevenir la expropiación. Sin embargo, en PREEMPT_RT, local_bh_disable() solo llama a migrate_disable() (cuando PREEMPT_RT_NEEDS_BH_LOCK no está configurado) y no deshabilita la expropiación, lo que permite que la planificación CFS expropie una tarea durante bq_xmit_all(), permitiendo que otra tarea en la misma CPU entre en bq_enqueue() y opere en la misma bq por CPU concurrentemente. Esto lleva a varias condiciones de carrera: 1. Doble liberación / uso después de liberación en bq->q[]: bq_xmit_all() toma una instantánea de cnt = bq->count, luego itera bq->q[0..cnt-1] para transmitir tramas. Si es expropiada después de la instantánea, una segunda tarea puede llamar a bq_enqueue() -> bq_xmit_all() en la misma bq, transmitiendo (y liberando) las mismas tramas. Cuando la primera tarea se reanuda, opera con punteros obsoletos en bq->q[], causando uso después de liberación. 2. Corrupción de bq->count y bq->q[]: bq_enqueue() concurrente modificando bq->count y bq->q[] mientras bq_xmit_all() los está leyendo. 3. Condición de carrera de desmontaje de dev_rx/xdp_prog: __dev_flush() borra bq->dev_rx y bq->xdp_prog después de bq_xmit_all(). Si es expropiada entre el retorno de bq_xmit_all() y bq->dev_rx = NULL, una bq_enqueue() expropiadora ve dev_rx aún configurado (no-NULL), omite añadir bq a la flush_list, y encola una trama. Cuando __dev_flush() se reanuda, borra dev_rx y elimina bq de la flush_list, dejando huérfana la trama recién encolada. 4. __list_del_clearprev() en flush_node: similar a la condición de carrera de cpumap, ambas tareas pueden llamar a __list_del_clearprev() en el mismo flush_node, la segunda desreferencia el puntero prev ya establecido en NULL. La condición de carrera entre la tarea A (__dev_flush -> bq_xmit_all) y la tarea B (bq_enqueue -> bq_xmit_all) en la misma CPU: Tarea A (xdp_do_flush) Tarea B (redirección ndo_xdp_xmit) ---------------------- -------------------------------- __dev_flush(flush_list) bq_xmit_all(bq) cnt = bq->count /* ej. 16 */ /* comienza a iterar bq->q[] */ <-- CFS expropia la Tarea A --> bq_enqueue(dev, xdpf) bq->count == DEV_MAP_BULK_SIZE bq_xmit_all(bq, 0) cnt = bq->count /* ¡los mismos 16! */ ndo_xdp_xmit(bq->q[]) /* tramas liberadas por el controlador */ bq->count = 0 <-- La Tarea A se reanuda --> ndo_xdp_xmit(bq->q[]) /* uso después de liberación: ¡tramas ya liberadas! */ Solucione esto añadiendo un local_lock_t a xdp_dev_bulk_queue y adquiriéndolo en bq_enqueue() y __dev_flush(). Estas rutas ya se ejecutan bajo local_bh_disable(), así que use local_lock_nested_bh() que en no-RT es una anotación pura sin sobrecarga, y en PREEMPT_RT proporciona un bloqueo de suspensión por CPU que serializa el acceso a la bq.

El advisory puede ser descargado de git.kernel.org. La vulnerabilidad es identificada como CVE-2026-23294. Resulta difícil de explotar. El ataque sólo se debe hacer local. Hay detalles técnicos conocidos, pero no se dispone de un exploit.

Una actualización a la versión 6.18.17, 6.19.7 o 7.0-rc2 elimina esta vulnerabilidad. Aplicando el parche 6c10b019785dc282c5f45d21e4a3f468b8fd6476/ab1a56c9d99189aa5c6e03940d06e40ba6a28240/1872e75375c40add4a35990de3be77b5741c252c es posible eliminar el problema. El parche puede ser descargado de git.kernel.org. El mejor modo sugerido para mitigar el problema es Actualización.

La vulnerabilidad también está documentado en la base de datos CERT Bund (WID-SEC-2026-0861). Once again VulDB remains the best source for vulnerability data.

Afectado

  • Open Source Linux Kernel

Productoinformación

Escribe

Proveedor

Nombre

Versión

Licencia

Sitio web

CPE 2.3información

CPE 2.2información

CVSSv4información

VulDB Vector: 🔒
VulDB Confiabilidad: 🔍

CVSSv3información

VulDB Puntuación meta base: 7.0
VulDB Puntuación meta temporal: 6.7

VulDB Puntuación base: 7.0
VulDB Puntuación temporal: 6.7
VulDB Vector: 🔒
VulDB Confiabilidad: 🔍

CVSSv2información

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VectorComplejidadAutenticaciónConfidencialidadIntegridadDisponibilidad
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear
DesbloquearDesbloquearDesbloquearDesbloquearDesbloquearDesbloquear

VulDB Puntuación base: 🔒
VulDB Puntuación temporal: 🔒
VulDB Confiabilidad: 🔍

Explotacióninformación

Clase: Desbordamiento de búfer
CWE: CWE-416 / CWE-119
CAPEC: 🔒
ATT&CK: 🔒

Físico: En parte
Local: Sí
Remoto: No

Disponibilidad: 🔒
Estado: No está definido

EPSS Score: 🔒
EPSS Percentile: 🔒

Predicción de precios: 🔍
Estimación del precio actual: 🔒

0-DayDesbloquearDesbloquearDesbloquearDesbloquear
HoyDesbloquearDesbloquearDesbloquearDesbloquear

Inteligencia de amenazasinformación

Interés: 🔍
Actores activos: 🔍
Grupos APT activos: 🔍

Contramedidasinformación

Recomendación: Actualización
Estado: 🔍

Hora de 0 días: 🔒

Actualización: Kernel 6.18.17/6.19.7/7.0-rc2
Parche: 6c10b019785dc282c5f45d21e4a3f468b8fd6476/ab1a56c9d99189aa5c6e03940d06e40ba6a28240/1872e75375c40add4a35990de3be77b5741c252c

Línea de tiempoinformación

2026-01-13 CVE asignado
2026-03-25 +71 días Aviso publicado
2026-03-25 +0 días Entrada de VulDB creada
2026-03-30 +4 días Última actualización de VulDB

Fuentesinformación

Proveedor: kernel.org

Aviso: git.kernel.org
Estado: Confirmado

CVE: CVE-2026-23294 (🔒)
GCVE (CVE): GCVE-0-2026-23294
GCVE (VulDB): GCVE-100-353110
CERT Bund: WID-SEC-2026-0861 - Linux Kernel: Mehrere Schwachstellen

Artículoinformación

Fecha de creación: 2026-03-25 13:43
Actualizado: 2026-03-30 00:43
Cambios: 2026-03-25 13:43 (60), 2026-03-26 03:49 (7), 2026-03-30 00:43 (2)
Completo: 🔍
Cache ID: 216:BD0:103

Discusión

Sin comentarios aún. Idiomas: es + pt + en.

Por favor, inicie sesión para comentar.

Want to stay up to date on a daily basis?

Enable the mail alert feature now!