¿Qué es el SSRF?
Los ataques de falsificación de solicitudes del lado del servidor, o SSRF, aprovechan vulnerabilidades en aplicaciones web para acceder a recursos internos. Descubre cómo proteger tus aplicaciones y API.
La SSRF es un tipo de vulnerabilidad de seguridad que se produce cuando un atacante manipula una aplicación web o API para que realice solicitudes a recursos internos, lo que puede dar lugar a accesos no autorizados, exposición de datos, vulneración de sistemas y ejecución remota de código. Los atacantes eluden la validación de entradas y obligan a las aplicaciones a acceder a destinos web maliciosos, aunque estén protegidas por un cortafuegos o una solución de red privada virtual (VPN).
¿Qué es un ataque SSRF y cómo funciona?
En un ataque SSRF, el atacante suele manipular los datos de entrada utilizados para especificar la URL de destino de una solicitud HTTP del lado del servidor. Esto puede ocurrir cuando una aplicación no valida ni depura la URL introducida por un usuario antes de obtener datos de un recurso remoto. El atacante puede hacer que el servidor objetivo envíe solicitudes a destinos arbitrarios, lo que podría dar lugar a diversos riesgos de seguridad.
Estos ataques también pueden producirse si el recurso objetivo mantiene relaciones de confianza con otros sistemas, como un servicio de metadatos en la nube o API de backend, lo que permite a un atacante realizar solicitudes a esos servicios de confianza y extraer información confidencial o llevar a cabo acciones no autorizadas.
A medida que las aplicaciones web modernas ofrecen funcionalidades prácticas a los usuarios finales, la obtención de una URL se ha convertido en una situación habitual. Como consecuencia, la incidencia de SSRF está aumentando. Además, la gravedad de las vulnerabilidades SSRF aumenta a medida que las API y los servicios en la nube se generalizan y las arquitecturas informáticas se vuelven más descentralizadas y complejas.
SSRF es uno de los 10 principales riesgos de seguridad en aplicaciones de OWASP, una recopilación ampliamente reconocida de los riesgos de seguridad más críticos para las aplicaciones web. SSRF también es uno de los diez principales riesgos de seguridad de OWASP que son comunes tanto a las aplicaciones como a las API, y requiere una consideración especial al implementar soluciones de seguridad.
Así funciona un ataque SSRF:
- La aplicación permite que los datos introducidos por el usuario determinen la URL o el recurso de destino de una solicitud del lado del servidor. Estos datos pueden proceder de parámetros de una URL, de campos de formulario rellenados por el usuario o de otras fuentes de datos.
- El atacante envía una solicitud especialmente diseñada y manipula los datos de entrada para que apunten a un recurso al que desea acceder o que pretende explotar. Este recurso podría ser un servidor interno, un servicio de backend, una API u otros sistemas internos protegidos por cortafuegos y no accesibles desde la red externa.
- El servidor procesa la entrada maliciosa del usuario y crea una solicitud a la URL especificada. Esta solicitud se realiza desde el servidor, no desde el navegador del usuario, por lo que se trata de una solicitud del lado del servidor.
- Si el servidor objetivo se encuentra dentro de una red interna, el atacante puede intentar acceder a información confidencial de los recursos internos y obtenerla para, posteriormente, exfiltrar esos datos a una ubicación externa bajo su control. La SSRF también puede utilizarse para escanear puertos de sistemas internos, lo que ayuda al atacante a identificar posibles puntos débiles y vulnerabilidades.
- Los ataques SSRF son especialmente preocupantes en entornos de nube, donde las instancias podrían tener acceso a servicios de metadatos confidenciales.
- El impacto de un ataque SSRF puede ser grave y abarcar desde el acceso no autorizado a datos y servicios confidenciales hasta la explotación de sistemas internos e incluso la vulneración de entornos de nube completos.
Ejemplo de un ataque SSRF
Así es como puede desarrollarse un ataque SSRF en la vida real.
Imagina una aplicación web no segura que permite a los usuarios subir imágenes para procesarlas y que incluye una función para proporcionar la URL de la imagen que desean procesar. Sin embargo, en lugar de proporcionar la URL de una imagen legítima, el atacante envía una entrada cuidadosamente diseñada que contiene una URL maliciosa dirigida a un recurso interno del servidor de la aplicación, como un archivo interno o una base de datos del backend. El servidor de la aplicación procesa la URL maliciosa sin comprobarla y, siguiendo las indicaciones del atacante, realiza una solicitud al recurso interno especificado por la URL para obtener datos confidenciales o consultar una base de datos y devolver los datos al atacante.
Una vez comprometido el servidor, el atacante también puede realizar solicitudes a sistemas externos, buscar vulnerabilidades o interactuar con servicios a los que el servidor tenga acceso. El impacto de un ataque SSRF puede variar en función de la arquitectura del sistema y de los permisos del servidor comprometido. Estos ataques pueden provocar el acceso no autorizado a datos, la interrupción de servicios o la vulneración de sistemas internos.
Tres tipos básicos de ataques SSRF
Los ataques SSRF pueden clasificarse en distintos tipos según cómo interactúe el atacante con el servidor y extraiga información.
Ataque SSRF estándar
En un ataque SSRF estándar, el atacante introduce una URL maliciosa como parte de los datos proporcionados por el usuario, lo que provoca que el servidor envíe una solicitud al recurso especificado. El atacante puede observar directamente la respuesta del servidor y recopilar información sobre la red interna, por ejemplo, cómo obtener datos o identificar servicios accesibles.
Ataque SSRF ciego
En los ataques SSRF ciegos, el atacante no recibe directamente la respuesta del servidor. En su lugar, confirma indirectamente si el ataque SSRF ha tenido éxito o ha fracasado observando los cambios en el comportamiento de la aplicación.
El atacante envía una entrada manipulada que obliga al servidor a realizar una solicitud a un recurso externo o interno. A continuación, busca cambios observables en la actividad de la aplicación, como diferencias en los mensajes de error, los tiempos de respuesta u otros efectos secundarios. Esta información le permite deducir si el ataque SSRF ha tenido éxito, aunque no pueda ver directamente la respuesta.
Ataque SSRF ciego basado en el tiempo
Los ataques SSRF ciegos basados en el tiempo aprovechan los retrasos en las respuestas del servidor para deducir si el ataque SSRF ha tenido éxito o ha fallado sin ver directamente la respuesta.
Al igual que en otros ataques SSRF, el atacante introduce datos maliciosos que hacen que el servidor envíe una solicitud a un recurso externo o interno. El atacante observa cuánto tarda la aplicación en responder. Los retrasos en el tiempo de respuesta pueden indicar que el ataque SSRF ha tenido éxito. El atacante ajusta la carga útil de forma iterativa y supervisa los retrasos para extraer información sobre la red interna o sus recursos.
Cómo protegerse contra los ataques SSRF
Para protegerse contra los ataques SSRF, implemente una combinación de medidas de ciberseguridad preventiva, entre las que se incluyen:
- Validación de entradas. Valide y depure rigurosamente los datos introducidos por los usuarios, especialmente cuando la aplicación realice solicitudes a recursos externos. Implemente una lista de URL permitidas que incluya únicamente dominios de confianza o URL específicas a las que la aplicación necesite acceder. Asegúrese de que solo se permitan los protocolos previstos, como http y https, y evite permitir protocolos potencialmente peligrosos, como file:// o ftp://, que suelen aprovecharse en ataques SSRF. Asimismo, compruebe que las URL proporcionadas por los usuarios se ajusten a los patrones o formatos esperados para reducir la probabilidad de que se introduzcan URL maliciosas.
- Listas de permitidos para hosts y direcciones IP. Mantenga una lista de hosts y direcciones IP permitidos con los que la aplicación pueda interactuar. Esto puede ayudar a restringir las solicitudes a destinos previstos y de confianza, reduciendo la superficie de ataque de SSRF.
- Restrinja el acceso a los recursos internos. Implemente la segmentación de red para limitar la exposición de los recursos internos. Asegúrese de que los servidores expuestos al exterior tengan un acceso mínimo a los sistemas y servicios internos. Configure firewalls de aplicaciones web (WAF) y controles de acceso para restringir las conexiones salientes del servidor de aplicaciones. Permita únicamente las conexiones necesarias y predefinidas, y bloquee el tráfico saliente innecesario. Implemente un proxy inverso que actúe como intermediario entre la aplicación y los recursos externos. Configure el proxy para controlar a qué recursos externos puede acceder la aplicación, añadiendo así una capa de control adicional.
¿Cómo ayudan estas medidas preventivas a evitar los ataques SSRF? Veamos un caso hipotético.
Un sistema de gestión de contenidos en línea permite a los usuarios introducir URL para insertar imágenes externas en sus publicaciones. Este sistema procesa las URL proporcionadas por los usuarios sin validar correctamente los datos de entrada. Un atacante, consciente de esta falta de validación, intenta aprovecharse del sistema proporcionando una URL maliciosa que apunta a un recurso interno, como un endpoint de una API interna o un servidor de bases de datos. Sin embargo, el equipo de seguridad de la aplicación mejora la validación de los datos de entrada del sistema para aplicar reglas estrictas a las URL aceptadas. El sistema comienza a comprobar que las URL proporcionadas por los usuarios se ajusten a los patrones esperados, y el equipo implementa una lista de dominios permitidos para los recursos externos.
El atacante envía la publicación con una URL manipulada para aprovechar la vulnerabilidad SSRF, pero la validación de entrada ahora detecta la URL maliciosa. La validación de entrada rechaza la URL maliciosa durante el procesamiento, lo que impide que la aplicación realice una solicitud al recurso interno especificado por el atacante. La validación de entrada mejorada frustra el ataque SSRF: el sistema no permite solicitudes no autorizadas a recursos internos, por lo que se preservan la integridad y la seguridad de los sistemas internos.
Al implementar la validación de entradas, la aplicación puede rechazar o sanear las entradas maliciosas, lo que impide las solicitudes no autorizadas y reduce el riesgo de ataques SSRF.
Cómo puede ayudar F5
Los ataques SSRF son peligrosos porque permiten a los atacantes eludir medidas tradicionales de seguridad de red, como los cortafuegos y los controles de acceso, para acceder a información confidencial y recursos que suelen estar protegidos dentro de la red interna de una organización y que no están destinados a ser accesibles directamente desde Internet. Dado que los ataques SSRF plantean riesgos importantes para la confidencialidad, la integridad y la disponibilidad tanto de los datos como de los sistemas, las organizaciones deben implementar medidas de seguridad sólidas y buenas prácticas, como WAF, una validación adecuada de las entradas, controles de acceso y segmentación de la red, para mitigar la amenaza de las vulnerabilidades SSRF y protegerse frente a posibles intentos de explotación.
Las soluciones WAF de F5 bloquean y mitigan un amplio espectro de riesgos derivados del Top 10 de OWASP, incluido el SSRF. Las soluciones WAF de F5 combinan protecciones basadas en firmas y en el comportamiento, incluida la inteligencia sobre amenazas de F5 Labs y la seguridad automatizada mediante aprendizaje automático (ML), para seguir el ritmo de las amenazas emergentes. Reducen la carga y la complejidad que supone proteger de forma coherente las aplicaciones en entornos de nube, locales y perimetrales, y ofrecen varias opciones de implementación. BIG-IP Advanced WAF es una solución robusta que puede proteger sus aplicaciones frente a ataques SSRF y proporcionar una medida provisional esencial ante vulnerabilidades de software, mientras que F5 Distributed Cloud WAF protege las aplicaciones en cualquier entorno y simplifica drásticamente las operaciones mediante una plataforma de seguridad como servicio fácil de usar.
Las soluciones de protección de aplicaciones web y API (WAAP) de F5 protegen toda la superficie de ataque de las aplicaciones modernas mediante una protección integral que incluye WAF, seguridad de las API, mitigación de ataques DDoS de las capas 3 a 7 y defensa contra bots, automatizaciones maliciosas y amenazas automatizadas. La plataforma distribuida facilita la implementación de políticas coherentes y permite ampliar la seguridad en todo su entorno de aplicaciones y API, independientemente de dónde estén alojadas, así como integrar la seguridad en el ciclo de vida de las API y en ecosistemas más amplios.

