Ha habido bastante expectación en torno a CVE-2025-56383 (publicada el 26 de septiembre de 2025), una vulnerabilidad de secuestro en Notepad++ v8.8.3 en la que un archivo DLL puede sustituirse para ejecutar código malicioso.

La CVE ha sido cuestionada por varias partes, pero no estamos aquí para pronunciarnos al respecto. Sí queremos, en cambio, hablar del secuestro de DLL y analizar la amenaza muy real que supone para una organización. Veamos qué es el secuestro de DLL y qué medidas puede adoptar para mantener sus DLL protegidas.

Qué es el secuestro de DLL y cómo se produce

El secuestro de DLL (también conocido como ataque de precarga de DLL) es una vulnerabilidad de seguridad en la que un archivo legítimo y de confianza de una biblioteca de vínculos dinámicos (DLL) de una aplicación Windows se sustituye por uno malicioso.

Este método aprovecha la forma en que las aplicaciones cargan archivos DLL, que contienen código y datos utilizados por varios programas. Al cargar una DLL maliciosa, un actor de amenazas puede ejecutar su propio código con los mismos privilegios que la aplicación legítima, lo que deriva en escalada de privilegios, persistencia y evasión de defensas.

Cuando se inicia un programa, a menudo necesita cargar varias DLL para realizar funciones específicas, normalmente desde directorios del sistema de confianza. Sin embargo, si una aplicación no controla cuidadosamente dónde busca estas DLL, podría cargar una DLL maliciosa desde una ubicación insegura o predecible (es decir, el directorio de trabajo actual o un recurso compartido de red). Esto puede ocurrir si la aplicación no especifica la ruta completa a la DLL o si la busca en un directorio al que un atacante puede acceder o modificar.

Flowchart showing DLL loading sequence. A purple box labeled “Application starts and requests DLL” connects to three folders: “Current Working Directory,” “Network Share,” and “System32.” The Current Working Directory points to a red box labeled “Malicious DLL” with a warning icon, while Network Share and System32 point to orange boxes labeled “Legitimate DLL” with checkmark icons.

Aunque este tipo de ataque no es nuevo, sigue siendo eficaz por su sencillez. Y aunque este problema concreto afecta a aplicaciones Windows, es importante señalar que vulnerabilidades similares pueden afectar a otros sistemas operativos (como Linux y macOS, que utilizan carga dinámica para bibliotecas compartidas).

El secuestro de DLL introduce múltiples riesgos de seguridad, entre ellos:

  • Robo de datos: La DLL maliciosa puede interceptar y robar datos confidenciales, como contraseñas o información personal.
  • Sistemas comprometidos: El atacante puede obtener control sobre el sistema, lo que podría dar lugar a nuevos ataques o a la instalación de malware adicional.
  • Malware: La DLL maliciosa puede actuar como canal para propagar malware e infectar otras partes del sistema o de la red.

Una DLL puede secuestrarse de varias formas; estas son algunas de las técnicas más habituales:

  • Orden de búsqueda de DLL inseguro: Los atacantes colocan DLL maliciosas en directorios que se buscan antes que la ubicación de la DLL legítima.
  • Manipulación de rutas relativas: Las DLL maliciosas se cargan cuando las aplicaciones utilizan rutas relativas.
  • Redirección de DLL: Técnicas como la manipulación de rutas redirigen el proceso de carga de DLL.
  • Permisos débiles: Los atacantes sustituyen DLL legítimas por otras maliciosas en directorios con permisos débiles.
  • Secuestro de DLL fantasma: Los atacantes aprovechan aplicaciones que cargan DLL inexistentes colocando DLL maliciosas con el mismo nombre en los directorios de búsqueda.

Circular diagram divided into six colored segments around a center labeled “DLL Hijacking Techniques.” Segments include “Phantom DLL Hijacking,” “Insecure DLL Search Order,” “Relative Path Manipulation,” “DLL Redirection,” “Weak Permissions,” each with a small icon representing the concept.Estas posibles vulnerabilidades ponen de relieve la importancia de las prácticas de codificación segura y la gestión de permisos de directorio a la hora de prevenir esta forma de ataque.

Cómo prevenir el secuestro de DLL y mantener sus DLL protegidas y seguras

Aunque el secuestro de DLL sigue siendo una amenaza, existen prácticas recomendadas que puede seguir e implementar para reducir el riesgo y lograr un entorno de TI más seguro y protegido.

Five concentric circles in gradient colors from orange to purple, representing security layers. The innermost circle reads “Secure DLL Loading,” followed by “Integrity Checks,” “User Permissions,” “App Control and Security Software,” and the outermost circle labeled “Patch Management.”

Carga segura de DLL:

  • Utilizar rutas completas: Especifique siempre la ruta completa a la DLL al cargarla. Esto garantiza que la aplicación cargue la DLL desde una ubicación de confianza (y no desde un directorio inseguro).
  • Configurar la ruta de búsqueda segura: Utilice la función SetDllDirectory en Windows para añadir directorios de confianza a la ruta de búsqueda y excluir los inseguros. Esto puede ayudar a evitar que la aplicación cargue DLL desde ubicaciones inesperadas.

Comprobaciones de integridad de archivos:

  • Firmas digitales: Asegúrese de que las DLL estén firmadas con una firma digital y verifique la firma antes de cargar la DLL. Esto puede ayudar a confirmar que la DLL no ha sido manipulada.
  • Verificación de hash: Utilice funciones hash criptográficas para verificar la integridad de los archivos DLL. Si el hash de la DLL no coincide con el valor esperado, es posible que el archivo se haya modificado.

Permisos de usuario:

  • Principio de mínimo privilegio: Ejecute las aplicaciones con el mínimo privilegio necesario. Esto limita el posible daño de un secuestro de DLL, ya que el código malicioso tendrá menos permisos para ejecutar acciones perjudiciales.
  • Control de cuentas de usuario (UAC): Active UAC en sistemas Windows para solicitar permiso a los usuarios antes de ejecutar aplicaciones con privilegios elevados. Esto puede ayudar a evitar cambios no autorizados en los archivos del sistema.

Control de aplicaciones y gestión de privilegios:

  • Aplicaciones conocidas y de confianza: El control de aplicaciones garantiza que solo puedan iniciarse aplicaciones conocidas y de confianza, lo que elimina el riesgo de introducir aplicaciones no autorizadas.
  • Control de privilegios: Una gestión eficaz de privilegios es crucial para prevenir el secuestro de DLL. Al garantizar que las aplicaciones cuenten con los derechos y privilegios correctos para iniciarse, limita la capacidad de los usuarios no autorizados para introducir archivos maliciosos. Este control actúa como una barrera clave, ya que restringe el acceso que necesita un atacante para explotar el mecanismo de búsqueda de DLL y, por tanto, mejora la seguridad de su entorno.

Software de seguridad:

  • Antivirus y antimalware: Utilice software antivirus y antimalware de confianza para detectar y prevenir la carga de DLL maliciosas. Estas herramientas pueden analizar archivos y comportamientos maliciosos conocidos.
  • Sistemas de detección de intrusiones (IDS): Implemente IDS para supervisar actividades inusuales, como cambios inesperados en archivos DLL o intentos de cargar DLL desde ubicaciones inseguras.

Gestión de parches:

  • Mantener el software actualizado: Actualice periódicamente las aplicaciones y los sistemas operativos con los parches de seguridad más recientes. Muchas vulnerabilidades de secuestro de DLL se corrigen mediante actualizaciones, por lo que conviene mantenerse al día para ayudar a protegerse frente a amenazas conocidas.
  • Aplicación automatizada de parches: Utilice una herramienta automatizada de gestión de parches para garantizar que todos los sistemas se mantengan actualizados sin intervención manual. Esto reduce la ventana de oportunidad para que los atacantes exploten vulnerabilidades conocidas, incluidas aquellas que podrían utilizarse para el secuestro de DLL. Este enfoque proactivo ayuda a mantener la integridad de sus aplicaciones y sistemas operativos, lo que dificulta mucho más que los atacantes inyecten DLL maliciosas.

Al implementar estas prácticas recomendadas, puede reducir significativamente el riesgo de secuestro de DLL y mejorar la seguridad general de sus aplicaciones y sistemas.

Combine las herramientas y tácticas adecuadas para prevenir el secuestro de DLL

El secuestro de DLL ha sido una forma de ataque persistente durante años, lo que demuestra que sigue siendo eficaz y que, por tanto, continuará siendo un problema para las organizaciones.

Prepare su organización para el futuro utilizando las prácticas recomendadas mencionadas anteriormente junto con soluciones probadas como Ivanti Neurons for App Control para ayudar a mantener sus DLL seguras. Funcionalidades como Trusted Ownership detectan y bloquean la ejecución de una DLL secuestrada al garantizar que la propiedad de los elementos coincida con su lista aprobada de propietarios de confianza.

Además, mantenga sus aplicaciones actualizadas para limitar la exposición a vulnerabilidades conocidas. Elimine el riesgo de error humano automatizando la aplicación de parches con Ivanti Neurons for Patch Management, lo que garantiza que los sistemas se actualicen y protejan automáticamente.