Думаете, Timing Attack — это миф?
Нет, это реальная уязвимость, позволяющая узнать ваши секреты, просто глядя на часы!
Как это работает?
Обычное сравнение строк if (key == secret) работает «лениво»: как только программа видит неверный символ, она мгновенно обрывает проверку. Значит, если первая буква верна, сервер ответит на микросекунды (или миллисекунды) позже.
Эксперимент:
Я поднял два Docker-контейнера в Локальной сети через 2 Коммутатора! Это важно, так как они создают помехи. Атакующий скрипт замеряет время отклика API: если оно чуть выросло — символ угадан.
Результат на скриншоте: за пару часов посимвольно «вычислен» пароль PASS123. Математика усреднения запросов позволяет победить даже сетевой шум.
Как защититься?
Для паролей и токенов никогда не используйте ==. Используйте функции «постоянного времени», например secrets.compare_digest(). Они сравнивают строку до самого конца, не выдавая секретов задержками.
Для хакера время — это информация. Не давайте ему повода завести секундомер!
Post #200
213

- ❤🔥 4