cd ~/blog

~/vulns/dos-denial-of-service.md

Denial of Service (DoS)

dosautor: Jordy Pérez Osorio aviso legal
DoSavailability

~3 min de lectura


1. Descripción técnica

Denial of Service (DoS) describe una pérdida deliberada de disponibilidad causada desde una fuente o contexto de ataque. El mecanismo concreto puede consistir en saturar ancho de banda, mantener recursos limitados ocupados, forzar cálculos costosos o activar un fallo que detenga el proceso.

DoS no implica necesariamente un gran volumen de tráfico. Una solicitud especialmente costosa, una expansión de datos desproporcionada o un conjunto pequeño de conexiones mantenidas durante mucho tiempo también pueden superar un límite del sistema.

Se diferencia de Distributed Denial of Service por la distribución de las fuentes. El recurso agotado puede ser el mismo en ambos casos.

2. Impacto

El efecto observable puede ser aumento de latencia, errores, reinicio de procesos o indisponibilidad completa. La degradación también puede alcanzar servicios que comparten CPU, memoria, conexiones, almacenamiento o dependencias con el componente atacado.

La lentitud no demuestra por sí sola un ataque. Fallos de capacidad, errores de configuración y picos legítimos pueden producir síntomas equivalentes.

3. Condiciones necesarias

  1. Una entrada o interacción controlada obliga al sistema a reservar o consumir un recurso.
  2. El recurso es finito y no existe un límite eficaz por petición, sesión, identidad o origen.
  3. La carga acumulada supera la capacidad de recuperación durante la ventana del ataque.
  4. Los controles anteriores al componente vulnerable no rechazan o absorben la operación.

La relación entre coste para el atacante y coste para el servidor determina la eficiencia. Los ataques asimétricos requieren poco tráfico para provocar un trabajo o una asignación considerable en el objetivo.

4. Validación y detección

La validación debe identificar el recurso que se agota, no limitarse a observar que el servicio deja de responder. En un entorno autorizado se incrementa la carga de forma gradual, con umbrales de detención y métricas del servidor.

Conviene correlacionar:

  • latencia, errores y reinicios;
  • CPU, memoria, file descriptors, workers, conexiones y colas;
  • endpoint, operación o tipo de paquete asociado al aumento;
  • cantidad de solicitudes frente al coste de cada una;
  • recuperación del servicio al retirar la carga.

Una sola respuesta lenta no confirma DoS. Debe existir una relación reproducible entre la entrada y el agotamiento observado.

5. Explotación documentada en los writeups

5.1. 129-umz

El parámetro stress ordena calcular números primos hasta un límite controlado. La carga concurrente consume recursos del servicio web y provoca una interrupción temporal. En ese escenario concreto, la degradación coincide con la exposición de otro puerto; este comportamiento no se generaliza a Apache ni forma parte inherente de DoS.

6. Mitigación

  • Establecer límites de coste, tamaño, tiempo y concurrencia por operación.
  • Aplicar cuotas y rate limiting con criterios que no permitan bloquear fácilmente a usuarios legítimos.
  • Cancelar trabajo cuando el cliente se desconecta o se supera un presupuesto.
  • Aislar procesos y dependencias mediante límites de CPU, memoria y conexiones.
  • Usar colas, caché y circuit breakers para impedir propagación del agotamiento.
  • Monitorizar capacidad y conservar margen para absorber picos legítimos.

7. Clasificación

CampoValor
Propiedad afectadaDisponibilidad
OrigenUna fuente o contexto de ataque
Recursos habitualesCPU, memoria, conexiones, workers, almacenamiento o red
Familia CWECWE-400, Uncontrolled Resource Consumption

8. Referencias y conexiones

// relacionados