Ventana de tiempo entre verificación y acción permite que peticiones concurrentes dupliquen cupones y realicen transferencias con saldo insuficiente
Muestra los saldos actuales de los usuarios y qué cupones han sido canjeados
/api/lab/race-condition?action=statusRestaura saldos (user1=100, user2=50) y marca todos los cupones como no usados
/api/lab/race-condition?action=resetHay 50ms entre la verificación de used=false y el SET. Enviar 5 peticiones en paralelo aplica el cupón múltiples veces
/api/lab/race-condition?action=redeem&coupon=SAVE50&user=user1Mismo patrón TOCTOU con el cupón FREE10 — raza de 50ms explotable
/api/lab/race-condition?action=redeem&coupon=FREE10&user=user1100€ de descuento por uso. Raza concurrente multiplica el crédito obtenido
/api/lab/race-condition?action=redeem&coupon=VIP100&user=user1Con ?safe=true el SET es atómico (UPDATE WHERE used=false). Solo el primer ganador aplica el cupón
/api/lab/race-condition?action=redeem&coupon=SAVE50&user=user1&safe=true10 peticiones paralelas leen balance=100 antes de que alguna lo actualice → 10×10€ deducidos de un saldo de 100
/api/lab/race-condition?action=transfer&user=user1&to=user2&amount=10Con ?safe=true la deducción es atómica — las peticiones concurrentes fallan si el saldo es insuficiente
/api/lab/race-condition?action=transfer&user=user1&to=user2&amount=10&safe=trueEjecutar: for i in $(seq 1 10); do curl -s '?action=redeem&coupon=VIP100' & done; wait
/api/lab/race-condition?action=statusRace Condition o TOCTOU (Time-Of-Check-Time-Of-Use): hay una ventana de tiempo entre verificar la condición (cupón no usado, saldo suficiente) y ejecutar la acción (marcar como usado, deducir). Si múltiples peticiones concurrentes pasan la verificación antes de que alguna actualice el estado, todas ejecutan la acción. Impacto en e-commerce: doble gasto de cupones, transferencias que llevan el saldo a negativo, voto múltiple, reservas duplicadas. Solución: operaciones atómicas en base de datos (UPDATE WHERE condition) o locks optimistas. OWASP A04:2021 — CVSS 8.1.
Esta aplicación es vulnerable por diseño - Solo para propósitos educativos
© 2025 Aitana Security Lab