Логические баги — это когда код работает ровно как написан, но воркфлоу приложения можно вывернуть против логики, которую в него закладывали.
Прогоняй находку через три метрики. Если не задета ни одна — это всего лишь функциональный баг:
♦️ Конфиденциальность: видишь чужие данные?
♦️ Целостность: меняешь защищённые данные?
♦️ Доступность: можешь положить компонент/приложение?
Главный критерий: всегда думай, каким именно образом реальный атакующий может проэксплуатировать выявленное поведение.
Разберем на примерах ⤵️
🔴 Broken Access Control. Например, приложение читает
order_initiation_id из тела запроса, но никто не проверил, что ID принадлежит тебе. Подменяешь → чужие конфиденциальные данные.🔴 Инъекция через непоследовательную валидацию. Основное приложение режет XSS/SSTI/SQLi в email. Но отдельный портал email-настроек валидацию не делает и синхронизирует ввод обратно в кор. Валидация есть в одном месте и отсутствует в другом — ищи такие стыки.
🔴 Манипуляция ценой. Код расчёта цены не учитывает пользовательский код валюты и шлёт его в платёжный шлюз без проверки. Меняешь
USD → JPY и платишь копейки.🔴 Криптографический флоу. JWT с алгоритмом
none: разраб не обработал неподписанный токен на аутентифицированном эндпоинте → полный обход аутентификации.
