¿Qué es una biblioteca de enlace dinámico?
Una biblioteca de enlaces dinámicos es un sistema utilizado por Microsoft para permitir que varias aplicaciones accedan a la misma sección de código en Windows® al mismo tiempo. Esta es una de las claves para que la multitarea funcione de manera efectiva. En 2010, los investigadores de seguridad descubrieron que los piratas informáticos podían explotar esa laguna en la forma en que funcionaba el sistema de biblioteca de enlaces dinámicos. Esto llevó a un dilema sobre cómo solucionarlo sin afectar la usabilidad de las aplicaciones.
Para comprender cómo funciona una biblioteca de enlaces dinámicos, es importante comprender la diferencia entre Windows® y las aplicaciones de software. Windows® es un sistema operativo que existe en gran medida para coordinar la forma en que las aplicaciones individuales, también conocidas como programas, acceden a las capacidades de procesamiento de la computadora. Windows® en sí mismo es, en última instancia, un conjunto de códigos de computadora que efectivamente actúa como el libro de reglas o guía sobre cómo las aplicaciones interactúan entre sí y con el hardware.
La biblioteca de enlaces dinámicos es el sistema mediante el cual las aplicaciones pueden acceder y ejecutar secciones individuales del código de Windows®. Un ejemplo sería la sección de Windows® responsable de imprimir documentos. La mayoría de las aplicaciones necesitan acceder a esta función en algún momento, pero si cada aplicación cargara el código relevante en la memoria de la computadora tan pronto como la aplicación comenzó a ejecutarse, sería un uso ineficiente de los recursos y podría causar conflictos.
Para resolver esto, el código de Windows® para una función particular, en este caso la impresión, se almacena como un pequeño programa conocido como biblioteca de enlaces dinámicos o archivo DLL. Si un usuario ejecuta una aplicación como un procesador de textos, este archivo no se abre automáticamente. En cambio, el procesador de texto solo abre y activa el archivo cuando es necesario, en este caso cuando el usuario desea imprimir un documento.
Históricamente, muchos desarrolladores de aplicaciones simplemente escribieron un código que decía cómo se llamaba el nombre de la biblioteca de enlaces dinámicos relevante, en lugar de especificar exactamente dónde debería ubicarse en la computadora. Para evitar esto, Windows® tiene un sistema establecido para localizar archivos DLL faltantes mediante la búsqueda de una lista establecida de ubicaciones en un orden definido. Si bien esto podría explotarse teóricamente si un archivo malicioso disfrazado de archivo DLL se coloca en el lugar correcto y, por lo tanto, se encuentra y se abre antes del archivo legítimo, esto no se consideró un riesgo de seguridad importante ya que los piratas informáticos necesitarían acceso físico a una máquina para obtener El archivo malicioso en su lugar.
En 2010, se descubrió que, en teoría, los piratas informáticos podían instalar dichos archivos mediante una conexión remota: es decir, a través de Internet. Esto significaba que docenas de aplicaciones de Windows® eran vulnerables a los ataques con este método. La comunidad de seguridad estaba dividida en cuanto a si era mejor reescribir las aplicaciones individuales para especificar la ubicación del archivo DLL legítimo, que dependía de que cada desarrollador tomara medidas, o que Microsoft cambiara la forma en que Windows® maneja dichos archivos, que potencialmente podría hacer que las aplicaciones dejen de funcionar correctamente.