El «enlazador» o «linker» que viene con el sistema operativo AIX 4.x (la versión Unix de IBM) sigue directivas que se pretenden únicamente vinculantes cuando se está compilando un programa, no cuando se va a ejecutar.
Las mayoría de los sistemas modernos soportan lo que se llama «carga dinámica», por medio de la cual un programa puede, por ejemplo, cargar una librería externa cuando es ejecutado. Ello permite, entre otras muchas funcionalidades:
* Reducir el consumo de memoria, ya que si esas librerías son empleadas por más procesos se comparten entre todos.
* Permite actualizar y modernizar una librería sin necesidad de recompilar todos los programas que la utilizan.
* El programa ocupa menos en disco, ya que las librerías compartidas no forman parte del ejecutable.
Cuando se enlaza un programa, existen una serie de librerías que se enlazan de forma «estática» (permanentemente), y otras librerías que se enlazan de forma «dinámica» (cuando el proceso se ejecuta). Debido a los riesgos de seguridad, los directorios donde se buscan las librer¡as din micas son fijos, permiti’ndose cambios merced a par metros adicionales en la l¡nea de comandos del «enlazador».
Lamentablemente el «linker» de AIX 4.x se desv¡a del est ndar Unix (aunque lo documenta en el manual) de forma tal que los «paths» o directorios en los que se le indica que busque las librer¡as est ticas, en tiempo de enlazado, tambi’n ser n utilizados para buscar librer¡as din micas en tiempo de ejecuci¢n.
Ello permite, por ejemplo, que si cuando se compil¢ un programa se le indic¢ el directorio actual como uno de los lugares en donde buscar las librer¡as est ticas, el ejecutable resultante tambi’n emplear el directorio local para cargar sus librer¡as din micas. Ni qu’ decir tiene que si ese ejecutable es invocable por un usuario arbitrario, ‘ste puede crear una librer¡a din mica que sustituya a una librer¡a del sistema. Si el proceso en cuesti¢n se ejecuta con privilegios elevados (los t¡picos procesos SETUID), el usuario puede ejecutar c¢digo arbitrario con esos privilegios.
Dado que se trata de un comportamiento documentado en el manual, es dudoso que IBM lo considere un error a solucionar. Una posibilidad es reenlazar los ejecutable indicando la opci¢n «-blibpath» en la l¡nea de comando.
M s Informaci¢n:
AIX ld -L Flag Potential Vulnerability:
http://www.securityfocus.com/vdb/bottom.html?vid=1059
http://www.securityfocus.com/vdb/bottom.html?section=solution&vid=1059
Jesos Cea Avi¢n
jcea@hispasec.com