Security
9 min read
1858 views

Ataques por Symlink: Cuando las Operaciones de Archivo Traicionan tu Confianza

IT
InstaTunnel Team
Published by our engineering team
Ataques por Symlink: Cuando las Operaciones de Archivo Traicionan tu Confianza

Los enlaces simbólicos son una de las funciones más poderosas en los sistemas operativos modernos, permitiendo una gestión flexible de archivos y una arquitectura de sistema elegante. Sin embargo, esta misma flexibilidad crea una superficie de ataque peligrosa que sigue afectando a desarrolladores y equipos de seguridad en todo el mundo. Desde escapes de contenedores en Docker y Kubernetes hasta escaladas de privilegios en sistemas Windows y Linux, los ataques por symlink siguen siendo una amenaza persistente y en evolución que requiere atención.

Entendiendo los Enlaces Simbólicos y sus Implicaciones de Seguridad

Un enlace simbólico (symlink) es un tipo especial de archivo que funciona como un puntero o referencia a otro archivo o directorio. A diferencia de los hard links que apuntan directamente a los datos en disco, los symlinks contienen la ruta a su objetivo, actuando esencialmente como accesos directos sofisticados. Esta indirección es precisamente lo que los hace útiles y peligrosos.

Cuando una aplicación sigue un symlink, normalmente accede al archivo objetivo con los permisos del proceso que realiza la operación, no los permisos del usuario que creó el enlace. Este comportamiento crea oportunidades para que los atacantes redirijan operaciones privilegiadas de archivos a ubicaciones no deseadas, eludiendo controles de acceso y manipulando recursos sensibles del sistema.

La preocupación de seguridad fundamental con los symlinks proviene de cómo los sistemas operativos resuelven las rutas de archivos. Cuando un proceso privilegiado abre una ruta que contiene symlinks, sigue esos enlaces de manera transparente, potencialmente accediendo a archivos que el solicitante original nunca debería tocar. Un atacante que pueda crear symlinks en ubicaciones estratégicas puede explotar este comportamiento para leer, escribir o eliminar archivos mucho más allá de su alcance de acceso previsto.

La Anatomía de los Ataques por Symlink

Los ataques por symlink generalmente se clasifican en varias categorías, cada una explotando diferentes aspectos del comportamiento del sistema de archivos y del diseño de aplicaciones.

Vulnerabilidades en Carga y Extracción de Archivos

Uno de los vectores de ataque más prevalentes implica la extracción de archivos en archivos comprimidos—una clase de vulnerabilidad popularizada por la investigación “Zip Slip” divulgada en 2018 que afectó a miles de proyectos en múltiples ecosistemas de programación. El ataque aprovecha archivos de archivo maliciosamente diseñados que contienen secuencias de traversal de rutas o enlaces simbólicos que, al ser extraídos, escriben archivos fuera del directorio de destino previsto.

La variante de este ataque con symlinks es particularmente insidiosa. Un atacante crea un archivo comprimido que contiene una entrada de symlink apuntando fuera del directorio de extracción, seguida por un archivo regular con el mismo nombre. Durante la extracción, primero se crea el symlink, estableciendo una ruta a una ubicación arbitraria. Cuando se extrae el archivo siguiente, la aplicación sigue el symlink y escribe contenido en la ubicación controlada por el atacante.

Este patrón de vulnerabilidad continúa apareciendo en software moderno. En abril de 2025, se descubrió una vulnerabilidad Zip Slip en la popular biblioteca Go mholt/archiver (CVE-2025-3445), demostrando que a pesar de años de conciencia, siguen surgiendo nuevas instancias en bases de código tanto legacy como modernas.

Condiciones de Carrera en Symlink (TOCTOU)

Las condiciones de carrera de “time-of-check to time-of-use” (TOCTOU) representan otra categoría importante de vulnerabilidades por symlink. Estos ataques explotan la ventana entre cuando una aplicación verifica las propiedades de un archivo y cuando realmente usa el archivo. Un atacante que pueda reemplazar un archivo legítimo con un symlink durante esta ventana puede redirigir la operación a un objetivo no deseado.

El ejemplo clásico involucra programas privilegiados que verifican permisos de archivos antes de realizar operaciones. Un usuario malicioso crea un enlace simbólico a un archivo al que normalmente no puede acceder. Cuando el programa privilegiado crea un archivo con el mismo nombre que el symlink, en realidad crea (o modifica) el archivo objetivo enlazado, potencialmente insertando contenido controlado por el atacante en ubicaciones protegidas.

Estas carreras han causado impactos reales significativos. En octubre de 2025, AWS experimentó una interrupción importante debido a una condición de carrera TOCTOU en su sistema de gestión DNS para DynamoDB, resultando en una falla generalizada del servicio en la región US-EAST-1. El incidente demostró cómo las condiciones de carrera pueden afectar incluso a la infraestructura más sofisticada.

Escapes de Contenedores: Rompiendo la Frontera de Aislamiento

Las tecnologías de contenedores como Docker y Kubernetes dependen en gran medida de los espacios de nombres de Linux y del aislamiento del sistema de archivos para separar cargas de trabajo. Los ataques por symlink han demostrado repetidamente ser efectivos para romper estos límites, permitiendo a los atacantes escapar del aislamiento del contenedor y acceder al sistema host.

Vulnerabilidades en Vessels con Fugas

En enero de 2024, Snyk anunció el descubrimiento de cuatro vulnerabilidades críticas en Docker y Kubernetes que ejemplifican ataques por symlink enfocados en contenedores. CVE-2024-21626, que afecta al runtime de contenedores runC, involucró una fuga de descriptores de archivos que los atacantes podían explotar usando symlinks para acceder al sistema de archivos del host.

Una imagen maliciosa de contenedor podría configurar rutas que, mediante manipulación de symlinks, proporcionaran al proceso del contenedor acceso al directorio de trabajo del sistema host en lugar del entorno aislado del contenedor. Esto otorgaba privilegios de lectura, escritura y potencialmente ejecución en recursos del host, dependiendo de los permisos del descriptor de archivo filtrado.

CVE-2024-23651 demostró una condición de carrera en symlink durante el proceso de construcción de Docker. Al sincronizar cuidadosamente las operaciones de symlink durante la invalidación de caché, los atacantes podían montar directorios sensibles del host en el sistema de archivos del contenedor, permitiendo exfiltración de datos o escalada de privilegios.

Las Vulnerabilidades de runC en 2025

El panorama de seguridad en contenedores enfrentó nuevos desafíos en noviembre de 2025 con la divulgación de tres vulnerabilidades de alta severidad en runC (CVE-2025-31133, CVE-2025-52565 y CVE-2025-52881). Estas fallas se centran en cómo runC maneja rutas enmascaradas, objetivos de montaje y escrituras en procfs—todo manipulable mediante condiciones de carrera y abuso de symlinks.

Las vulnerabilidades explotan el uso de /dev/null por parte de runC para enmascarar archivos sensibles del host. Debido a que runC no verificaba que /dev/null fuera legítimo, los atacantes podían intercambiarlo con un symlink durante la inicialización del contenedor. Esto permitía montar rutas arbitrarias del host en el contenedor, habilitando escrituras en ubicaciones críticas como /proc/sys/kernel/core_pattern—un vector de escape de contenedores bien conocido.

La técnica de escape de registros en Kubernetes, que monta logs en /var/log mediante symlinks a archivos de logs del contenedor, también ejemplifica estos riesgos. Los atacantes con acceso a un pod montado en /var/log pueden manipular estos symlinks para leer archivos arbitrarios del host a través de la interfaz de logs de Kubernetes, demostrando cómo la funcionalidad legítima puede ser utilizada como arma.

Escalado de Privilegios en Sistemas de Escritorio

Más allá de los contenedores, los ataques por symlink siguen siendo una técnica potente para escalada de privilegios en sistemas tradicionales Windows y Linux.

Escalada de Privilegios en Windows

Windows presenta múltiples tipos de symlinks que los atacantes pueden encadenar para escalar privilegios: redirecciones NTFS (a nivel de directorio), enlaces simbólicos del gestor de objetos y enlaces simbólicos en claves del registro. La investigación de James Forshaw y otros ha demostrado cómo combinar estas primitivas permite ataques poderosos contra procesos privilegiados.

CVE-2019-1161, una vulnerabilidad en Windows Defender, ejemplifica este patrón. El proceso MpSigStub.exe, que se ejecuta con privilegios SYSTEM, podía ser manipulado mediante symlinks del gestor de objetos para eliminar archivos arbitrarios. Un atacante creaba symlinks que redirigían las operaciones de archivos de Defender a ubicaciones protegidas del sistema, logrando eliminar archivos arbitrarios con los privilegios más altos.

Microsoft ha implementado mitigaciones incluyendo restringir la creación de ciertos tipos de symlinks en procesos sandbox y agregar verificaciones. Sin embargo, la divulgación en octubre de 2025 de CVE-2025-55696—una condición de carrera TOCTOU en NtQueryInformationToken—demuestra que el código del kernel de Windows sigue siendo vulnerable a ataques basados en carrera que pueden conducir a escalada de privilegios.

Vulnerabilidades en Linux y Unix

Los sistemas Linux enfrentan desafíos particulares con ataques por symlink en directorios de escritura global como /tmp. Las vulnerabilidades “Nimbuspwn” (CVE-2022-29799 y CVE-2022-29800) descubiertas en el componente systemd networkd-dispatcher combinaron traversal de directorios con carreras de symlink para lograr escalada de privilegios root.

Los desarrolladores del kernel han implementado protecciones para directorios pegajosos (como /tmp), restringiendo el seguimiento de symlinks para que solo puedan seguirse symlinks propiedad del dueño del directorio o del propietario del objetivo del symlink. Sin embargo, estas protecciones no cubren todos los escenarios, y siguen descubriéndose aplicaciones vulnerables.

Ecosistema de Apple: Bypass de TCC mediante Symlinks

En diciembre de 2024, Jamf Threat Labs divulgó CVE-2024-44131, demostrando cómo los ataques por symlink podían eludir el marco de Transparencia, Consentimiento y Control (TCC) de Apple en iOS y macOS. La vulnerabilidad residía en el componente FileProvider, permitiendo que aplicaciones maliciosas interceptaran operaciones de archivos del usuario y las redirigieran mediante symlinks.

Cuando un usuario movía o copiaba archivos usando la app Files, una aplicación maliciosa en segundo plano podía manipular symlinks para redirigir la operación, obteniendo acceso no autorizado a datos protegidos, incluyendo información de salud, fotos e incluso acceso a la cámara o micrófono—todo sin activar prompts al usuario. Apple abordó el problema con una validación mejorada de symlinks en iOS 18 y macOS Sequoia 15.

Estrategias de Defensa y Mitigación

Proteger contra ataques por symlink requiere un enfoque en múltiples capas que combine prácticas de codificación segura, endurecimiento del sistema y monitoreo en tiempo de ejecución.

Operaciones de Archivo Seguras

Las aplicaciones que manejan operaciones de archivos, especialmente con privilegios elevados, deben implementar varias medidas defensivas. Usar la bandera O_NOFOLLOW al abrir archivos evita la resolución automática de symlinks, forzando a las aplicaciones a manejar explícitamente los symlinks. Antes de realizar operaciones sensibles, las aplicaciones deben usar funciones como lstat() para verificar si las rutas son symlinks y validar sus objetivos.

Para la extracción de archivos en archivos comprimidos, las aplicaciones deben validar que las rutas de destino permanezcan dentro de los directorios previstos después de resolver cualquier symlink. La función filepath.EvalSymlinks en Go y otras funciones similares en otros lenguajes ayudan a resolver la ruta completa antes de realizar la extracción. Las aplicaciones deben rechazar archivos comprimidos que contengan symlinks apuntando fuera del directorio de extracción o, si no se necesitan symlinks, simplemente omitir las entradas de symlink.

Mitigación de Condiciones de Carrera

Eliminar vulnerabilidades TOCTOU requiere operaciones atómicas que combinen la verificación y el uso de recursos sin una ventana explotable. Crear archivos temporales con O_CREAT|O_EXCL asegura una creación atómica que falla si el archivo ya existe, previniendo la sustitución por symlink. La función mkstemp() proporciona una creación segura de archivos temporales que evita nombres predecibles.

El bloqueo de archivos con APIs como LockFileEx en Windows ayuda a prevenir manipulaciones durante operaciones críticas, aunque no protege contra todos los escenarios de ataque. Cuando sea posible, usar descriptores de archivos en lugar de rutas para operaciones subsecuentes asegura que la aplicación siga trabajando con el recurso originalmente abierto, independientemente de cambios en la ruta.

Protecciones a Nivel del Sistema

Los sistemas operativos ofrecen varias protecciones contra symlinks que los administradores deben habilitar. La configuración fs.protected_symlinks en Linux restringe el seguimiento de symlinks en directorios pegajosos. Windows Defender Credential Guard y las listas blancas de aplicaciones pueden prevenir la ejecución de código no confiable en contextos donde los ataques por symlink serían efectivos.

Para entornos de contenedores, habilitar los espacios de nombres de usuario sin mapear al usuario root del host evita que los usuarios en el espacio de nombres accedan a archivos relevantes del host debido a permisos DAC de Unix. Los contenedores sin privilegios root reducen significativamente el daño potencial de vulnerabilidades de escape de contenedores eliminando los privilegios de root. Aplicar estándares de seguridad en pods, perfiles seccomp y políticas de AppArmor o SELinux minimizan la superficie de ataque del sistema de llamadas y del sistema de archivos disponible para cargas de trabajo en contenedores.

Monitoreo y Detección

Los equipos de seguridad deben monitorear patrones sospechosos de creación de symlinks, especialmente en directorios sensibles o desde procesos sin privilegios que apunten a ubicaciones privilegiadas. Las soluciones EDR pueden detectar operaciones rápidas de creación de symlinks, actividades inusuales de montaje y escrituras inesperadas en /proc u otras ubicaciones sensibles.

Las herramientas de seguridad en tiempo de ejecución como Falco pueden detectar intentos de escape de contenedores monitoreando la creación de symlinks que apunten a directorios sensibles del host durante la inicialización del contenedor. La correlación de estos eventos con el comportamiento de procesos ayuda a distinguir operaciones legítimas de intentos de explotación.

Conclusión

Los ataques por symlink ocupan una posición única en el panorama de seguridad—explotan funciones fundamentales del sistema operativo en lugar de errores de implementación, lo que los hace intrínsecamente difíciles de eliminar. La continua aparición de CVEs que afectan desde runtimes de contenedores hasta sistemas móviles demuestra que incluso los equipos de desarrollo más sofisticados luchan por manejar los symlinks de manera segura.

Para las organizaciones, el camino a seguir requiere reconocer los symlinks como una amenaza persistente que requiere atención continua. Esto implica implementar prácticas de codificación segura en aplicaciones personalizadas, mantener actualizados los runtimes de contenedores y componentes del sistema, habilitar las protecciones a nivel del sistema operativo disponibles y mantener visibilidad en las operaciones del sistema de archivos que podrían indicar intentos de explotación.

A medida que las arquitecturas nativas en la nube proliferan y los contenedores se convierten en el modelo de despliegue predeterminado, la superficie de ataque para exploits basados en symlink solo crece. La capa de tiempo de ejecución que proporciona el aislamiento del contenedor se convierte en un punto único de fallo donde la manipulación de symlinks puede vulnerar la frontera entre cargas de trabajo aisladas e infraestructura subyacente. Comprender estos ataques e implementar defensas integrales ya no es opcional—es esencial para mantener la integridad de los entornos informáticos modernos.

Continue from this article into the most relevant product guides and workflows.

Related Topics

#symlink attacks, symbolic link vulnerability, symlink race condition, symlink privilege escalation, file upload symlink exploit, symlink container escape, symlink race attack, symlink exploitation, symlink vulnerability 2025, symlink bypass, symlink file overwrite, linux symlink attack, symlink security, symlink exploitation tutorial, symlink mitigation, symlink detection, symbolic link abuse, symlink privilege escalation linux, file operation race condition, symlink race exploit, symlink attack example, symlink race example, symlink race prevention, symlink exploitation CVE, symlink file disclosure, symlink directory traversal, zip symlink extraction, tar symlink vulnerability, container symlink exploit, docker symlink attack, kubernetes symlink vulnerability, symlink to root, symlink privilege escalation example, symlink security misconfiguration, symlink file replacement, symlink unsafe extraction, symlink upload bypass, symlink web server exploit, symlink directory escape, symlink hard link confusion, symlink permissions flaw, symlink access control bypass, symlink temporal vulnerability, symlink race mitigation, symlink vulnerability testing, secure file extraction, symlink safe file handling, symlink monitoring, symlink race defense, symlink file operation hijacking, symlink privilege abuse, symlink write outside directory, symlink symbolic link exploit

Keep building with InstaTunnel

Read the docs for implementation details or compare plans before you ship.

Share this article

More InstaTunnel Insights

Discover more tutorials, tips, and updates to help you build better with localhost tunneling.

Browse All Articles