понедельник, 2 сентября 2013 г.

Browser Security Handbook. Глава 1, пункт 11

Руководство по безопасности браузеров (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 полезную нагрузку?
(ДА)
(ДА)
(ДА)
ДА
ДА
ДА
ДА
ДА
(ДА)
* Поддержка формата ограничена или нарушена.

Любопытно, что Vector Markup Language (VML), основанный  на XML, изначально не поддерживается в визуализации, и реализован в виде плагина, в то время как Scalable Vector Graphics (SVG) реализован в качестве основного компонента виртуализации во всех браузерах, которые его поддерживают.

Комментариев нет:

Отправить комментарий