Ciberseguridad

OpenBSD: el bug de 1988 que da root y el parche que muchos omitieron

Un short de 1988 da root en OpenBSD 7.9: cómo se encadena la vulnerabilidad y por qué el parche clave pasó como fiabilidad. Aplica errata 018 y 026.

OpenBSD: el bug de 1988 que da root y el parche que muchos omitieron - Facialix
Anuncios

Un contador de 16 bits que nació en 1988 acaba de dar una shell de root en OpenBSD 7.9. La firma Calif publicó un exploit que convierte esa vulnerabilidad de OpenBSD en una shell de root.

El ataque encadena un use-after-free del kernel y un out-of-bounds write. Lo más incómodo: el parche que cerraba la primera pieza salió el 14 de septiembre etiquetado como fiabilidad, no como seguridad.

El fallo vive en shm_nattch, el contador de procesos con un segmento de memoria compartida SysV adjunto. En las fuentes originales de BSD se definió como un short de 16 bits con signo, con un máximo de 32.767.

OpenBSD heredó el tipo sin ampliarlo. El writeup de Calif documenta la cadena y enlaza el código original de 1988.

Cómo se convierte un contador en root

Mapea 127 segmentos de memoria compartida y los libera. Después hace fork de 259 procesos hasta que el contador se pasa de 32.767 y cae a -32.643. Después gana una carrera con IPC_RMID que provoca un use-after-free: el kernel libera memoria que otros procesos siguen usando.

Un out-of-bounds write en ip_moptions permite escribir donde no debe. Al cerrar el socket, los decrementos modifican el mapeo autorreferente de la tabla de páginas y hacen accesible una página de usuario para el supervisor. Así saltan SMAP y SMEP y sobrescriben un puntero predecible del kernel.

El detalle completo y el PoC público están en su repositorio.

El parche que los escáneres no ven

OpenBSD ya había corregido los dos fallos antes de la publicación. El overflow de shmat quedó cerrado en el errata 018 del 14 de septiembre de 2026, con etiqueta de reliability fix. El use-after-free de SysV IPC se corrigió en el errata 026 del 30 de septiembre, este sí como security fix.

En OpenBSD 7.8 los equivalentes son el errata 054 y el 062. No se asignó ningún CVE: las herramientas que priorizan por CVE no marcan el riesgo. Si tu política solo aplica parches de seguridad, el primer eslabón del exploit sigue abierto.

El ataque requiere acceso local y no hay explotación reportada, pero el PoC es público.

Qué hacer si administras OpenBSD

En 7.9 ejecuta syspatch -l y confirma que los errata 018 y 026 estén aplicados. En 7.8 revisa 054 y 062. Si faltan, aplícalos con syspatch y reinicia: son parches de kernel. La página oficial de errata detalla el procedimiento para binarios y para compilar desde fuentes.

Mientras no puedas parchear, limita el acceso local y reduce los servicios expuestos. Sigue la página de errata: el out-of-bounds write en ip_moptions no tiene un errata propio.

La lección de un short de 1988

Calif no solo mostró el exploit: también propuso mitigaciones. Habla de safe-unlinking en listas doblemente enlazadas y de randomizar la ubicación del mapeo autorreferente de la tabla de páginas.

También propone aleatorizar la base y el orden del allocator del kernel y usar sanitizers del compilador en producción. Y cierra con una advertencia que aplica a cualquier código heredado. En la era del descubrimiento de bugs asistido por IA, los tipos de dato viejos que nadie cuestionó se encuentran más rápido.

OpenBSD sigue siendo uno de los proyectos que más audita su código, y aun así un short con signo de 1988 sobrevivió casi cuatro décadas.

La tarea concreta para quien administra Linux o BSD es revisar no solo los parches de seguridad, también los de fiabilidad que tocan el kernel. El exploit está público; tu syspatch -l es la respuesta más rápida.

Avatar photo
Sobre el autor

Julio Del Angel

Redactor en Facialix

Ingeniero en Sistemas, egresado del Instituto Tecnológico Superior de Pánuco (TecNM), Veracruz. Especializado en desarrollo de software, tecnología e inteligencia artificial. Fundador y editor de Facialix, donde analiza noticias, avances científicos y oportunidades educativas.

Ver todos sus artículos →

Deja un comentario