Руководство по безопасности браузеров (Browser Security Handbook). Глава I
§ 11. Другие встроенные форматы документов
Современные средства
визуализации браузера, как правило, поддерживают дополнительный набор
мультимедийных форматов, которые могут отображаться на странице в виде
отдельных документов. Их можно разделить на две группы:
- Простые
форматы данных. Они включают в себя простые текстовые данные или
изображения (JPEG, GIF, BMP и т.д.), для
которой браузер выделяет основную визуализацию холста (область
рисунка) и заполняет её статическими данными. В принципе последствия для
безопасности не возникают с этими типами данных, поскольку никакие вредоносные
полезные нагрузки не могут быть встроены в сообщение (за исключением крупных и
довольно редких ошибок реализации). Помимо распространенных графических форматов,
некоторые браузеры могут также поддерживать другие нетипичные или устаревшие медиа-форматы,
например, воспроизведение MIDI-файлов,
указанных в теге <BGSOUND>.
-
Обогащенные форматы данных. К данной категории в основном относятся
XML-форматы (SVG, RSS, Atom); помимо исходных данных, эти форматы
документов содержат различные инструкции визуализатора, подсказки или условные
выражения.
Из-за принципа
работы XML, каждый основанный на нем формат имеет два важных последствия для
безопасности:
- Во-первых, вложенные
пространства имен XML могут быть определены, и, как правило, не сверяться с
MIME-типом, позволяя встраивать их в HTML, например, в image/svg+xml.
- Во-вторых, эти форматы могут,
фактически, поступать с условиями для нестандартного внедрения в HTML или полезными
нагрузками Javascript
или встроенным сценарием, допуская HTML-инъекцию, даже если у атакующего нет
прямого управления структурой документов XML.
Один из
примеров документа, с MIME-типом image/svg+xml,
который будет по-прежнему выполнять сценарии для большинства современных
браузеров, выглядит следующим образом:
<?xml version="1.0"?> <container> <svg xmlns="http://www.w3.org/2000/svg"> [...] </svg> <html xmlns="http://www.w3.org/1999/xhtml"> <script>alert('Hello world!')</script> </html> </container> |
Кроме того,
SVG изначально допускает встроенные
сценарии и обработчики событий; во всех браузерах, поддерживающих SVG, эти сценарии
выполняются при загрузке изображения
в качестве документа верхнего уровня, и
игнорируются, когда представлены через тег <IMG>.
Работа
некоторых встроенных типов документов, не
являющихся HTML, описаны в таблице № 12:
Таблица №12
Описание теста
|
MSIE6
|
MSIE7
|
MSIE8
|
FF2
|
FF3
|
Safari
|
Opera
|
Chrome
|
Android
|
Поддержка растровых форматов (кроме
JPG, GIF, PNG)
|
BMP, ICO, WMF
|
BMP, ICO, WMF
|
BMP, ICO, WMF
|
BMP, ICO TGA*
|
BMP, ICO TGA*
|
BMP TIF
|
BMP*
|
BMP, ICO
|
BMP, ICO
|
Поддержка XML
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
Поддержку RSS-канала
|
НЕТ
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
НЕТ
|
НЕТ
|
Поддержка Atom-канала
|
НЕТ
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
НЕТ
|
НЕТ
|
Выполнение javascript в каналах
|
(ДА)
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
(ДА)
|
(ДА)
|
javascript:
или data: URL разрешены в каналах?
|
n/a
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
n/a
|
n/a
|
Спецификации CSS разрешены в
каналах?
|
n/a
|
НЕТ
|
ДА
|
ДА
|
ДА
|
НЕТ
|
ДА
|
n/a
|
n/a
|
Поддержка SVG
|
НЕТ
|
НЕТ
|
НЕТ
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
НЕТ
|
Может image/svg+xml документ содержать HTML xmlns полезную нагрузку?
|
(ДА)
|
(ДА)
|
(ДА)
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
(ДА)
|
* Поддержка формата ограничена или нарушена.
Комментариев нет:
Отправить комментарий