4. Уязвимые фреймворки
Недавний опрос, проведенный сайтом Ajaxian.com, определил 12 самых популярных AJAX-фреймворков, которые используются в настоящее время. Результаты опроса основываются на ответах 865 участников в течение одной недели. Несмотря на то, что данный опрос не является научным экспериментом, он дает веские основания для того, чтобы определить какие фреймворки широко распространены.
Одна четверть участников голосования сообщают, что они вообще не используют никаких фреймворков. Ввиду данного обстоятельства, JavaScript Hijacking не может быть полностью устранен только лишь исправлением популярных фреймворков. Веб-разработчики должны понять риски, которые возникают при использовании JS как средства передачи информации, таким образом, они смогут защитить свой код и исследовать сторонние компоненты, которые они используют.
Когда мы начали анализировать фреймворки, мы сразу же определили, что они могут быть поделены на две основные группы. Многие обеспечивают клиентские JS-библиотеки для реализации графического интерфейса, но не включают серверные компоненты для сквозной передачи информации. На самом деле, только четыре фреймворка из списка голосования -
DWR,
Microsoft Atlas,
xajax, и
GWT – обеспечивают как клиентские библиотеки, так и серверные компоненты для создания веб-приложений. Данное различие является важным для определения, насколько они уязвимы к JavaScript Hijacking и видов мер по предотвращению данной уязвимости, которые они должны содержать.
Фреймворк
Prototype использует JSON как один из основных форматов передачи данных. Поскольку Prototype является клиентской библиотекой, он не может противостоять JS Hijacking на стороне сервера путем проверки достоверности запросов. Однако эта библиотека должна обеспечивать защиту своего JavaScript-кода. Никаких подобных возможностей в Prototype не существует, что ведет к созданию уязвимых приложений, основанных на этом фреймворке. Это касается и для большинства остальных клиентских библиотек, включая
Script.aculo.us,
Dojo,
Moo.fx,
jQuery,
Yahoo! UI и
MochiKit.
Все версии
DWR (<= 1.1.4) уязвимы к JavaScript Hijacking. До сих пор данный фреймворк не обеспечивает никаких мер по предотвращению данной уязвимости. Хорошей новостью является то, что DWR 2.0 – версия, которая сейчас находится в разработке – защищена от JavaScript Hijacking специальным приемом, который направлен против CSRF. Защита сводится к тому, что злонамеренный скрипт не может прочитать данные в Cookie, которые назначены другими доменами, что позволяет фреймворку использовать секретное значение, хранящееся в Cookie, для взаимодействия клиента и сервера. DWR 2.0 автоматически подставляет сессию к запросу, которая впоследствии проверяется на стороне сервера. Команда разработчиков также проводит предварительную работу по предотвращению прямого выполнения ответа.
GWT и
Microsoft Atlas также используют JSON для передачи данных между сервером и клиентом. Было установлено, что данные фреймворки также уязвимы, путем создания простейших приложений и перехвата трафика. По умолчанию оба фреймворка используют метод POST, однако они также обеспечивают возможность использования GET-запросов, что делает их уязвимыми.
Rico и
xajax используют XML для передачи данных и в настоящее время не поддерживают JSON. Однако они планируют добавить поддержку JSON в будущих версиях. Будем надеяться, что разработчики этих фреймворков сделают ее безопасной.
От себя
Самый популярный в России AJAX-фреймворк
JSHttpRequest от Дмитрия Котерова подвержен данной атаке, так как передает информацию в JSON-формате. Кроме того, еще один популярный фреймворк, который не участвовал в опросе, а именно
sajax также уязвим. Мнение о данной уязвимости крайне противоречивое, для примера можно взять дискуссию в этом блоге _http://www.schneier.com/blog/archives/2007/04/javascript_hija_1.html. Одни говорят, что значение JS Hijacking явно преувеличено, другие признают, что уязвимость имеет место в современном Web 2.0. Решать вам
