Новая атака clickjacking основана на CSS и SVG

SVG,CSS,кликджекинг,безопасность,уязвимость,атака,браузер,Google,HTML,XSS

Уязвимость кликджекинга, использующая SVG и CSS, позволяет злоумышленникам захватывать пользовательские действия. Эксперты нашли способ манипулировать пикселями на веб-странице без JavaScript. Who needs JavaScript? – 7

Исследователь безопасности Лайра Ребане разработала новый вид кликджекинга, основанный на Scalable Vector Graphics (SVG) и Cascading Style Sheets (CSS).

Ребане продемонстрировала эту технику на BSides Tallinn в октябре и теперь опубликовала краткий обзор своего подхода. Атака, которая до сих пор не была полностью устранена, основана на том факте, что фильтры SVG могут утекать информацией между источниками, нарушая политику одного источника веб-сайта same-origin policy.

Кликджекинг относится к различным способам обмана пользователя приложения или веб-сайта, чтобы он совершил непреднамеренные действия. Также известный как атака на пользовательский интерфейс, он обычно включает в себя манипулирование элементами интерфейса, чтобы перенаправить ввод пользователя в злонамеренных целях.

Этот термин был введен в 2008 году исследователями безопасности Джерришем Гроссманом и Робертом Хансеном для описания способа перехвата событий кликов мыши, чтобы они могли быть применены по желанию злоумышленника (например, чтобы жертва нажала кнопку отправки веб-страницы).

С тех пор было разработано различные меры защиты для укрепления фундаментальной модели безопасности веб-сайтов. Они включают в себя ограничение того, как разные источники (часто в форме веб-доменов) могут взаимодействовать друг с другом.

Как подробно описано в OWASP, распространенные методы защиты включают: предотвращение загрузки браузером страниц во фрейме с помощью HTTP-заголовков X-Frame-Options или Content Security Policy (frame-ancestors); предотвращение включения сессионных файлов cookie при загрузке страницы во фрейме; и использование JavaScript для предотвращения загрузки страниц во фрейме.

Тем не менее, все новые вариации продолжают появляться, такие как прошлогодний межзаконный подлог.

Ребане обнаружила свою технику атаки, пытаясь воспроизвести визуальный эффект Liquid Glass от Apple с помощью SVG и CSS. Успешно сделав это, она обнаружила, что ее SVG/CSS воспроизведение эффекта liquid glass, когда он помещается во фрейм, имеет доступ к пикселям основной веб-страницы.

Ребане рассказала The Register, что в прошлом SVG использовался для межсайтовых атак, ссылаясь на Атаки с идеальным временем пикселя с HTML5 от Пола Стоуна [PDF] и Человеческий боковой канал от Рона Масаса.

«Я не думаю, что кто-то другой запускал логику на данных из другого источника таким образом, как я», — сказала Ребане.

В своей публикации Ребане подробно описывает, как она использовала фильтры SVG для создания логических элементов для обработки пикселей веб-страницы с использованием произвольных вычислительных функций, чтобы реализовать атаку кликджекинга, которая была бы слишком сложной с использованием других средств.

«Используя feBlend и feComposite, мы можем воссоздать все логические элементы и сделать фильтры SVG функционально полными», — объясняет ее публикация. «Это означает, что мы можем запрограммировать все, что захотим, пока это не связано со временем и не использует слишком много ресурсов».

Ребане продемонстрировала применение своей техники, создав атаку в качестве доказательства концепции для извлечения текста из Google Docs. Атака включает в себя кнопку «Создать документ», расположенную на интерфейсе всплывающего окна. При нажатии код обнаруживает всплывающее окно и представляет текстовое поле CAPTCHA для ввода пользователем. Кнопка для отправки CAPTCHA добавляет предложенный файл Docs в скрытое текстовое поле.

Скриншот презентации Лайры Ребане на BSides о кликджекинге SVG

Скриншот презентации Лайры Ребане на BSides о кликджекинге SVG – нажмите, чтобы увеличить

Обычно это может быть заблокировано путем установки заголовка X-Frame-Options. Но Google Docs позволяет встраивание.

Ребане заявила, что это относительно распространено для приложений, которые должны быть пригодны для использования на сторонних веб-сайтах. «Подумайте о встраивании видео (YouTube, Vimeo), встраивании социальных сетей, картографических приложениях, поставщиках платежей, комментариях, рекламе и т. д.», — объяснила она. «Также есть много приложений, которые не предназначены для встраивания, но им не хватает необходимых заголовков для предотвращения этого — это часто бывает в случае API-концевых точек».

Кроме того, Ребане сказала, что атаку можно запустить на не-фреймовом целевом объекте с помощью внедрения HTML.

«Известен класс уязвимостей, известный как XSS, который включает в себя внедрение HTML на веб-сайты различными способами для выполнения вредоносного JavaScript», — объяснила Ребане. «Ранее возможность внедрить HTML на ваш сайт означала немедленный проигрыш, но в наши дни все больше и больше сайтов начали использовать CSP, которые позволяют владельцам веб-сайтов убедиться, что на странице не выполняется небезопасный JavaScript, тем самым предотвращая атаки XSS».

Злоумышленник, который находит такой сайт, по словам Ребане, должен выяснить, как использовать внедрение без использования JavaScript.

«CSS — это следующий лучший вариант для использования, и его можно использовать для многих видов интересных атак», — сказала Ребане, утверждая, что CSS квалифицируется как язык программирования. «Кликджекинг SVG — одна из многих атак, которые можно там использовать».

Кликджекинг SVG не меняет кардинальным образом ландшафт веб-безопасности, но упрощает задачу создания сложных цепочек атак.

Ребане говорит, что Google выплатила разовую награду за обнаружение уязвимости в размере 3133,70 доллара. «Эта атака еще не исправлена, но также неясно, является ли это ошибкой браузера или нет, и, к слову, это влияет и на другие браузеры (например, Firefox)», — добавила она.

Существуют способы защиты от кликджекинга SVG. Ребане в своей презентации назвала API Intersection Observer v2 как способ обнаружения, когда фильтр SVG охватывает фрейм.

Google не сразу ответила на запрос о комментариях.

Сопутствующий баг Chromium, опубликованный в марте, согласно Ребане, восходит к Атакам с идеальным временем пикселя и ее преемникам, помечен как «не будет исправлено». ®