Race Condition в веб-приложениях — это не «редкий баг», а класс ошибок синхронизации, который бьёт по деньгам и безопасности.
Суть простая: сервер обрабатывает параллельные запросы без жёсткой координации, и два действия успевают прочитать одно и то же состояние до того, как оно изменится. Итог — гонка за ресурс.
На практике это может выглядеть так:
— двойное списание средств;
— повторное использование одноразового кода;
— обход лимитов на попытки/выдачу бонусов;
— захват чужого аккаунта через окно между проверкой и записью.
Уязвимость особенно часто всплывает там, где есть цепочка «проверил → потом изменил»: баланс, квоты, купоны, инвайты, reset-токены. Если операция занимает хотя бы десятки миллисекунд, окно для гонки уже есть ⚠️
Как ловят:
1) шлют 2–20 почти одновременных запросов;
2) смотрят, где состояние обновляется неатомарно;
3) проверяют, что будет при повторе на одном и том же объекте.
Для веба это must-have чек в любом аудите: ищем не просто баг, а место, где два запроса могут пересечься и сломать логику.
DevTools Radar
@DevToolsRadarPro
Race Condition в веб-приложениях — это не «редкий баг», а класс ошибок синхронизации, который бьёт по деньгам
Этот пост опубликован в Telegram-канале DevTools Radar. Подписаться можно по ссылке: @DevToolsRadarPro.