loader image

Server Side Request Forgery

Una falsificación de una petición del lado del servidor, Server Side Request Forgery o SSRF por sus siglas en inglés, ocurre cuando una aplicación web consulta un recurso remoto sin validar adecuadamente la URL suministrada del lado del cliente.

Esto le permite a un atacante realizar una consulta de manera que el servidor vulnerable realice una petición HTTP a un dominio arbitrario. Al día de hoy, las aplicaciones web necesitan consultar otros sistemas o servicios frecuentemente, por lo que se espera que esta vulnerabilidad se vuelva más popular con el tiempo.

Server Side Request Forgery - Diagrama

Impacto y alcance de un Server Side Request Forgery

Una vulnerabilidad Server Side Request Forgery puede desencadenar las siguientes acciones:

  • Evasión de los controles del firewall de uno o más dispositivos, dado que la consulta se realiza desde un equipo de la misma red del sistema o de un sistema externo de confianza.
  • Exposición de información sensible dentro de una organización.
  • Enumeración y posterior ataque a la red corporativa privada a la cual pertenece el servidor vulnerable.
  • Denegación de servicio.

La exposición de información sensible toma especial relevancia cuando se trata de servidores que se encuentran en la nube. Dependiendo del proveedor de servicio, podría ser posible obtener metadatos e inclusive hasta credenciales de acceso para realizar cambios dentro de la infraestructura. Para llevar a cabo este tipo de ataques, un cibercriminal tan solo necesita una lista de rutas por defecto de las soluciones cloud más utilizadas.

SSRF a ciegas

Al igual que en las inyecciones SQL, se puede explotar un SSRF incluso cuando la respuesta del back-end no es visible a través de la aplicación vulnerable. Sin embargo, a diferencia de una Inyección SQL a ciegas, en este tipo de vulnerabilidades, lo que se hace es utilizar un payload que haga que la aplicación potencialmente vulnerable, interactúe con un servidor controlado por el atacante. De esta manera, en caso de que el servidor del atacante reciba una conexión exitosa proveniente de la máquina que se está intentando explotar, el atacante puede concluir que el sistema es vulnerable. Este método de validación no se aplica únicamente para la vulnerabilidad SSRF a ciegas sino que también sirve para comprobar inyecciones de comandos, inyecciones SQL a RCE e incluso para vulnerabilidades XSS a RCE.

Algunas recomendaciones

La existencia de la vulnerabilidad SSRF no involucra únicamente a los desarrolladores, sino que también a los ingenieros de red o arquitectos de sistemas. La infraestructura de la red corporativa debe ser diseñada de tal manera que el impacto sea el mínimo posible.

Es por ello que se recomienda aplicar las siguientes contramedidas generales:

  • Sanitizar y validar las entradas de datos que puedan ser manipuladas por usuarios
  • Deshabilitar las redirecciones HTTP cuando no sean absolutamente necesarias
  • Utilizar listas blancas para las redirecciones HTTP, evitando el uso de listas negras
  • Configurar los firewalls para bloquear tráfico no esencial
  • Segmentar adecuadamente la red

Conclusión de Server Side Request Forgery

Debido al incremento de la complejidad de los sistemas, la vulnerabilidad SSRF se convierte cada vez más en una vulnerabilidad muy común. Como si esto no bastara, la popularidad que tiene la implementación de infraestructuras en la nube, podría aumentar los riesgos asociados que esta vulnerabilidad pudiese conllevar.

El proceso de mitigación y disminución del impacto de esta vulnerabilidad, no involucra únicamente a los desarrolladores, sino que también a ingenieros de red o arquitectos de sistemas, por lo que es una vulnerabilidad que puede poner a prueba, las diferentes capas de seguridad existentes en una empresa.