Казалось бы, безобидное стилевое оформление оказалось в состоянии совершить намного более серьезные действия.
На протяжении многих лет веб-почтовые сервисы борются с проблемой безопасного отображения HTML-кода из входящих писем. Однако граница между содержимым письма и интерфейсом самого почтового сервиса оказалась менее защищённой, чем предполагали инженеры. Исследователь компании PortSwigger Гарет Хейс провел серию демонстрационных атак, в ходе которых доказал, что разрешённые HTML и CSS элементы можно применить для перехвата действий пользователя, хищения авторизационных токенов и получения доступа к паролям в крупных почтовых системах.
Корень проблемы заключается в том, что механизм фильтрации писем и веб-браузер интерпретируют CSS-правила по-разному. Стилевой код, который система защиты почты определяет как безопасный, после обработки в браузере может превратиться в совершенно иной набор директив и выйти за границы письма. В сервисе Fastmail исследователь добился такого преобразования CSS через CSSOM, а для Outlook применил методику, основанную на особенностях обработки медиа-запросов и комментариев в коде.
Наиболее критичная демонстрация затронула Outlook. Вредоносное письмо имело возможность перекрыть весь видимый экран и заменить стандартный интерфейс поддельной страницей авторизации. Затем, используя CSS, злоумышленник преобразовывал выпадающее меню в поле для ввода пароля и регистрировал все нажатия клавиш. В браузере Firefox дополнительный приём с позиционированием элементов позволял устранить задержку при вводе текста и превратить схему в активный кейлоггер, работающий в режиме реального времени.
Другие проведённые тесты установили, что CSS способен оказывать влияние и на взаимодействие пользователя непосредственно с интерфейсом почтового сервиса. В Fastmail метод CSS Hotwiring скрывал часть страницы невидимым слоем и перенаправлял обычный клик пользователя на совершенно другое действие. Две найденные уязвимости связанные с «мутацией» CSS в Fastmail компания устранила, выделив по тысяче долларов США за каждую обнаруженную проблему.
Отдельный сценарий тестирования совместил содержимое письма с ИИ-браузером Atlas. Исследователь внедрил в сообщение скрытые инструкции, недоступные взгляду человека, однако читаемые нейронной сетью. При выполнении команды на перевод текста Atlas в рамках теста начинал открывать браузерные вкладки и отправлял информацию со страницы на удалённый компьютер. Этот сценарий представлял собой лабораторный тест косвенной инъекции команд, а не описание реальной атаки.
Специалисты PortSwigger советуют размещать содержимое писем в изолированном iframe с ограничениями, запрещать использование опасных CSS-селекторов и элементов выбора, блокировать запросы на загрузку внешних изображений и data: URL, а также проводить проверку интерфейса на наличие CSS-гаджетов. В исследовании также отмечено, что обход защиты от отслеживания в Gmail и управление компонентами Outlook посредством HTML label оставались активны на момент публикации результатов.
