Publicamos un 0-Day de InterScan Web Security Suite (IWSS)

Todo empieza en una tarde de auditoría. Después de un buen plato de callos uno se siente especialmente inspirado para jugar un poco con cositas tontas y tal vez darle la vuelta a una auditoría un poco sosa. Buscamos ficheros con setuid bit para root, aunque nunca sale nada… oh wait…

Nos encontramos con: “/opt/trend/iwss/data/patch/bin/patchCmd” debe de ser algún producto comercial, búsqueda rápida y bingo, se trata de un software por parte de TrendMicro.

5 minutos de objdump (lo único que había instalado en la máquina a auditar) fueron suficientes para encontrarse con uno de esos fallos de seguridad y programación dignos de los 90′ Básicamente permitiría a un atacante (o un admin que se olvidase su clave de r00t, por ejemplo) obtener acceso con super usuario al sistema. A continuación una imagen de la reunión con el cliente al explicarlo.

Ahora al trapo, vamos a explicar un poco de que va todo esto:
Como se puede observar en esta imagen, el binario “patchCmd” tiene setuid de root con ejecución para todos los usuarios. ¡Esto huele a victory!

Decompilamos el binario, y ¡bazinga! el binario realiza un “setuid(0)” luego un “setguid(0)” y encima para terminar de rematar el evidente pwn3d que se avecina, nos encontramos un “system()”

Recapitulando, lo que se ejecute con el system tomará permisos de root (no cambia el uid) independientemente del usuario que lo ejecute ya que posee el setuid-bit para este usuario y claro, como no, ejecución para todos, total… It’s free!

El binario llama a dos scripts, en este caso “./PatchExe.sh” y “./RollbackExe.sh” dependiendo de los parámetros de ejecución de “patchCmd”.

Ahora es cuando contamos la historia del señor Mr. Lumbreras que ejecuta los scripts con ruta relativa y encima, con “./” pasándoselo a pelo en un “system()”. Seguramente él pensó que sería la mejor de las maneras, no vaya a ser que lo instalasen en otro PATH y total, como los binarios solo se pueden llamar desde el PWD y tampoco se puede cambiar el PATH (como todos sabemos) es una implementación totalmente segura.

Para explotar esta vulnerabilidad a modo de prueba de concepto creamos un script en el PATH de un usuario sin privilegios que simplemente abriría una nueva Shell.
Se ejecuta el binario con los parámetros adecuados para componer la cadena de ejecución y se escalan privilegios al ejecutar una Bourne Shell con el usuario “root”.

A modo de “disclaimer” tenemos que decir que esta vulnerabilidad fue reportada a Trend Micro el día 28/06/2011 y ya son cuatro meses sin respuesta por parte del proveedor, por este motivo publicamos el presente 0-day, que aunque evidente dedicando 5 minutos a ello (no es nada del otro mundo, la verdad) puede llegar a ser una brecha de seguridad muy importante. Con esto no queremos propiciar nuevos ataques ni que nadie la líe parda, sino concienciar sobre la importancia de la seguridad.

Sed chicos buenos y leer el advisory oficial en la siguiente url:
Trendmicro IWSS 3.1 privilege escalation

Salu2. –
All Your Base Are Belong to Us!