¿Alguna vez te has preguntado qué pasaría si dejas abiertas las llaves de agua de tu casa todo el día? Seguro que terminarías con un consumo excesivo de agua y una factura que te haría llorar. En el mundo digital, ocurre una situación parecida con el Uncontrolled Resource Consumption. Imagina que tus sistemas están dejando escapar recursos valiosos al usar servicios externos, como las API de Google Maps o de ChatGPT. Cada uso cuenta y puede hacer que tus gastos operativos se disparen y, lo peor de todo, que la disponibilidad de tus servicios digitales se vea comprometida sin que siquiera te des cuenta.
A continuación, te explicamos de qué se trata el Uncontrolled Resource Consumption, los riesgos que tiene, te mostramos un ejemplo y te damos algunas estrategias para que puedas prevenir este problema.
¿Cómo funciona el Uncontrolled Resource Consumption ?
Este problema se presenta cuando el código no controla bien ciertas acciones, resultando en un uso excesivo de recursos. Esto puede pasar por varios motivos, como:
- La aplicación expone tokens en el código fuente para el consumo de aplicaciones de un tercero (APIs).
- La aplicación no controla la cantidad de emails que son enviados para el restablecimiento de contraseña o cualquier otro uso del envío de mensajes a través correos.
Riesgos asociados
La explotación de esta vulnerabilidad puede conllevar un agotamiento incontrolado del uso y gasto de recursos de la entidad. En algunos casos puede generar interrupciones de servicio, degradación del rendimiento y potencialmente permitiendo ataques de denegación de servicio.
¿Cómo podría un atacante aprovechar esto?
Una de las formas de explotar esta vulnerabilidad es mediante el envío masivo de correos electrónicos, aprovechando la falta de control sobre la cantidad de mensajes enviados por segundo o minuto.
Ejemplo de Uncontrolled Resource Consumption
En la siguiente solicitud podemos observar dos parámetros (mensaje e mail), el primer parámetro es para el cuerpo del correo y el segundo, la dirección a donde se quiere enviar el correo:
POST /enviar_correo_cumple HTTP/2
Host: country.web-vulnerable.com
Content-Length: 56
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,applicat
ion/signed-exchange;v=b3;q=0.7
Referer: https://country.web-vulnerable.com/node/1234
Accept-Encoding: gzip, deflate, br
Accept-Language: es-419,es;q=0.9
mensaje=MENSAJE_MALIGNO&mail=[EMAIL]
En la siguiente respuesta podemos observar que se obtiene el contenido “status”: “failed”. Sin embargo, la solicitud fue procesada con éxito:
HTTP/2 302 Found
Content-Type: text/html; charset=UTF-8
Location: https://country.web-vulnerable.com/inicio/
Referrer-Policy: same-origin
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
Cache-Control: no-cache, must-revalidate
Cache-Control: no-cache
Access-Control-Allow-Origin: *
domain=.country.web-vulnerable.com; secure; HttpOnly
X-Xss-Protection: 1; mode=block
X-Frame-Options: ALLOW-FROM SAMEORIGIN, https://login.microsoftonline.com/, https://mail.google.com/
Content-Security-Policy: [CSP]
Cf-Cache-Status: DYNAMIC
Nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
Alt-Svc: h3=":443"; ma=86400
{"status":"failed"}
Aunque la anterior solicitud haya respondido con un “mensaje fallido”, la solicitud original envió un correo con un mensaje al destino, además se pudo automatizar para enviar múltiples correos electrónicos con el fin de causar un consumo monetario en el servicio que se estaba empleando para el envío de emails.
¿Cómo prevenir esta vulnerabilidad?
- Limitación de Recursos: Establece límites y controles sobre los recursos que pueden ser consumidos por un solo usuario o sesión para prevenir un agotamiento incontrolado.
- Desafíos lógicos: Se deben establecer desafíos lógicos como reCAPTCHA para evitar el envío masivo de correos.
Conclusión
El Uncontrolled Resource Consumption es un riesgo serio para cualquier aplicación digital, por lo que es importante tomar medidas para prevenirlo. En Hackmetrix, somos expertos en identificar y mitigar riesgos como este, asegurando que tu plataforma digital opere de manera eficiente y segura. Nuestros servicios de Hacking Ético incluyen pruebas específicas para detectar vulnerabilidades que puedan desencadenar un consumo excesivo de recursos. Además, te brindamos estrategias efectivas y adaptadas para prevenir ataques y optimizar el uso de APIs y otros servicios digitales. No dejes que la seguridad y la economía de tu plataforma se vean comprometidas ¡Contáctanos!