hackweb
appunti di hacking e tecnologia
IT EN
menù principale
menù utente
non sei loggato

Race condition e TOCTOU: la finestra tra controllo e uso

22 ottobre 2024 · 1 min di lettura · #web #race-condition #logic

Una race condition nasce quando due operazioni concorrenti agiscono sullo stesso stato e il risultato dipende dall'ordine. Time-Of-Check to Time-Of-Use: verifichi una condizione, ma tra il controllo e l'uso qualcosa cambia.

L'attacco

Invia molte richieste in parallelo nell'istante giusto (single-packet attack per allineare l'arrivo). Esempi: riscattare un coupon N volte perché tutte le richieste vedono "non ancora usato"; prelevare più del saldo perché i controlli leggono lo stesso valore prima dell'aggiornamento.

# 20 richieste simultanee a /redeem?code=X
# tutte passano il check "code valido e non usato" prima del decremento

Difesa

Rendi atomica la sequenza check-then-act: transazioni con lock (SELECT ... FOR UPDATE), operazioni atomiche del DB (decremento condizionale UPDATE ... WHERE balance >= n), vincoli di unicità, o lock distribuiti. Idempotenza sulle operazioni sensibili.


« torna alla home

ultimi post
 
il tuo indirizzo IP:
216.73.216.108
visitatore #0
MOTD:
Ogni astrazione perde da qualche parte.
Qui guardiamo dove.
argomenti