cd ~/blog

~/vulns/dll-search-order-hijacking.md

DLL Search Order Hijacking

miscautor: Jordy Pérez Osorio aviso legal
WindowsDLL-Search-Order-Hijacking

~2 min de lectura


1. Descripción técnica

DLL Search Order Hijacking ocurre cuando un proceso solicita una biblioteca por nombre, sin fijar una ruta confiable, y el cargador encuentra primero una DLL controlada por el atacante. El límite de confianza se rompe entre el nombre solicitado por la aplicación y la ruta que Windows selecciona mediante su orden de búsqueda.

La escritura de una DLL no basta por sí sola. Deben coincidir el nombre esperado, una ubicación consultada antes que la biblioteca legítima y una nueva carga por parte del proceso. El código se ejecuta con la identidad de ese proceso.

// renderizando diagrama…

2. Impacto y condiciones

El impacto abarca ejecución de código, persistencia o escalada local si el proceso vulnerable tiene más privilegios. Para confirmarlo deben existir, como mínimo:

  • una carga por nombre o una ruta de resolución insegura;
  • un directorio de búsqueda escribible por el atacante;
  • una biblioteca ausente o reemplazable con el nombre esperado;
  • una acción que obligue al proceso a cargarla.

3. Validación y detección

Process Monitor permite observar intentos de carga y resultados como NAME NOT FOUND. Hay que comprobar la ruta finalmente seleccionada, los permisos del directorio, la arquitectura de la DLL y la identidad del proceso. Una carpeta escribible sin evidencia de carga sólo representa una condición candidata.

4. Explotación documentada en los writeups

4.1 135-nessus

El servicio de Nessus ejecutado como SYSTEM cargaba fips.dll desde un directorio modificable por la cuenta obtenida. El writeup conserva la DLL usada, el reemplazo de la biblioteca y la autenticación posterior con el usuario administrativo creado durante la carga.

5. Mitigación

  • Cargar bibliotecas mediante rutas absolutas y las banderas LOAD_LIBRARY_SEARCH_* apropiadas.
  • Evitar que usuarios no privilegiados escriban en directorios consultados por servicios elevados.
  • Mantener Safe DLL Search Mode y retirar el directorio actual del orden cuando no sea necesario.
  • Supervisar creación o reemplazo de DLL en rutas de aplicaciones y servicios.

6. Clasificación

7. Referencias y conexiones

// relacionados