Sábado, 17 de octubre de 2026

Lo más relevante del hosting en el mundo, en español · ehost.ec →

Exploit local demuestra escalada a root en OpenBSD 7.9 aprovechando un bug de memoria compartida de ~37 años

Investigadores de la firma Calif publicaron un exploit local que alcanza privilegios root en OpenBSD 7.9 encadenando un desbordamiento entero en shmat con otra falla de kernel. Las correcciones llegaron en erratas publicadas en septiembre y están disponibles vía syspatch.

Por Equipo ehost3 min de lecturaFuente: The Hacker News
Exploit local demuestra escalada a root en OpenBSD 7.9 aprovechando un bug de memoria compartida de ~37 años
Imagen ilustrativa generada con inteligencia artificial.

Investigadores de seguridad de Calif han publicado un análisis técnico y el código proof-of-concept de un exploit local que consigue privilegios de root en OpenBSD 7.9. El ataque encadena un desbordamiento entero en la función de unión de memoria compartida (shmat) —un bug heredado de código BSD de finales de los años ochenta— con una vulnerabilidad separada de referencia y escritura fuera de límites en el kernel, lo que permite saltarse medidas como KARL, SMAP y SMEP.

Qué ocurre y por qué importa

El primer eslabón es un desbordamiento entero en el contador de adjuntos de memoria compartida (shm_nattch). Ese contador se definió originalmente como un entero corto con signo de 16 bits, con un tope de 32.767 en fuentes BSD de 1988; OpenBSD heredó ese tipo y no lo amplió. El exploit crea muchas zonas de memoria compartida y procesos para forzar que el contador sobrepase su máximo y “envolverse” a valores negativos, lo que corrompe el recuento de referencias.

La corrupción del contador provoca una condición de carrera que desemboca en un use-after-free: el kernel libera estructuras que otros procesos siguen usando. Paralelamente, el exploit aprovecha otra falla de escritura fuera de límites que corrompe contadores de miembros multicast en el kernel. Cuando se cierra el socket afectado, las operaciones resultantes alteran entradas de la tabla de páginas y convierten un mapeo de usuario en accesible por supervisor, lo que permite eludir SMAP y SMEP (protecciones de hardware que evitan la ejecución o acceso a memoria de usuario desde modo kernel).

Con esa ventana, el exploit sobreescribe un puntero de función en una dirección de kernel predecible y logra ejecutar código con privilegios de núcleo, lo que culmina en escalada a root.

Cómo el exploit sortea la aleatorización KARL

OpenBSD usa KARL para relinkear el binario del kernel y aleatorizar direcciones tanto de código como de datos. Sin embargo, según los investigadores, los asignadores de memoria del kernel son deterministas: los allocators que se ejecutan al arranque y el “best-fit” no introducen una base aleatoria, por lo que ciertas estructuras tempranas (incluidos punteros en manejadores de interfaz de red como lo0 y enc0) quedan en direcciones repetibles en el mismo hardware. Gracias a ello, el exploit no requiere una vulnerabilidad de divulgación de información para localizar objetivos dentro del kernel.

Parcheo y mitigaciones disponibles

OpenBSD publicó dos erratas en septiembre que corrigen las vulnerabilidades encadenadas: la corrección del desbordamiento entero en shmat se incluyó como errata 018 (distribuida como parche de fiabilidad) y la corrección del use-after-free por recuento de referencias se publicó como errata 026 (clasificada como parche de seguridad). Ambas erratas están disponibles a través de syspatch y cubren todas las arquitecturas soportadas; además, la corrección del desbordamiento también llegó a OpenBSD 7.8.

No se ha asignado ningún identificador CVE público para estas fallas al momento de la publicación del análisis, y no hay evidencia conocida de explotación activa antes de los parches.

Recomendaciones prácticas para administradores

  • Actualizar ya: los administradores de sistemas con OpenBSD 7.8/7.9 deben aplicar las erratas disponibles vía syspatch para asegurarse de tener ambas correcciones.
  • Revisar procesos locales: dado que se trata de un exploit local que requiere crear múltiples segmentos y procesos, restringir el acceso de usuarios no confiables a sistemas multiusuario es importante.
  • Seguir las propuestas de hardening: Calif sugiere medidas adicionales como safe-unlinking para listas enlazadas del kernel, randomización del mapeo autorreferencial de la tabla de páginas, randomización del allocator del kernel y comprobaciones de límites por compilador. Estas mitigaciones son complementarias a los parches y pueden reducir la superficie de ataques similares.

Qué cambia y a quién afecta

La novedad técnica es que un fallo muy antiguo en la representación del contador de adjuntos de memoria compartida sigue siendo práctico hoy en día para iniciar una cadena explotable cuando se combina con otras debilidades del kernel. Afecta a sistemas OpenBSD que no apliquen las erratas; los sitios web y servicios alojados en servidores OpenBSD con usuarios locales no confiables son los más expuestos. Aplicar los parches y endurecer el kernel son las acciones recomendadas.

Lee también:

Fuente: The Hacker News

Compartir