CSS-взлом веб-почты

Исследователь PortSwigger Гарет Хейес представил на Black Hat USA 2026 набор атак, при которых содержимое письма выходит за отведённые ему границы и вмешивается в доверенный интерфейс веб-почты. В опытных цепочках фигурируют Microsoft Outlook, Gmail, Fastmail, Proton Mail, Yahoo Mail и AOL Mail. Последствия зависят от конкретного приёма: перехват паролей и токенов аутентификации, захват сторонних учётных записей, подмена действий в интерфейсе, перенаправление щелчков, отслеживание открытия письма, раскрытие IP-адреса и передача вредоносных инструкций ИИ-инструментам. Работа опубликована 6 августа 2026 года; это доказательства концепции, а не сведения о реальных атаках. Публичный репозиторий с PoC оставался доступен 8 августа.
CSS-взлом веб-почты
Изображение носит иллюстративный характер

Самая наглядная цепочка связывает Outlook и Firefox. Outlook разрешал некоторые элементы label внутри писем, причём метка могла активировать элемент управления уже за пределами сообщения. Затем JavaScript самого приложения превращал очищенные пользовательские атрибуты в новые DOM-узлы. Эти узлы получали CSS, которого не было в исходном списке разрешённых конструкций санитарного фильтра. Трюк с разбором медиазапроса давал произвольные стили, после чего интерфейс Outlook можно было оформить под окно входа Microsoft.
Пароль в такой форме принимал не обычный input, а замаскированный элемент select. Firefox примерно секунду ждёт выбора варианта в этом элементе; перенос select за пределы экрана сбрасывает таймер. Повторяя переносы, атакующий считывает ввод пользователя практически в реальном времени. На 6 августа в Outlook по-прежнему работал приём label-jacking, то есть захват действий через метки. При этом в публикации не уточняется, была ли устранена вся цепочка перехвата пароля, а не только отдельные её части.
В Yahoo Mail и AOL Mail Хейес использовал специфическую для Firefox гонку при вставке содержимого из буфера обмена. Вставленный HTML на короткое время сохраняет активный CSS, пока почтовый сервис ещё не успел его очистить. Атакующий запускает для чужой учётной записи процедуру входа в Medium по электронной почте, после чего Medium отправляет письмо с 12-символьным токеном. Жертву убеждают скопировать подготовленный CSS и вставить его в черновик Yahoo Mail либо AOL Mail. За долю времени до обезвреживания стили успевают выполнить раскрывающие запросы; сервер атакующего собирает части токена, восстанавливает его и входит в Medium от имени получателя.
Отдельный метод рассчитан на страницы с Content Security Policy, где CSP блокирует автоматическую загрузку внешних ресурсов. Для него нужны внедрённые стили, числовой токен, показанный в письме как текст, и хотя бы один щелчок пользователя. CSS определяет, какие цифры присутствуют в токене и сколько раз встречается каждая из них. Неподходящие ссылки скрываются, а соответствующая найденным цифрам ссылка растягивается поверх страницы. Щелчок отправляет на сервер набор цифр и частоту их появления. Прямая фоновая передача запрещена политикой, но запрос уходит как действие самого пользователя.
Цепочку для Gmail и Anthropic Claude Cowork Гарет Хейес построил вместе с другим исследователем PortSwigger Питом Хенди. Поведение резервного варианта CSS-функции image-set() позволяло Gmail выполнить внешний запрос вопреки очистке письма; обход продолжал работать 6 августа. Сначала атакующий вызывает отправку письма с подтверждением токена Slack. Затем владелец почты просит Cowork обработать сообщения через подключённый коннектор Gmail. Модель читает косвенную prompt-инъекцию, извлекает токен Slack и помещает его в HTML-черновик. Когда пользователь открывает этот черновик, image-set() передаёт токен наружу. Здесь письмо служит инструкцией для модели, хотя разрешение было дано лишь на обработку почты, а не на выполнение команд отправителя.
В Fastmail был испытан похожий разрыв между тем, что видит человек, и тем, что читает машина. Целью стал ИИ-браузер Atlas компании OpenAI. Псевдоэлементы CSS и управление прозрачностью оставляли на экране безобидный текст, одновременно подсовывая модели скрытые команды. Пользователь просил Atlas перевести видимую фразу, но браузер обрабатывал также невидимую prompt-инъекцию. По её указанию Atlas открывал вкладки и кодировал имя жертвы во фрагментах URL. OpenAI объявила об отказе от Atlas; прекращение его работы было назначено на 9 августа 2026 года.
Ещё один приём для Fastmail Хейес назвал «CSS-перемычкой», или CSS hotwiring. Стили перенаправляли щелчки с выбранной пользователем цели на посторонние элементы интерфейса, включая последовательности из нескольких действий. Отдельный обход прокси изображений использовал экранированную обратную косую черту и разрешённый домен . Запрос выдавал момент просмотра письма, хотя прокси должен был мешать такому отслеживанию. По словам Хейеса, Fastmail исправил две ошибки CSS-мутации.
Для Proton Mail исследователь показал вектор, раскрывавший IP-адрес получателя. При повторной проверке обход прокси Proton Mail уже не сработал, поэтому на тот момент уязвимый путь, вероятно, был закрыт. Актуальная документация Proton по защите от трекеров говорит, что сервис скрывает личный IP-адрес пользователя и точное время открытия письма. Сам факт прежнего обхода полезен для оценки прокси-защиты: разрешённый запрос, нестандартное экранирование или особенность парсинга способны обойти правило, которое выглядит надёжным при обычной загрузке картинки.
Проблема не сводится к ошибке одного фильтра. Опасная цепочка складывается из разрешённых HTML-элементов, пользовательских атрибутов, JavaScript почтового приложения и создаваемых им DOM-узлов. К ним добавляются особенности CSS-парсинга, медиазапросы, псевдоэлементы, резервное поведение image-set(), таймеры Firefox, гонки при вставке, прокси изображений и разрешённые домены. Если письмо может обращаться к меткам, ссылкам или слоям вокруг себя, недоверенный документ начинает действовать через доверенные кнопки веб-почты. Подключённый ИИ-коннектор расширяет ту же проблему: содержимое сообщения получает доступ к возможностям ассистента.
Базовая защита требует жёстко изолировать HTML и CSS письма от DOM и элементов управления приложения. Проверку CSS стоит строить на узких списках допустимых символов, а не полагаться только на общий санитайзер. Перед разрешением пользовательских атрибутов разработчикам следует выяснять, не превращает ли их прикладной JavaScript в новые узлы или стили. Элементы select лучше блокировать, если их можно оформить под поле пароля; опасные селекторы, метки, перекрывающие слои и ссылки не должны добираться до чувствительных частей интерфейса.
Внешние запросы через CSS, запасные варианты image-set() и сходные механизмы нужно запрещать независимо от того, прошёл ли основной URL проверку. Разрешённые домены вроде нельзя считать безопасными сами по себе: они тоже становятся каналами слежения или обхода прокси. Защита должна учитывать щелчки и вставку из буфера как возможную часть утечки. Почтовым ИИ-инструментам требуется отдельная граница полномочий: текст отправителя остаётся недоверенными данными, а не командой пользователя, даже если Claude Cowork, Atlas или другой агент способен прочитать письмо, создать черновик, получить токен и открыть ссылку.


Новое на сайте

Ссылка