Литвек - электронная библиотека >> Майкл Шмидт >> Web-дизайн и др. >> Безопасность HTML5 >> страница 2
описываемого сценария. Например, один из сценариев описывает Интранет-приложение, доступ к которому возможен только в пределах внутренней корпоративной сети. Эти изменения будут указаны явно в соответствующих разделах.


1.2 Мотивация

С тех пор, как Джон фон Нейман опубликовал свою теорию самовоспроизводящихся программ в 1949, атаки на компьютерные системы эволюционировали, как и атаки на веб-приложения. Одной из первых описанных крупных атак на веб-приложения была DDoS-атака (distributed Denial-Of-Service) на Yahoo, eBay, Amazon, и несколько других веб-сайтов в 2000 [16].

Веб-сервера являются постоянными целями для атак. Они, как правило, доступны 24 часа 7 дней в неделю и 365 дней в году. Это делает возможными хорошо спланированные ручные и автоматизированные атаки на веб-сервера. Консорциум безопасности веб-приложений провел в 2008 году исследование, которое показало, что 97554 из 12186 протестированных веб-сайтов (87.5%) имеет уязвимости [17]. Компания WhiteHat Security протестировала около 2.000 сайтов в своем исследовании, которое выявило, что средний сайт имеет 13 уязвимостей [18]. Компания Verizon в отчете за 2010 год по исследованию «Data Breach Investigations» пишет, что за 6 лет было выявлено более 900 инцидентов в ходе которых было скомпрометировано более 900 миллионов записей (по данным, предоставленным Секретной Службой США) [19].

Конечные пользователи также являются целью многих атак. Лаборатория Касперского в своем бюллетене безопасности за 2010 год сообщает, что число drive-by атак исчисляется десятками миллионов и что на пользователей сети Kaspersky Security Network было проведено 73,619,767 атак. Secunia пишет, что в приложениях третьих фирм было обнаружено гораздо больше уязвимостей, чем в программах Microsoft [21]. Эта закономерность особенно интересна в контексте веб-браузеров: количество найденных уязвимостей в Internet Explorer равно 51 [22], когда для Mozilla Firefox оно составляет 95 [23] (но необходимо учитывать, что не все уязвимости одинаково критичные). Symantec пишет в своем ежегодном отчете за 2010 год, что было зарегистрировано 339.600 различных штаммов вредоносного ПО, найденных в электронных письмах, заблокировано более 188.6 миллионов фишинговых писем и обнаружено 42.926 различных доменов с вредоносным контентом, причем 90% из них являются легитимными, но скомпрометированными сайтами [24]. Всего Лаборатория Касперского зафиксировала 327.598.028 атак на компьютеры пользователей только в первом квартале 2010 года [25].

Как видно, существует множество атак на веб-приложения (судя по 2010 году), и необходимость обеспечения безопасности в Интернет растет. Помимо удобств, предоставляемых Всемирной паутиной, критичными моментами, нуждающимися в рассмотрении, являются вопросы безопасности. Это справедливо как для нынешних, так и для будущих веб-приложений. Угрозы для веб-приложений, описанные в данном разделе, необходимо иметь в виду при рассмотрении проблем безопасности HTML5.


Глава 2. Проблемы безопасности HTML5.

HTML5 вносит в HTML несколько технологических изменений. В данной главе технически изложены последствия для безопасности, которые повлекут за собой эти изменения.


2.1 Введение

В процессе создания спецификации HTML5 соображения, связанные с безопасностью, фиксировались с самого начала. Каждая часть спецификации имеет свой подраздел, касающийся безопасности. Эти подразделы покрывают моменты, которые нужно хорошенько продумать при реализации соответствующих частей. В подразделах описываются уязвимости, которые могут возникнуть при реализации соответствующей возможности, а также безопасный способ ее реализации производителями браузеров. Например, авторы спецификации HTML5 выделили уязвимость под названием Information leakage (Утечка информации) для элемента canvas, которая возникает, если скрипты могут получать доступ к информации из разных источников. Далее в спецификации дается тщательное описание того, как избежать этой уязвимости в безопасной реализации (соответствующая выдержка из спецификации canvas для HTML5 находится в разделе 5.5.1 данного документа).

Помимо инструкций по безопасной реализации функционала, стандарт HTML5 содержит инновационные возможности, позволяющие решать существующие проблемы безопасности HTML:

Web Messaging: делает возможным безопасное общение между элементами с различных доменов и снимает необходимость в небезопасных хаках (см. раздел 2.5).

Inline Frame (Iframe) Sandboxing (Песочница для Iframe): Встроенные элементы Iframe теперь могут быть ограничены в возможностях. Можно, например, запретить запускать JavaScript [26] (см. раздел 2.9.3).

Вот еще пара примеров решения существующих проблем веб-приложений:

Сокрытие реферера: Добавление в ссылку атрибута rel со значением noreferrer предотвращает утечку информации через поле запроса referrer при переходе по ссылке. Это особенно полезно в почтовых веб-приложениях (POC приложение есть в разделе 5.2.11).

Безопасный контент-снифинг: Процедура определения типа ресурса теперь определена строго, что смягчает атаки на алгоритм контент-снифинга, т. е. автоматического определения типа контента (описано в [27]). Выдержки из спецификации HTML5, которые описывают правила определения типа контента, приведены в разделе 5.5.2.

Оставшуюся часть главы не следует воспринимать как доказательство того, что HTML5 совершенно небезопасен. Безопасность является важной частью спецификации HTML5. Тем не менее, введение нового функционала также расширяет возможности запуска новых атак, а даже безопасные возможности могут быть использованы некорректно. Следовательно, эволюция текущих веб-стандартов на пути к HTML5, добавляя новые возможности, порождает новые угрозы и уязвимости. Новые возможности HTML5 открывают инновационные пути для злоумышленников. Эти новые уязвимости, угрозы и векторы атак рассматриваются в данной главе. В итоге здесь дается представление о возможностях HTML5, открывающих новые угрозы и уязвимости, и подчеркиваются проблемные моменты.

Следующий список дает представление о возможностях HTML5, обсуждаемых в данной главе. Каждая возможность, описанная в этом списке, будет проанализирована более детально в своем подразделе. Таким образом, сначала дается представление о возможности, а затем описываются уязвимости и угрозы, возможные сценарии атаки и (если существуют) меры противодействия им. В главе рассматриваются следующие возможности HTML5:

Cross-Origin Resource Sharing (CORS, Междоменное разделение ресурсов)[28]: CORS позволяет клиентам делать междоменные запросы через XMLHttpRequest. В HTML5 ослаблена политика ограничения домена, которая изолирует документы с