16 18
admin@art-web.ru
8 800 302-69-27 бесплатный звонок по России
+7 (903) 403-59-27 пн.-пт. с 09.00 до 18.00
Полезные статьи:
SVG и безопасность сайта: чем опасны векторные картинки
Эдуард
Автор: Эдуард
(frontend-разработчик)

SVG как оружие: почему безобидная картинка может взломать сайт

Коротко. SVG - это не набор пикселей, а текстовый XML-документ, и внутри него может оказаться активный код. В 2025 году доля SVG во вложениях фишинговых писем выросла с 0,1% до 4,9%, в марте доходила до 15% (Hoxhunt). В статье разбираем, как SVG используют для XSS, фишинга и атак на серверные парсеры, и какие 6 мер закрывают этот риск на сайте.

Содержание статьи:


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

Чем SVG отличается от JPG и PNG

JPG и PNG - это сетка пикселей с цветовыми значениями. Кроме цвета, браузеру из такого файла прочитать нечего.

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

SVG-файл как текст

Раз это документ, а не пиксели, в него можно вложить не только фигуры, но и элементы, которые браузер исполняет.

JPG / PNG SVG
Что внутри пиксели текстовая XML-разметка
Может содержать скрипты нет да
Может содержать HTML и формы нет да, через <foreignObject>
Обрабатывается XML-парсером на сервере нет да, при конвертации и генерации превью

Как SVG превращается в атаку

Встроенный JavaScript

Стандарт SVG поддерживает собственный тег <script> и обработчики событий вроде onload. Выполнится ли код, зависит от способа подключения файла:

  • через <img> или CSS background-image - современные браузеры скрипты внутри SVG не выполняют;
  • при открытии файла напрямую по ссылке, через <object>, <embed>, <iframe> или inline-вставке в HTML - выполняют.

Главный риск - SVG, загруженный пользователем на ваш же домен: аватар, логотип компании в личном кабинете, вложение в форме. Если такой файл открыть по прямой ссылке, скрипт выполнится в контексте вашего сайта. Это хранимая XSS: код может отправлять запросы от имени пользователя, читать данные страницы и cookie без флага HttpOnly.

HTML и формы через <foreignObject>

Тег <foreignObject> позволяет встроить в SVG произвольный HTML, в том числе форму ввода логина и пароля. Пользователь думает, что открыл документ, и вводит данные, а они уходят злоумышленнику.

Автоматические редиректы

Скрипт в SVG может сработать сразу при открытии файла и перенаправить браузер на фишинговую страницу или загрузчик вредоносного ПО. Сам SVG при этом может быть пустым - пользователь не видит ничего подозрительного.

Атаки на XML-парсер на сервере: XXE

SVG - полноценный XML и поддерживает DOCTYPE с объявлением сущностей. Если сайт обрабатывает загруженные SVG на сервере (генерирует превью, конвертирует в PNG или PDF) уязвимой библиотекой, злоумышленник может заставить сервер прочитать локальный файл или обратиться к внутреннему ресурсу. Это атака XXE (XML External Entity).

XSLT-преобразования

SVG может ссылаться на XSL-таблицу стилей, которая превращает документ в HTML со своим кодом при открытии файла напрямую. Этот вектор сужается: Chrome отключает XSLT начиная с версии 158 (17 ноября 2026), о планах удалить его сообщили также Firefox и WebKit. До обновления браузеров у пользователей вектор остается рабочим.

Обход фильтров через нестандартную разметку

Отдельный SVG-файл браузер разбирает как строгий XML. Но SVG, вставленный inline в HTML-страницу, разбирается HTML-парсером, который прощает пропущенные кавычки и незакрытые теги. Поэтому фильтры на регулярных выражениях для «отлова» опасных конструкций ненадежны: одну и ту же конструкцию можно записать десятками способов. Чистить SVG нужно парсером и белым списком разрешенных элементов, а не поиском по строке.

Реальные атаки через SVG

Когда Что произошло Источник
Декабрь 2022 Фишинг с вредоносом Qakbot: HTML-вложение со встроенным SVG, скрипт которого собирал ZIP-архив прямо на компьютере жертвы. Файл не передавался по сети, поэтому почтовые фильтры его не видели Cisco Talos
Январь 2023 Атака «Blank Image»: письмо от имени DocuSign, во вложении HTML с пустой SVG-картинкой в base64, скрипт внутри перенаправлял на фишинговый сайт Avanan (Check Point)
Ноябрь 2024 SVG-вложения, которые показывали имитацию таблицы Excel со встроенной формой входа BleepingComputer
2024-2025 Доля SVG среди вредоносных вложений в письмах: 0,1% в 2024 году, 4,9% в первом полугодии 2025, пик около 15% в марте 2025 Hoxhunt, отчеты 3 млн пользователей

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

Когда это касается вашего сайта

Риск реальный, если на сайте есть хотя бы одно из этого:

  • пользователи загружают аватары, логотипы или вложения, и среди разрешенных форматов есть SVG;
  • сайт принимает файлы через формы обратной связи, личный кабинет или медиатеку CMS;
  • SVG-иконки вставляются в шаблон inline, а их источник - не только ваши разработчики (например, их может загрузить контент-менеджер);
  • на сайте стоит плагин, который включает загрузку SVG. WordPress по умолчанию запрещает загружать SVG именно из-за этих рисков, и плагины вроде «разрешить SVG» снимают это ограничение.

Если SVG на сайте только ваши собственные иконки из верстки, а загрузки SVG от пользователей нет, риск минимальный.

Проверим, как ваш сайт обрабатывает файлы

Посмотрим, какие форматы принимают формы и CMS, как отдаются загруженные файлы, настроены ли заголовки безопасности. Найденные уязвимости закроем в рамках технической поддержки.

Как защитить сайт от SVG-атак

  1. Не принимать SVG, если он не нужен. Для аватаров и фото в формах достаточно JPG, PNG и WebP. Самая надежная защита - убрать SVG из списка разрешенных форматов.
  2. Санитизация на сервере. Если SVG нужен, каждый загруженный файл очищается по белому списку: удаляются <script>, обработчики on*, <foreignObject>, внешние ссылки и DOCTYPE. Для PHP есть библиотека enshrined/svg-sanitize (на ней работает плагин Safe SVG для WordPress), для JavaScript - DOMPurify, которая работает и в браузере, и на сервере в Node.js.
  3. Правильные заголовки при отдаче файлов. Пользовательские SVG отдаются с Content-Security-Policy: script-src 'none', X-Content-Type-Options: nosniff и, если файл не нужно показывать в браузере, Content-Disposition: attachment. В теге <img> такая картинка продолжит отображаться, а при прямом открытии код не выполнится.
  4. Строгий Content-Security-Policy на сайте. Запрет inline-скриптов и загрузки ресурсов с посторонних доменов снижает ущерб, даже если инъекция прошла.
  5. Отдельный домен для пользовательских файлов. Загрузки хранятся и отдаются с отдельного домена (не поддомена основного сайта) без доступа к cookie. Даже если скрипт выполнится, он не получит доступа к сессии пользователя на основном сайте.
  6. Конвертация в растр и безопасный парсер. Если векторность не нужна, SVG конвертируется в PNG на сервере и весь код отбрасывается. Библиотека, которая это делает, должна быть обновлена и настроена без загрузки внешних сущностей - это защита от XXE.


Для большинства сайтов малого бизнеса хватает первого пункта плюс заголовков из третьего. Санитизация и отдельный домен нужны там, где SVG от пользователей - часть продукта: конструкторы, маркетплейсы, сервисы с загрузкой логотипов.

SVG - хороший формат для верстки, отказываться от него не нужно. Но относиться к нему стоит как к любому пользовательскому вводу, а не как к «просто картинке».

Вопросы и ответы

Опасен ли SVG, если он подключен через тег img?

Нет, в этом режиме современные браузеры не выполняют скрипты внутри SVG и не загружают внешние ресурсы. Риск появляется, когда файл открывают напрямую по ссылке, вставляют inline или через object, embed, iframe.

Можно ли безопасно использовать SVG-иконки в верстке?

Почему WordPress не дает загружать SVG?

Что делать, если пришло письмо с SVG-вложением?

Защищает ли антивирус от вредоносных SVG?

Как проверить, уязвим ли мой сайт?

Разработка сайтов
Визитка от 20 000 р.
Каталог от 35 000 р.
Магазин от 30 000 р.
Лендинг от 15 000 р.
Дизайн
Логотип от 5 000 р.
Персонаж от 40 000 р.
Продвижение
SEO от 5 000 р.
Контекст от 5 000 р.
Продвижение сайтов Контекстная реклама

Особенности планирования бюджета на развитие сайта, выбор канала привлечения клиентов, оценка потенциала.

Продающий сайт – это ресурс, который мотивирует посетителей совершать покупку. В оформлении и подаче материалов его ориентация на продажи товаров или заказ услуг. Это тонкая работа – сформировать структуру и контент, чтобы ненавязчиво, но эффективно, подтолкнуть читателя к действию, к конверсии.

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

Если Вас интересует контекстная реклама под ключ – обращайтесь в компанию «Арт-Вэб». Наши директ-специалисты знают всё об этом эффективном инструменте и смогут с максимальной эффективностью применить свои навыки для продвижения Вашего бизнеса в сети.

Преимущества создания сайта в Перми с art-web.ru:

Сотрудники art-web.ru

Персональный менеджер

Начиная сотрудничество с нами, Вы можете быть уверенными в перспективах работы ресурса, а далее убедитесь в этом самостоятельно. А все потому, что каждый отдельный проект внимательно отслеживается профессиональным менеджером. С помощью точного анализа, непрерывного мониторинга, а также поддержки Вы всегда будете в курсе новшеств в IT мире. Эти знания помогут Вам в создании эффективных решений для развития проекта. Помимо этого, у Вас всегда есть возможность обратиться к менеджеру-специалисту с возникающими вопросами, даже с теми, которые касаются непосредственно процесса редактирования сайта! Наша дизайн студия Art-Web предоставляет свои услуги в городе Пермь.

Экономия времени

Дизайн-студия Art-Web поможет сэкономить Ваше время, ведь временной ресурс – это деньги! Мы заинтересованы в том, чтобы Вы достигали своих поставленных целей и профессионально росли. От Вашего успеха зависит наш собственный!

Работа на результат

Наша команда состоит только из работников-профессионалов! Нам очень важно, чтобы клиент получал отдачу от работы. Поэтому в процессе сотрудничества по созданию сайта мы имеем одну большую цель – получить результат!

Постоянный рост эффективности

У Вас уже есть представления о сайте? Каких перспектив для своего проекта Вы хотите добиться? Мы готовы дать Вам ответ – сайт удобный, сайт получает высокие позиции и занимает высокие планки. Сайт приносит либо коммерческую выгоду (прибыль), либо направлен на творческий результат. Все зависит от выбранного Вами направления. Все это находится в открытом доступе в студии дизайна Art-Web. Наша деятельность никогда не стоит на одном месте. Мы двигаемся только вперед и прокачиваем наши навыки и знания непрерывно – именно эти факторы являются залогом успеха. Надежная формула эффективности состоит в использовании современных методов и принятии правильных решений для развития!

Пермь Студия дизайна Art-web
улица Тимирязева, 24А 614007 Пермь +7 978 260-17-07
Студия дизайна Art-web
Оценка 0.0 из 5
020262008
18 лет работаем для вас
0
более 1000 реализованных проектов
0
10 сотрудников
0
более 100 проектов на поддержке
0 350 и более активных доменов
0 рублей клиентов реализовали на рекламу за 2016-2026
0 фраз продвигается в поиске
Режим работы веб студии:
ПН. - ПТ. 09:00 - 18:00
СБ. - ВС. выходной
8 800 302-69-27
admin@art-web.ru


Сертифицированное агентство Яндекса логотип от студии art-web
Заказать консультацию
Отправить
Рейтинг Рунета 2023 г.
разработка сайтов
в регионе
Рейтинг Рунета 2022 г.
поддержка и развитие
сайта на Joomla
Рейтинг Рунета 2022 г.
разработка и продвижение
сайта на Joomla
 
Добро пожаловать!

На нашем интернет-сайте предусмотрена обработка метаданных пользователей (файлов cookie, данных об IP-адресе и местоположении).

Используя web-ресурс art-web.ru, Вы выражаете своё согласие с этим условием.