На очереди достаточно интересный вид уязвимостей —
Race Condition.⚡️Это уязвимость в логике приложения. Чаще всего она позволяет обойти или превысить ограничения, заложенные в бизнес-логике.
Рассмотрим простой пример — одноразовая скидка на заказ.😐
Логика может выглядеть так:
- Проверить, что промокод ещё не использован.
- Применить скидку к сумме заказа.
- Обновить запись в БД, отметив использование промокода.
Повторное использование должно блокироваться на первом шаге. Но если один и тот же промокод отправить дважды почти одновременно, приложение начнёт обрабатывать оба запроса. И пока один из процессов не успел выставить флаг, оба запроса могут пройти проверку и успешно применить скидку.🤑
Как искать❓
Чтобы обнаружить такую уязвимость, стоит выполнить следующие шаги:
- Найти полезный или критичный endpoint, который можно использовать один раз, либо он ограничен по количеству обращений.
- Отправить несколько запросов в очень короткий промежуток времени, пытаясь превысить лимиты.
Даже если запросы отправлены одновременно, всё равно существуют внешние факторы☠️ — сеть, задержки, балансировка, разные времена обработки — которые могут привести к расхождению и, соответственно, к успешной эксплуатации уязвимости.
• Bypassing rate limits via race conditions
• Limit overrun race conditions
↖️ 📕тг • 🤬чатик • ✏️посты
#web #writeup