Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · NOTICIA EXPLICADA

“Big Fish” logra root local en OpenBSD, pero los parches ya estaban disponibles

Calif publicó el 16 de octubre una cadena funcional de escalada local en OpenBSD 7.9. Combina un desbordamiento de contador de memoria compartida de hace décadas con otros fallos del kernel; OpenBSD ya había distribuido las correcciones en septiembre.

Diagrama original del usuario local, desbordamiento del contador, corrupción de memoria y root.
Ilustración original: la cadena pública es escalada local, no una entrada remota sin requisitos. Watch at Ease

La firma Calif publicó el 16 de octubre una prueba de concepto completa que eleva a un usuario local sin privilegios hasta root en OpenBSD 7.9. Primero desborda un contador con signo de 16 bits de memoria compartida y luego combina un use-after-free provocado por una carrera con otra escritura fuera de límites.

La demostración es seria, pero importa el límite: el atacante debe poder ejecutar código como usuario local. No muestra una intrusión remota sin autenticar. OpenBSD ya había emitido la errata 018 el 14 de septiembre y la 026 el 30 de septiembre, antes del código público.

Qué demuestra el exploit público

Calif afirma que mapea 127 segmentos System V y crea 259 procesos para superar el máximo del contador de 16 bits. Una condición de carrera convierte la contabilidad dañada en un use-after-free.

La cadena usa preparación del heap y otra escritura fuera de límites para alterar las tablas de páginas y sobrescribir un puntero predecible del kernel. Logró root con KARL, SMAP y SMEP activos y sin fuga de información.

Qué no demuestra

Es una escalada local. La ruta publicada presupone que el atacante ya puede ejecutar código como usuario sin privilegios en la máquina. No aporta por sí sola una entrada de red sin autenticar.

La cobertura independiente no registraba CVE ni uso en ataques reales al publicarse. Es un estado puntual, no una garantía de que el código público no se use después.

Las correcciones precedieron a la prueba

La errata 018 de OpenBSD 7.9, del 14 de septiembre, evita el desbordamiento de shmat(4). La 026, del 30 de septiembre, corrige un error de recuento de referencias del kernel que podía causar use-after-free. Ambas ofrecen parche fuente para todas las arquitecturas.

La página oficial ofrece actualizaciones binarias con syspatch para amd64, i386 y arm64; otras arquitecturas pueden requerir la rama -stable. OpenBSD 7.8 también recibió la corrección de memoria compartida en la errata 054.

Cómo verificar la protección

En una versión oficial compatible, syspatch sin opciones descarga, verifica e instala todos los parches binarios pendientes. Son acumulativos y no se puede elegir solo una parte. -c lista los disponibles y -l los instalados.

No deduzca la protección solo por la versión del sistema. Compruebe los parches instalados, lea la salida y siga cualquier aviso de reinicio. Versiones sin soporte o arquitecturas sin binario deben usar el parche fuente firmado y la guía oficial -stable.

Por qué importa aun después del parche

El contador de hace 37 años es solo el comienzo. La cadena también depende de asignaciones predecibles del kernel y otra primitiva de corrupción. Calif propone unlinking seguro, aleatorización de tablas de páginas y del asignador, y comprobaciones del compilador.

La conclusión práctica es limitada: ahora que existe una cadena funcional, verificar parches es urgente; no debe describirse como toma remota de OpenBSD ni como prueba de ataques activos.

Cronología original de las dos correcciones de septiembre antes del PoC del 16 de octubre.
Ilustración original: verifique parches con syspatch y siga cualquier aviso de reinicio. Watch at Ease