Представьте: вы построили систему обнаружения фишинга на нейросетях. Она показывает 100% accuracy на бенчмарках. Публикуете статью, получаете признание. А потом кто-то добавляет на фишинговую страницу пятисекундную задержку отрисовки логотипа — и detection rate падает до абсолютного нуля. Не до 80%, не до 30%. До нуля.
Именно это продемонстрировали исследователи в работе, принятой на IEEE European Symposium on Security and Privacy. Целевая жертва — PhishIntention, один из самых продвинутых визуальных антифишинговых pipeline.
🔍 Как работают визуальные ML-детекторы? Схема простая:
1. Headless-браузер открывает подозрительную страницу и через фиксированный интервал делает скриншот
2. Нейросеть ищет на скриншоте логотипы и формы ввода, сравнивает с базой из 277 известных брендов
3. Если нашла совпадение с брендом, а домен не тот — фишинг
Вся конструкция держится на одном допущении: скриншот корректно отражает содержимое страницы. И именно это допущение оказалось ложным.
⏱ PhishIntention делает снимок через 2 секунды после начала загрузки. Среднее время полной загрузки веб-страницы — 7.2 секунды. Разница в 5.2 секунды — это timing gap, окно, в которое атакующий может спрятать всё самое важное.
Атака выглядит так: логотип и брендинг загружаются в DOM сразу, но визуально скрыты через
clip-path с нулевой видимой областью. Через 5+ секунд setTimeout запускает плавное раскрытие. Детектор к этому моменту уже сделал снимок пустой страницы, не нашёл совпадений с брендами и пометил её как безопасную. А реальный пользователь видит полноценный клон PayPal или Google и спокойно вводит пароль.🎯 Что делает эту атаку особенно опасной:
• Не нужно знать архитектуру детектора — работает в black-box режиме
• Не нужна серверная логика — хватает пары строк CSS и JS
• Не нужны adversarial perturbations — никаких модификаций пикселей
• Пользователь ничего не замечает — страница выглядит нормально
Самое интересное: систематический обзор литературы показал, что ни одна предыдущая работа по adversarial robustness фишинг-детекторов не рассматривала timing-вектор. Все исследователи предполагали, что скриншот захватывается корректно. Никто просто не подумал, что атакующий может сыграть на секундомере.
Фикс кажется очевидным — увеличить время ожидания перед снимком. Но это создаёт новую проблему: при массовом сканировании тысяч URL каждая лишняя секунда ожидания превращается в часы простоя pipeline.
Полный разбор обеих стратегий отложенного рендеринга и возможных контрмер — в статье на форуме.
https://codeby.net/threads/obkhod-ml-detektorov-fishinga-cherez-otlozhennyi-rendering-ot-100-k-0-detektsii.93724/
