В рендер-движке Blink SVG, загружаемые как статические изображения, поддерживают XSLT-трансформации. Этим можно злоупотребить для client-side DoS.
Внутри SVG размещается XSLT с большим количеством вложенных
<xsl:for-each>. При рендеринге браузер:⚫️ Начинает активно потреблять память
⚫️ Постепенно замедляет вкладку
⚫️ Через несколько секунд приводит к зависанию или крашу вкладки (иногда браузера целиком)
Атака возможна, если:
➡️ Браузер основан на Blink (Chrome, Edge и др.)
➡️ есть возможность указать удалённое SVG-изображение
➡️ SVG загружается через img или background-image (можно использовать и другие HTML-теги/атрибуты или свойства CSS)
➡️ Отсутствует фильтрация типа контента или SVG
<img src="./dos.svg">
<div style="background-image: url('./dos.svg')">dos</div>
Типичный сценарий — HTML/CSS injection с контролем URL изображения.
Практическая применимость
✅ Client-side DoS и деградация UX
✅ Атаки на публичные страницы: профили, комментарии, ленты
✅ Проверка нестандартных векторов при HTML/CSS injection
Подобные кейсы расширяют понимание поверхности атаки и помогают находить неочевидные client-side векторы, которые могут стать частью более сложных цепочек атак 🤔
