Руководство по безопасности браузеров (Browser Security Handbook). Глава I
§ 11. Другие встроенные форматы документов
§ 11. Другие встроенные форматы документов
§12. Контентные плагины
В отличие от небольшого
и вполне определенного набора изначально поддерживаемых форматов документов, сфера
применения браузерных плагинов очень разнообразна и быстро расширяется.
Большинство распространенных плагинов для отображения контента вызываются с
помощью тегов <OBJECT> или <EMBED> (или <APPLET> для Java), но могут
использоваться и другие типы интеграции.
Распространенные плагины,
встраиваемые в страницу сайта, можно разделить на несколько основных категорий:
- Языки
веб-программирования. Включает такие технологии, как Adobe Flash, Java или Microsoft Silverlight, присутствующие
на подавляющем большинстве настольных компьютерах. Эти языки, как правило, позволяют
выполнять множество сценариев (скриптов), включая доступ к документу верхнего
уровня и другой DOM-информации, или способны отправить сетевые запросы на
некоторые объекты. Модели безопасности, реализованные этими плагинами обычно
отличаются от моделей самого браузера нелогичными или непредусмотренными особенностями.
Такие технологии веб-разработки становятся главной целью для проведения атак. Они также представляют потенциальную угрозу безопасности
из-за недостаточной обработки входных данных в популярных плагинах.
- Интегрированные форматы документов,
отличные от HTML. Некоторые популярные редакторы документов или средства
просмотра, включая Acrobat
Reader и Microsoft
Office, устанавливают плагины для поддержки собственных форматов на
HTML-странице или для просмотра содержимого в полноэкранном режиме прямо в
браузере. Интересной особенностью этого механизма является то, что многие такие
форматы документов позволяют создавать сценарии или предлагают интерактивные
функции (например, интерактивные ссылки), что может привести к передаче данных браузеру
необычным или непредсказуемым способом. Например, существуют методы для перемещения
окна браузера с помощью JavaScript в Url-адресах встроенных в PDF-документы - и
этот код будет выполняться в контексте безопасности сайта.
- Языки
разметки, интегрированные в HTML.
Языки разметки, такие как VRML,
VML
или MathML, также
поддерживаются в некоторых браузерах с помощью плагинов, и могут быть встроены
в стандартные HTML-документы; они имеют такой же вектор атаки, что и формат XML
(см. предыдущий параграф).
- Мультимедийные форматы, обладающие широкими
возможностями. Различные плагины позволяют воспроизводить видео и аудио непосредственно
в браузере без открытия окна мультимедийного проигрывателя. Интеграцию плагина
в браузер, расширяющие его возможности, предлагают большинство современных
медиаплееров, в частности, Windows
Media Player, QuickTime,
RealPlayer или VLC. Большинство таких форматов не
влияют на безопасность для принимающей стороны, хотя на практике, этот тип
интеграции подвержен определенным ошибкам.
- Специализированные
виджеты для манипулирования данным. Они включают в себя функции, такие
как DHTML Editing Control с
CLSID 2D360201-FFF5-11D1-8D03-00A0C959BC0A.
Некоторые такие плагины поставляются вместе с Windows и помечаются как
безопасные, хотя безопасности уделяется мало внимания.
Общая информация: в некоторых азиатских
странах применяются плагины на основе модуля шифрования, реализованные в виде управляющих
элементов ActiveX.
Одним из
наиболее важных свойств безопасности объектов, вложенных в теги, является
возможность встраивания произвольных типов файлов, манипулируя заголовками Content-Type и Content-Disposition.
Приоритеты входящих данных для того, чтобы решить, как интерпретировать
содержание в различных браузерах, описаны с таблице 13.
Таблица №13
Входной сигнал
MSIE6
MSIE7
MSIE8
FF2
FF3
Safari
Opera
Chrome
Android
Тип тега и TYPE= / CLASSID= значение
#1
#1
#1
#1
#1
#1
#1
#1
n/a
Content-Type=значение, если TYPE= не определен
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
n/a
Content-Type=значение, если TYPE= отсутствует
#2
#2
#2
#2
#2
#2
#2
#2
n/a
Сниффинг
контента, если TYPE= не определен
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
n/a
Сниффинг
контента, если TYPE= отсутствует
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
(#3)
игнорировать
(#3)
n/a
Подход по определению
обрабатываемых входных данных является проблематичным, поскольку он лишает
сервер выбирать определенные ресурсы, которые рассматриваются как
интерпретируемый плагином документ в ответ на действия вредоносного стороннего сайта.
В сочетании со слабым синтаксическим анализатором в браузерных плагинах это
приводит к старым
уязвимостям.
Примечание: К сожалению, на
сегодняшний день нельзя полностью проконтролировать как будет отображаться
управляемый плагином документ.
Входной сигнал
MSIE6
MSIE7
MSIE8
FF2
FF3
Safari
Opera
Chrome
Android
Тип тега и TYPE= / CLASSID= значение
#1
#1
#1
#1
#1
#1
#1
#1
n/a
Content-Type=значение, если TYPE= не определен
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
n/a
Content-Type=значение, если TYPE= отсутствует
#2
#2
#2
#2
#2
#2
#2
#2
n/a
Сниффинг
контента, если TYPE= не определен
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
n/a
Сниффинг
контента, если TYPE= отсутствует
игнорировать
игнорировать
игнорировать
игнорировать
игнорировать
(#3)
игнорировать
(#3)
n/a
Другое интересное свойство, которое стоит отметить - это наличие во
многих модулях собственных HTTP-стеков и кэширование системы, что позволяет
обойти настройки конфиденциальности браузера.
Комментариев нет:
Отправить комментарий