Limit overrun race conditions
El tipo más conocido de condición de carrera le permite superar algún tipo de límite impuesto por la lógica empresarial de la aplicación.
![[20251019233741.png]](/assets/20251019233741.B15dEMLf.png)
Por ejemplo, considere una tienda en línea que le permite introducir un código promocional durante el proceso de pago para obtener un descuento único en su pedido. Para aplicar este descuento, la aplicación puede realizar los siguientes pasos de alto nivel:
- Comprobar que aún no ha utilizado este código.
- Aplicar el descuento al total del pedido.
- Actualizar el registro en la base de datos para reflejar el hecho de que ahora ha utilizado este código. Si más adelante intenta reutilizar este código, las comprobaciones iniciales realizadas al comienzo del proceso deberían impedirle hacerlo:
![[20251019233718.png]](/assets/20251019233718.DhcqOcYK.png)
Ahora considere qué sucedería si un usuario que nunca ha aplicado este código de descuento antes intentara aplicarlo dos veces casi exactamente al mismo tiempo:
![[20251019233956.png]](/assets/20251019233956.C8Py89vC.png)
Existen muchas variantes de este tipo de ataque, entre ellas:
- Canjear una tarjeta de regalo varias veces
- Calificar un producto varias veces
- Retirar o transferir efectivo en exceso del saldo de su cuenta
- Reutilización de una única solución CAPTCHA
- Evitar un límite de velocidad anti-fuerza bruta
LAB
![[20251019231801.png]](/assets/20251019231801.DKQUu2p1.png)
En el sitio web tenemos un cupon de descuento.
![[20251019232005.png]](/assets/20251019232005.IUvGRdRM.png)
En el que podemos aplicar para poder comprar algunos artículos, pero observamos que solo tenemos $50 de saldo.
![[20251019232155.png]](/assets/20251019232155.CXcFewXB.png)
Al aplicar un descuento o cupón vemos que nos hace una reducción del total
![[20251019232432.png]](/assets/20251019232432.dS2JDITG.png)
Lo que se puede realizar es un envio masivo de la solicitar al agregar el cupón, de manera paralela.
![[20251019232545.png]](/assets/20251019232545.3ug9TRr_.png)
Para ello podemos crear un grupo
![[20251019232616.png]](/assets/20251019232616.BMJDthpl.png)
Y duplicar la solicitud que agrega el cupón
![[20251019232708.png]](/assets/20251019232708.BxkhhC1V.png)
![[20251019232729.png]](/assets/20251019232729.dtniZ-_A.png)
Al duplicar un total de 30 solicitudes, elegimos la opción de send group parallel.
![[20251019232828.png]](/assets/20251019232828.BLx6qiKe.png)
![[20251019232849.png]](/assets/20251019232849.C4ElbLPp.png)
Al volver al panel de compra vemos que podemos comprar el articulo.
![[20251019232403.png]](/assets/20251019232403.Basioepo.png)