Опубликован: 04.07.2012 | Уровень: специалист | Доступ: платный

Лекция 16: Обеспечение безопасности веб-приложений

Использование уязвимостей

Одной из желанных целей для создателей вредоносного ПО является возможность запуска кода без каких-либо действий пользователя. Самый распространенный способ достижения этой цели - использование уязвимости приложения или операционной системы для получения прав на выполнение. В последние годы эта тактика применялась многочисленными семействами сетевых червей, заражавших сетевые компьютеры с использованием различных уязвимостей. Этот метод (т.е. применение эксплойтов) особенно характерен для интернет-атак. Использование уязвимостей в клиентских браузерах предоставляет вредоносным программам возможность выполнения кода даже в том случае, если пользователь просто перешел на вредоносную страницу. Такие атаки зачастую называют "drive-by download" (попутная загрузка).

В последние годы вредоносные программы все чаще используют сеть WWW. Можно привести следующие примеры:

  • Трояны-загрузчики используют WWW в качестве хранилища файлов, загружая другие вредоносные файлы по HTTP.
  • Вредоносные скрипты, размещаемые на атакующих сайтах, активируются пользователями уязвимых браузеров, используя эти уязвимости для заражения компьютера пользователя.
  • Зараженные сайты являются удобным механизмом расширения масштабов воздействия вредоносного кода.
  • Спам-сообщения и сайты-приманки используются для того, чтобы обманом заставить пользователя запустить вредоносный код.
  • Вредоносные программы могут вести перенаправление полезного трафика. Увеличение объемов интернет-трафика сайта путем перенаправления пользователей может использоваться для зарабатывания денег с помощью партнерского маркетинга.

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

Использование порнографии в качестве приманки можно продемонстрировать на примере семейства троянов для платформы Windows, известного как Zlob. Используемый им механизм установки подразумевает посещение различных веб-сайтов, на которых предлагается порнографический веб-контент. При попытке доступа к определенному контенту (обычно привлекательному порноролику) пользователь сталкивается с сообщением об ошибке. Щелкнув ссылку, чтобы установить отсутствующий видеокодек, пользователь на самом деле загружает подложный установочный пакет с другого сайта, специально созданного для атаки. При запуске пакета устанавливаются вредоносные компоненты Zlob, в результате чего компьютер клиента заражается.

Использование поисковых интернет-систем при выявлении потенциальных целей особенно актуально в случаях, когда атаке подвергается сам веб-ресурс, будь то сайт или отдельное веб-приложение. Данная техника используется в целом ряде экземпляров вредоносного ПО, наиболее известным из которых является Perl/Santy - червь, применяющий поисковую систему Google для выявления новых жертв, использующих определенное форумное интернет-приложение. Если раньше хакеры использовали для поиска уязвимых компьютеров в сети специализированные скрытные средства, то теперь подходящие для атаки мишени можно находить с помощью поисковых систем. Предположим, что в популярном приложении для ведения форума или блога найдена уязвимость. Злоумышленники могут использовать поисковые системы для выявления сайтов, на которых имеются страницы, создаваемые популярным приложением (например, для поддержки форума или блога), имеющим уязвимость, формируя список потенциальных жертв.

Вредоносное ПО может размещаться на самых разных сайтах. Хакеры могут использовать бесплатные службы веб-хостинга, создавать новые сайты, специально предназначенные для атаки, а также захватывать существующие сайты, превращая их в базу для атаки. В большинстве случаев для заражения жертв используются скрипты (обычно на JavaScript). Так же, как обычные скрипты зачастую опрашивают клиентский браузер, чтобы обеспечить корректное отображение страницы, вредоносные скрипты могут запрашивать браузер, чтобы загрузить подходящий эксплойт. В таких атаках обычно используется перебор списка известных эксплойтов, в ходе которого ищется тот эксплойт, от которого клиент не защищен.

Скомпрометированные сайты

Пользователи подключаются к сайтам для использования предоставляемых ими услуг (от интернет-карт и новостей до прогнозов погоды), позволяя своим браузерам соответствующим образом отображать страницы. Пользователей обычно призывают вести списки надежных сайтов, чтобы браузер можно было настроить в соответствии с уровнем надежности просматриваемого сайта. Таким образом пользователи могут включать в браузерах также вещи, как скрипты, ActiveX и Java, если они необходимы для просмотра конкретного сайта. Сама по себе идея применения более строгих правил к разрешенному контенту, поступающему из ненадежной области, основана на разумных принципах.

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

Методы, основанные на использовании тега <IFRAME>

Язык HTML предоставляет множество удобных способов загрузки дополнительного контента. Чаще всего на скомпрометированных сайтах используется метод с применением тега <IFRAME> , который позволяет незаметно загрузить на страницу дополнительный контент. Этот тег широко используется для обычной разметки на многих веб-сайтах. Компрометация считавшегося надежным сайта с помощью этого метода весьма удобна для создателей вредоносного ПО, поскольку для привлечения пользователей на сайт не требуется применение социальной инженерии, а для загрузки вредоносного контента не нужны действия пользователя. Тег <IFRAME> поддерживает несколько атрибутов. Чаще всего в атаках используются атрибуты ширины и высоты, с помощью которых можно задавать размер фрейма на странице, куда загружается контент. Чтобы сделать компрометацию незаметной для пользователя, в большинстве вредоносных тегов <IFRAME> задаются весьма малые значения для длины и ширины (0-10 пикселей). Подобные теги приводят к созданию на странице множества мелких полей, которые могут стать весьма заметны в случае ее многократного заражения.

Аналогичный результат обычно достигается путем компрометации веб-страницы с помощью вредоносного скрипта, который просто вписывает тег <IFRAME> в страницу при ее просмотре.

Теоретически после обхода системы безопасности сайта и получения удаленного доступа на скомпрометированном сервере могут размещаться все компоненты, необходимые для атаки. Измененные страницы могут запускать вредоносные скрипты и устанавливать вредоносное ПО, размещаемое на том же сервере. Однако, во-первых, перенаправление скомпрометированных сайтов на единый атакующий сайт предоставляет хакеру единый пункт управления атакой. Во-вторых, добавление небольших скриптов или тегов на страницы скомпрометированного сайта менее заметно, чем загрузка крупных скриптов и двоичных файлов. Помимо видимых признаков многократного заражения сайта исходный код сайта также зачастую будет содержать соответствующие признаки. Часто в нем можно увидеть несколько тегов <IFRAME> или вредоносных скриптов, зачастую обрамленных специфичными маркерами (HTML-комментариями).

Clickjacking

Clickjacking (кража кликов) является вредоносной технологией обмана пользователей WWW с целью получения конфиденциальной информации или осуществления перехвата управления машиной путем перехода пользователя по ссылке на веб-странице, не вызывающей подозрений у пользователя. Такая атака реализуется в форме кода или сценария, исполняемого без ведома пользователя.

Вариант реализация атаки может быть следующим: злонамеренный сайт A содержит в себе HTML элемент IFRAME, с адресом сайта B, к которому пользователь имеет доступ на основе авторизационных данных Cookie. Сайт A перекрывает страницу с сайта B таким образом, чтобы оставить видимым конкретный элемент, например, кнопку "Удалить аккаунт", "Добавить друга" и т.д. Сайт A может иметь такой интерфейс, который позволял бы рассматривать элемент с сайта B, как часть сайта A, побуждая пользователя нажать на него. Тем самым пользователь подвергается опасности совершения абсолютно непредполагаемых им действий, который выгодны злоумышленнику. Добиться такого "перекрывания" интерфейса другого сайта можно с помощью метода CSS Overlay.

Вариант атаки типа Clickjacking, известный также как UI Redressing (фальсификация идентичности пользователя), возможна благодаря выполнению нестандартных действий веб-страницей, не вызывающей подозрений у пользователя. Такая страница вынуждает пользователя выполнить нежелательные действия при активировании им замаскированной ссылки. На такой странице-ловушке злоумышленник помещает набор фальшивых кнопок, затем загружает поверх предыдущей другую страницу в виде прозрачного слоя. Пользователь думает, что он нажимает на видимую кнопку, в то время как действия выполняются на скрытой странице. В результате пользователь выполняет не предполагавшиеся им действия. Что важно, практически невозможно отследить такие операции, так как пользователь был аутентифицирован совершенно на другой странице. Следует отметить, что реализации такой атаки основана на использовании HTML элемента IFRAME.

Простым средством противодействия является использование JavaScript, блокирующего использование HTML-фреймов. Но в последнее время разрабатываются версии Clickjacking, которые не требует фреймов.

XML-бомба

XML-бомба - это XML-документ, который содержит:

  • слишком много байт
  • слишком много символов
  • слишком большую глубину вложений
  • слишком много элементов
  • слишком много дочерних элементов
  • слишком много атрибутов
  • слишком много имен
  • слишком длинные имена, префиксы, значения элементов
  • рекурсивное вложение элементов
  • слишком много открывающих и закрывающих тэгов (т.е. слишком много стековых операций)

Когда XML-парсер пытается обработать такой документ, объем внутренних данных парсера растет экспоненциально, что приводит к сбою в работе веб-сайта или даже интернет-провайдера. По-сути, данный вид атаки является разновидностью DoS (denial-of-service) атаки.

CSRF

CSRF (Cross-site request forgery) атака, известная также как "атака одного клика", основана на исполнении веб-сайтом неавторизованных команд, исходящих от пользователя, которому веб-сайт доверяет.

Атака может быть реализована путем включения ссылки или сценария в страницу, с которой происходит переход на сайт, считающий, что пользователь прошел авторизацию. Например, Боб может просматривать форум и увидеть запись, оставленную Джоном . Предположим, что Джон создал HTML элемент типа IMAGE, ссылающийся на сценарий, выполняющийся на веб-сайте банка, клиентом которого является Боб, например:

<img src="http://bank.example/withdraw?account=Bob&amount=1000000&for=John">

Если при этом банк Боба сохраняет аутентификационную информацию в cookie, и срок действия cookie еще не истек, тогда попытка браузера Боба загрузить это "изображение" приведет к перемещению денег со счета Боба на счет Джона, путем авторизации данной транзакции без ведома Боба.

Особенностями общими для всех атак типа CSRF являются следующие:

  • вовлекаются сайты, которые основаны на идентификации пользователей
  • используется доверие сайта, на основе идентификации
  • браузер пользователя обманным способом вынуждают отправить HTTP-запрос на целевой сайт
  • использование HTTP-запросов с побочными эффектами

Риску подвергаются веб-приложения, которые выполняют действия, основанные на данных от доверяемых или авторизованных пользователей без требования от пользователя подтвердить конкретное действие. Пользователь, который авторизуется с помощью cookie его веб-браузера может невольно направить HTTP-запрос на сайт, который доверяет этому пользователю, вызвав тем самым нежелательные действия.

CSRF атаки с использованием элемента IMAGE часто используются в интернет-форумах, в которых пользователям разрешено оставлять изображения, но не JavaScript-сценарии.

Использование фальсификации заголовков запросов

Adobe Flash позволяет посылать заголовки HTTP-запросов из сценариев, использующих Flash Action Script. Возможность для злоумышленников заставить браузер жертвы посылать HTTP-запросы третьей стороне имеет серьезные последствия для безопасности.

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

Черные ходы в медиа-файлах

Использование сценарных возможностей одного приложения для реализации уязвимости в другом достаточно широко используется в Web. Потенциально это может даже привести к выявлению черных ходов в pdf-файлах, поскольку pdf-файлы могут содержать в себе JavaScript сценарии. В последнее время стала рассматриваться возможность обнаружения черных ходов в MP3-файлах.

Сигнатурный анализ

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

Сигнатурный анализ вряд ли сможет сегодня предотвратить вторжение, но может составить список клиентов с "дурной" репутацией, доступ которых следует ограничить.

Сегодня должен контролироваться весь не только внешний трафик, но внутренний трафик на предмет содержания вредоносных кодов. Современные системы противодействия вредоносным кодам могут включать в себя подсистемы фильтрации cookie и заголовков.

Меры по защите от интернет-атак

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

Проверка контента на интернет-шлюзе позволяет обеспечить дополнительный уровень защиты пользователей с помощью антивирусных программ. Проверка контента и фильтрация URL-адресов превосходно дополняют друг друга, обеспечивая защиту при изменении источника и метода атаки.

В веб-приложениях также обычно применяется какая-либо форма классификации URL-адресов. При этом запросы к заведомо вредоносным адресам или доменам могут блокироваться вне зависимости от того, был ли обнаружен вредоносный контент. Безусловно, это полезно с учетом того, что хакеры активно используют автоматизацию для постоянного изменения угроз с целью избежать обнаружения. Успех блокирования запросов к заведомо вредоносным доменам зависит от своевременного обновления списка подобных сайтов. Эффективность применения такого списка определяется рядом факторов, в числе которых:

  • Релевантность данных. Сбор необходимой информации о вредоносных интернет-программах для выявления новых атак должен производиться максимально быстро. Системы должны иметь глобальный охват. В таких решениях могут использоваться автоматические интернет-боты или совместная работа с партнерами, позволяющая собрать максимальный объем данных об интернет-угрозах.
  • Серверная поддержка. Для обработки поступающих данных о URL-адресах, проверки контента и оперативной публикации необходимых данных, используемых соответствующими продуктами, требуются сложные системы обработки и публикации. Такие системы должны быть способны отслеживать угрозы и вести анализ вредоносных интернет-программ в реальном времени, гарантируя выявление всех используемых в атаке файлов и блокирование всех задействованных URL-адресов.
  • Фильтрация URL-адресов также может использоваться для управления типами сайтов, которые пользователям разрешается посещать. Сайты, относящиеся к порнографическим, игровым или развлекательным, могут быть закрыты в пределах организации (поскольку они опасны или мешают работе). Точность классификационных данных определяет, насколько успешной окажется фильтрация URL-адресов. По этой причине в некоторых продуктах по лицензии используются данные от сторонних компаний, что повышает их способность к классификации URL-адресов.

Одним из главных и безусловных требований является своевременное обновление всех системных и прикладных программ.

Браузеры (в частности, Internet Explorer) и веб-серверы довольно часто становятся объектами атак. Cвязано это с тем, что они являются широко распространенными и достаточно сложными программами, которые пользователи не обновляют своевременно. Уязвимость веб-сервера возрастает, когда он предоставляет хостинг для размещения десятков, а иногда и тысяч, веб-серверов клиентов. Особую угрозу представляют взломанные машины, которые превращены в прокси-серверы. Это позволяет злоумышленнику замаскировать свою активность.

Так как некоторые сайты нельзя просмотреть, если запретить выполнение JavaScript, Java-аплетов, .NET-приложений, Flash или ActiveX, разрешение работы этих программ в рамках браузера на компьютере пользователя открывает двери для вторжений в случае наличия ошибок в кодах web-приложений, которые принимают ввод пользователей и используют cookies. Любые web-приложения, которые предполагают ввод текста в диалоговом режиме (блоги, wiki, комментарии и пр.) потенциально могут стать средством ввода вредоносного кода и последующей пересылки его другим пользователям.

Многих угроз можно избежать, если сформировать шлюз веб-сервера, который может:

  • Фильтровать URL, препятствуя заходам на скомпрометированные веб-узлы.
  • Выявлять вирусы, нежелательные программы, троянских коней, червей, и др.
  • Выявлять истинный тип файла, а не полагаться на расширение имени.
  • Обеспечивать работу SSL с высоким уровнем защиты
  • Блокировать доступ в случае, если вместо имени машины используется IP-адрес
  • Исполнять коды, только если они получены из проверенных URL
  • Автоматически и регулярно (до нескольких раз в день) обновлять базу данных вредоносных кодов, вирусов и т.д.
  • Блокировать работу, если число соединений слишком велико или, если загружаемый web-модуль оказался слишком велик.
  • Не доверять IP-адресам (web-объектов), присылаемым пользователями.

Наиболее эффективной может считаться многоуровневая защита:

  • Использование анти-SPAM фильтра с репутационным компонентом.
  • URL-фильтрация с включением отбора по репутации.
  • Сканирование на предмет наличия вредоносных JavaScript вставок в сообщение или приложение, а также в тексты откликов на веб-запросы.
  • Блокировка пересылки из серверов любых персональных данных.

Firewall (брандмауэр, межсетевой экран) - комплекс аппаратных или программных средств, осуществляющий контроль и фильтрацию проходящих через него сетевых пакетов на различных уровнях модели OSI в соответствии с заданными правилами.

Основной задачей Firewall'а является защита компьютерных сетей или отдельных узлов от несанкционированного доступа. Также Firewall'ы часто называют фильтрами, так как их основная задача - не пропускать (фильтровать) пакеты, не подходящие под критерии, определённые в конфигурации.

Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Галина Башкирова
Галина Башкирова

Здравствуйте, недавно закончила курс по проф веб программиованию, мне прислали методические указания с примерами тем, однако темы там для специальности 

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам