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