SSRF
Los ataques de falsificación de solicitudes del lado del servidor (SSRF) son otra forma de ciberdelito y están diseñados para apuntar específicamente a un servidor mediante el envío de solicitudes de back-end desde aplicaciones web vulnerables. Estos ataques pueden amenazar no solo a los servidores, sino también a otra información confidencial conectada, como los servicios en la nube en AWS, Azure y OpenStack. Pueden ser especialmente difíciles de combatir, ya que generalmente se usan para atacar sistemas internos protegidos por firewalls que son inaccesibles desde la red externa.
Riesgo del ataque
Robar datos sensibles como credenciales de usuarios o archivos de sistema.
Hacer peticiones a servicios internos para manejar el panel de administración, escanear puertos y servicios dentro de la infraestructura interna y conectarse al servidor de correos para enviar correos sin autorización.
Escalar privilegios dentro del sistema y ejecutar código de forma remota dentro del servidor.
Mitigaciones
Segmentación de la red para que el SSRF no afecte a toda la organización.
Deshabilitar redirecciones y sobre todo el uso de HTTP.
Usar whitelist para los dominios aceptados.
Usar expresiones regulares para establecer un patrón aceptable.
Desinfectar y validar todos los datos de entrada proporcionados por el cliente.
Restringir los protocolos habilitados.
No envíe respuestas sin procesar a los clientes.
Código vulnerable
Esta función para validar la url es insuficiente ya que no valida de forma segura la entrada del usuario, pudiendo poner este cualquier tipo de url.
Falta de validación
function validUrl (url) {
return url
} |
Solución
En este ejemplo podemos ver que la validación de la url es más segura ya que limitamos la entrada del usuario y lanzamos el comando "dnslookup" para conocer de qué forma resuelve el dominio.
Correcta validación
function validUrl (url) {
return url
&& /^(http|https):\/\//.test(url)
&& !someIpChecker.isPrivate(url)
&& !someIpChecker.isPrivate(dnsLookup(url))
} |
Revisión continua
Es recomendable que no nos conformemos con una validación al recibir los datos, sino que se sigan haciendo revisiones para evitar los cambios de direcciones DNS(o aceptar solo en los que confiemos) y redirecciones.
Referencias
https://owasp.org/Top10/A10_2021-Server-Side_Request_Forgery_%28SSRF%29/
What is SSRF (Server-side request forgery)? Tutorial & Examples | Web Security Academy