04 septiembre 2015

SUIDGuard, extensión de seguridad para OSX

SUIDGuard es una extensión (modulo de kernel) de OSX Yosemite y que implementa varias mitigaciones genéricas en este sistema operativo.

El autor, Stefan Esser, es un hacker muy reputado por sus exploits para IOS y en el mundo del PHP, para el que creó un parche "Suhosin" que previene de las vulnerabilidades más típicas de este lenguaje.

En cuanto a SUIDGuarda, las protecciones  de las que dispone son:

  • Proteger los ficheros binarios SUID/SGID de las variables de entorno del tipo DYLD_ modificando la cadena de caracteres por XYLD. Por aclarar a los foráneos de OSX, estas variables son el dynamic linker, equivalente a las LD_PRELOAD del mundo Linux. Un exploit funcional (ya parcheado) lo creo el propio autor de esta herramienta. DYLD_PRINT_TO_FILE.
  • Proteger el flag O_APPEND para que no sea deshabilitado por otro usuario, este flag es generalmente utilizado por aplicaciones que almacenan registros y que cada vez que abren un manejador no sobreescriben su contenido.
  • Deshabilitar la ejecución de los binarios ejecutables sin segmento __PAGEZERO, que evitará un determinado tipo de exploits (kernel NULL derefs) como por ejemplo tpwn.
La forma más sencilla de instalar la extensión es descargar el paquete DMG disponible en su GitHub y ejecutarlo. Ya que al ser un módulo de kernel, si se compila, habrá que lidiar con la protección del propio sistema operativo para añadir módulos no firmados.

Una vez instalado, se puede comprobar con el comando "kextstat" y si detecta algún exploit aparecerá en el registro de "dmesg" una línea como la que se muestra en la imagen avisando de que ha neutralizado una ejecución.

Comprobación del funcionamiento de SUIDGuard.