Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Comportamiento peligroso en el "linker" de AIX 4.x

Última Actualización: 23 de Marzo de 2.000 - Jueves

Artículo publicado en el boletín Una-Al-Día de Hispasec, el 20 de Marzo de 2.000.

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



Python Zope ©2000 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS