Статьи Атака через Flash графику

Discussion in 'Статьи' started by Mobile, 27 Aug 2006.

  1. Mobile

    Mobile Elder - Старейшина

    Joined:
    18 Feb 2006
    Messages:
    1,089
    Likes Received:
    822
    Reputations:
    324
    Файлы Macromedia Flash имеют собственный встроеный язык скриптов. ActionScript[6] (язык сценариев) может показаться очень простым для программиста знающего JavaScript, т.к. имеет синтаксис схожий с Javascript, Си и PERL. Однако, этот простой язык может быть использован для программирования сложных сцен анимации, моделирования, создания игр и т.д. Для нас представляет интерес функция getURL()[7]. Эта функция позволяет нам переадресовать конечного пользователя к другой странице. В качестве входного параметра обычно используется URL; например «http://eyeonsecurity.net», в скрипте это выглядит так:
    getURL("http://eyeonsecurity.net")

    Попробуем передать JavaScript, вместо значения URL:
    getURL("javascript:alert(document.cookie)")

    Результатом выполнения этой функции будет вывод окна со значениями cookies пользователя, установленными браузером для сервера со страницы которого был показан Flash файл. Это означает, что мы успешно внедрили JavaScript код используя возможности браузера и Flash.

    Уязвимые ресурсы и примеры программ:
    Ezboard (http://ezboard.com/) является, вероятно, одной из самых лучших бесплатных скриптов досок объявления. В этой системе досок объявлений взамодействие с пользователями происходит через web интерфейс и позволяет вставлять в подписи пользователей Flash (используя тег EMBED). В наших испытаниях мы отредактируем настройки подписи следующим образом:
    HTML:
    <embed  src="http://eyeonsecurity.net/download/example.swf"  pluginspage=  "http://www.macromedia.com/shockwave/download/  index.cgi?P1_Prod_Version=ShockwaveFlash"  type="application/x-shockwave-flash"  width="0"  height="0"  >  </embed>
    Этот код будет добавлен к каждому посту атакующего. Любой из посетителей сайта просмотревший этот пост будет подвержен атаке, в результате которой будут похищены cookies.

    Упомянутый выше deviantART позволяет пользователям размещать Flash файлы для всеобщего обозрения. Конечно же, атакующий может зарегистрировать новый акаунт, разместить злонамеренный Flash файл и захватить акаунты других пользователей и даже акаунт администратора. Не будем приводить конкретные примеры реализации атаки.

    Сообщество MSN[8] — это сайт который позволяет пользователям загружать файлы на сервер. SWF файлы (содержащие JavaScript код) — один из форматов фалов разрешенных к загрузке. Это очень серьезный недостаток в безопасности. В предыдущей статье[9] EyeonSecurity, которая называется «Атака на аккаунт Microsoft Passport», мы акцентируем внимание на том, как единственная уязвимость в технологии Passport создаёт существенную проблему в безопасности.

    Анонимные сервисы типа Anonymizer[10] и The-Cloack[11], также уязвимы к этой атаке. Эти сервисы фильтруют любой JavaScript код на HTML страницах, но не в состояние противостоять атакам описанным в этой статье.

    Популярные движки форумов Ikonboard и YaBB[12] особенно уязвимы к этой атаке. Эти форумы позволяют использовать специфические теги [flash], преобразуемые приложением в корректные теги <Object>.
    Пример:
    HTML:
    [flash]http://eyeonsecurity.net/download/example.swf[/flash]    Эта строка преобразуется приложением в следующий код:   <object         classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"          width=200         height=200>  <param         name=movie         value=http://eyeonsecurity.net/download/example.swf>  <param         name=play         value=true>  <param         name=loop          value=true>  <param name=quality         value=high>  <embed         src=http://eyeonsecurity.net/download/example.swf         width=200          height=200          play=true          loop=true          quality=high>  </embed>  </object>
    Конечно же число уязвимых приложений не ограничивается этими примерами. Любой онлайн сервис позволяющий размещать Flash анимацию уязвим к XSS атакам. Представители сайтов описанных в этой секции были уведомлены относительно этой уязвимости прежде, чем этот документ был опубликован. Это означает, что многие примеры в настоящий момент уже не работают.

    Способы предотвращения:
    Хорошим решением было бы «пропарсить» flash анимацию и отфильтровать опасные параметры в getURL(). Это касается случая, когда web-приложения позволяют закачивать SWF файлы на сервер. Web-мастера всегда особенно стараются проанализировать и отфильтровать Flash-контент, если они разрешают пользователям закачку. Web-мастера могут блокировать любой Flash-контент, содержащий getURL(). Другое решение — сделать так, чтобы все действия getURL() выполнялись в новом окне. Это может быть достигнуто, если в качестве параметра target задать значение «_blank». Если применить вышеописанные изменения, то JavaScript URLы не будут исполняться с привилегиями домена. Однако, как замечено Bertrand Saint-Guillain[15], это решение не является безупречным в связи с тем фактом, что ActionScript — это мощьный скриптовый язык и в нем есть функция eval(). Эта функция позволяет более искушенным перцам игнорировать «парсинг» ActionScript.
    Пример:

    Code:
    a="get";  b="URL";   c="javascript:";   d="alert('bypassed');void(0);";    eval(a+b)(c+d);
    Код этого примера обойдет любую защиту, предлагаемую выше, т.к. нет getURL('javascipt:whatever'). Кроме того, есть еще одно, пожалуй более подходящее, решение — использовать разные домены для хранения и отображения Flash-роликов. Этот способ также может быть использован, чтобы сделать доступным активный контент и в других документах, таких как файлы HTML. Это значит, что если ваш домен securewebapplication.com, то вы могли бы хранить потенциально опасный контент на securewebapplication.net. Конечно это означает, что контент securewebapplication.net не требут аутентификации при помощи сессий, таким образом он доступен анонимным пользователям. Важно, чтобы потенциально опасный контент отображался только из «обезвреженного домена», это значит, что если флэш документ включен в файл HTML, то и этот HTML файл также должен быть отображен из «обезвреженного» домена.

    Web-разработчики также могут воспользоваться IFRAME, который ссылается непосредственно на Flash-анимацию, находящуюся на ином домене вместо использования тегов EMBED или OBJECT. В таком случае Flash-анимация работает точно так же, но подгружается из дочернего фрейма, исключая таким образом возможность использования JavaScript для кражи cookies и других XSS-атак. Впервые этот способ описали на форуме Neworder[16], а потом об этом распространилась[17] и Macromedia. Хотя это решение и является качественным, оно, тем не менее, ведет к меньшей совместимости с браузерами, которые не поддерживают IFRAME[18].

    securitylab.ru
     
  2. Xex

    Xex Banned

    Joined:
    10 Jul 2005
    Messages:
    108
    Likes Received:
    41
    Reputations:
    7
    ну это не новое...это старая, но хорошо примененная техника, к "новой" технологии...
     
  3. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Ахтунг автор чудит:
    "Хорошим решением было бы «пропарсить» flash анимацию и отфильтровать опасные параметры в getURL(). Это касается случая, когда web-приложения позволяют закачивать SWF файлы на сервер. Web-мастера всегда особенно стараются проанализировать и отфильтровать Flash-контент, если они разрешают пользователям закачку. Web-мастера могут блокировать любой Flash-контент, содержащий getURL(). Другое решение — сделать так, чтобы все действия getURL() выполнялись в новом окне."
    Интересно как это будет он осуществлять :))
     
  4. ReanimatoR

    ReanimatoR Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    120
    Likes Received:
    118
    Reputations:
    34
    при закачке на сайт, можно отфильтровать getURL(*,_self) -менять на getURL(*,_blank)
    или просто приписывать (*,_blank);, Хотя этот метод уязвим опять же с этими переменными=(
     
    #4 ReanimatoR, 30 Aug 2006
    Last edited: 30 Aug 2006