Saltar al contenido
CVE-2026-89495 Fuente: CVE.org Publicada · sin explotación confirmada

Vulnerabilidad de escritura fuera de límites en Linux kernel (ocfs2)

Linux · Linux · Publicada en CVE.org el 11-09-2026 · Última actualización: 10-11-2026

Descripción

En el kernel de Linux se resolvió la siguiente vulnerabilidad: ocfs2: limitar namelen en dlm_migrate_request_handler. Serie de parches "ocfs2/dlm: bound peer-controlled lengths in the o2dlm". Los manejadores de recepción de o2dlm confían en campos de longitud y conteo u8 recibidos desde la red sin limitarlos, por lo que un nodo de un dominio DLM puede corromper o provocar un panic en cualquier otro nodo con un mensaje malformado. Tres defectos: - dlm_migrate_request_handler() pasa migrate->namelen sin verificar a dlm_init_mle(), que lo copia con memcpy() en el mname[] de 32 bytes de un objeto slab o2dlm_mle: una escritura fuera de límites en el heap de hasta ~215 bytes controlados por el atacante. - dlm_mig_lockres_handler() pasa mres->lockname_len sin verificar a dlm_init_lockres(), que lo copia con memcpy() en el objeto slab o2dlm_lockname de 32 bytes: una escritura fuera de límites en el heap de hasta ~223 bytes. - el mismo manejador confía en mres->num_locks sin verificar que el mensaje sea lo bastante grande para contener esa cantidad de entradas, por lo que dlm_process_recovery_data() recorre mres->ml[] más allá de la copia kmalloc(data_len) y activa un BUG_ON (una lectura fuera de límites que termina en un panic). Los demás manejadores de recepción de o2dlm ya rechazan un nombre sobredimensionado; los manejadores de migración y recuperación lo han omitido desde que se agregó el DLM (ver las etiquetas Fixes). El parche 1 limita namelen; el parche 2 valida lockname_len, num_locks y el tamaño del payload. El tráfico de recuperación y migración conforme no se ve afectado. o2net autentica a los pares solo mediante la clave del dominio DLM, por lo que cualquier nodo que se haya unido al dominio, incluido un miembro comprometido o malicioso, puede enviar estos mensajes. No existe un disparador local; el atacante ya debe ser miembro del clúster. Cada punto vulnerable se confirmó con KASAN mediante un módulo externo al árbol que lo replica exactamente (un kmem_cache/kmalloc del tamaño real de destino y luego el mismo memcpy/bucle sin límite): slab-out-of-bounds Write para las dos escrituras, Read para el recorrido de recuperación, y un panic. Una compilación en espacio de usuario con AddressSanitizer falla de forma idéntica con -m32 y -m64. Hay registros depurados disponibles a pedido. El autor lo informó de forma privada a security@kernel.org y a los mantenedores de ocfs2 el 2026-06-20; sin respuesta tras el período de embargo estándar, publica la corrección de forma pública. No tiene requisitos de embargo. Este parche (de 2): Un nodo que recibe un mensaje DLM_MIGRATE_REQUEST confía en la longitud de nombre proporcionada por el par (migrate->namelen) sin limitarla. dlm_init_mle() copia entonces esa cantidad de bytes en el arreglo fijo mname[] de DLM_LOCKID_NAME_MAX bytes de un objeto slab o2dlm_mle, por lo que un mensaje malformado de un par del clúster desborda el objeto slab en hasta ~215 bytes: una escritura fuera de límites en el heap de datos controlados por el atacante, alcanzable por cualquier nodo del dominio. La corrección rechaza un nombre sobredimensionado, tal como ya lo hacen dlm_master_request_handler() y los demás manejadores de recepción de o2dlm; el manejador de migración omite la verificación por completo. Los mensajes conformes no se ven afectados.

Qué hacer

Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.

Versiones afectadas

  • Linux Afectadas: 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a e1288865b8ceac0dcd1009ecba43de961f13d5bd · 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a aabc5d8388e6f8826345f0073455dbcaaaa6491d · 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a 006c96ea488eca2ef5155ec76038e0a4dbf65f0a · 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a 24989909d3413b44b104102caa6661b1e424ba0f · 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a f8658ee3327f73bd81c0bcd07cdeb5a8527fac98 · 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a de10cd3b062a5235af754925fcf49beb5a1109d4 · 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a 2487bea2098322669f0563baff53e797486b823f · 6714d8e86bf443f6f7af50f9d432025649f091f5 y anteriores a ea5b5609305a8437bc955a0834a530c12246d78f
  • Linux Afectadas: 2.6.16 No afectadas: 5.10.270 · 5.15.221 · 6.1.188 · 6.6.157 · 6.12.109 · 6.18.50

Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.

Referencias

Ver el texto original en inglés (CVE.org)

ocfs2: bound namelen in dlm_migrate_request_handler

In the Linux kernel, the following vulnerability has been resolved: ocfs2: bound namelen in dlm_migrate_request_handler Patch series "ocfs2/dlm: bound peer-controlled lengths in the o2dlm". The o2dlm receive handlers trust u8 length and count fields from the wire without bounding them, so a node in a DLM domain can corrupt or panic any other node with a malformed message. Three defects: - dlm_migrate_request_handler() passes migrate->namelen unchecked to dlm_init_mle(), which memcpy()s it into the 32-byte mname[] of an o2dlm_mle slab object: a heap out-of-bounds write of up to ~215 attacker-controlled bytes. - dlm_mig_lockres_handler() passes mres->lockname_len unchecked to dlm_init_lockres(), which memcpy()s it into the 32-byte o2dlm_lockname slab object: a heap out-of-bounds write of up to ~223 bytes. - the same handler trusts mres->num_locks without checking that the message is large enough to hold that many entries, so dlm_process_recovery_data() walks mres->ml[] past the kmalloc(data_len) copy and trips a BUG_ON (an out-of-bounds read ending in a panic). The other o2dlm receive handlers already reject an oversized name; the migration and recovery handlers have omitted it since the DLM was added (see the Fixes tags). Patch 1 bounds namelen; patch 2 validates lockname_len, num_locks, and the payload size. Conforming recovery and migration traffic is unaffected. o2net authenticates peers only by the DLM domain key, so any node that has joined the domain -- including a compromised or malicious member -- can send these messages. There is no local trigger; the attacker must already be a member of the cluster. Each sink was confirmed under KASAN with an out-of-tree module mirroring it exactly -- a kmem_cache/kmalloc of the real destination size, then the same unclamped memcpy/loop: slab-out-of-bounds Write for the two writes, Read for the recovery walk, and a panic. A userspace AddressSanitizer build faults identically under -m32 and -m64. Scrubbed logs are available on request. I reported this privately to security@kernel.org and the ocfs2 maintainers on 2026-06-20; with no response after the standard embargo period I am posting the fix publicly. I have no embargo requirement. This patch (of 2): A node receiving a DLM_MIGRATE_REQUEST message trusts the peer-supplied name length (migrate->namelen) without bounding it. dlm_init_mle() then copies that many bytes into the fixed DLM_LOCKID_NAME_MAX-byte mname[] array of an o2dlm_mle slab object, so a malformed message from a cluster peer overflows the slab object by up to ~215 bytes: a heap out-of-bounds write of attacker-controlled data, reachable by any node in the domain. Reject an oversized name, the way dlm_master_request_handler() and the other o2dlm receive handlers already do; the migration handler omits the check entirely. Conforming messages are unaffected.

Recibe el boletín cuando CISA agregue vulnerabilidades nuevas

Te escribimos solo cuando CISA agrega vulnerabilidades nuevas, ya traducidas: cada día que haya, o en un resumen los lunes. Confirmas por correo y te das de baja con un clic.

Frecuencia