Исследование безопасности протокола http

ИССЛЕДОВАНИЕ БЕЗОПАСНОСТИ ПРОТОКОЛА HTTP

А.Е. Изюмов

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

Введение

HTTP (Hyper Text Transfer Protocol) протокол впервые был зафиксирован в RFC (Request For Comments - RFC 1945) в 1996 году, но в то же время его начали использовать примерно с 1993 года. Этот протокол был разработан для поддержки отображения разнообразной информации посредством стандартного клиентского интерфейса. Его способность динамично взаимодействовать с информационным содержимым в пределах HTTP сессии привела к созданию множества мультимедиа приложений, скриптов и программ, использующих HTTP протокол в качестве удобного инструмента для управления и передачи данных. Вследствие его широкой распространенности он довольно часто подвергается атакам. Так, например, по данным сайта SANS Institute's Internet Storm Center (Incidents.org), занимающегося вопросами интернет-безопасности и проблемами обнаружения атак, 80 порт (порт протокола HTTP) последние пять лет входит в пятерку наиболее атакуемых портов.

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

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

Уязвимости протокола HTTP

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

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

Атаки на протокол HTTP

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

Атакующий может получить от веб-сервера следующие типы информации:

• информация об учетных записях пользователей;

• коммерческая информация;

• информация о хосте (сервер или клиент).

Взлом учетных записей пользователей может привести к получению доступа и привилегий к другим ресурсам. Например, взлом учетной записи домена NT/2000, свя-

занной с веб-сервером, может открыть доступ к ресурсам домена, если сервер имеет с ним доверительные отношения.

Базовая авторизация доступа. Используемое кодирование Base-64 вместе со слабым способом авторизации дает возможность применить атаку прямым перебором или с помощью словаря (см. рис. 1).

Доверительные

отношения между доменами

(3) Хакер устанавливает соединение ( использую перехваченые хеши) с сервером состоящим в домене

Хакер взламывает перехваченные NT/NTLM хеши с использованием утилит

Рис. 1. Схема атаки на механизм базовой авторизации

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

Уязвимости методов протокола HTTP. Методы POST, PUT позволяют вносить изменения напрямую в файловой системе сервера на уровне привилегий файловой системы, назначенных веб-серверу. Метод GET также дает возможность проникать на сервер, особенно при использовании уязвимостей приложений и скриптов на веб-сервере.

Уязвимости кэша HTTP

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

• атаки вида Cache Poisoning (компрометирование кэша);

• атаки вида Man-in-the-middle (перехват и подмена данных);

• несанкционированный доступ к данным кэша или его мониторинг;

• отказ в обслуживании (DoS).

Атаки на приложения

Атаки вида переполнение буфера (привилегированный доступ к серверу, отказ в обслуживании) и Directory Traversal направлены на использование уязвимостей при интерпретации веб-сервером закодированных последовательностей передаваемых данных от клиентского браузера. Запустить команду cmd.exe из поддиректории сервера IIS можно по коду http://target/msadc/..%c0%af../..%c0%af../..%c0%af. ./wint/system32/cmd.exe?/c+dir, где 7..%c0%af../,M обзначает "../" в кодировке Unicode.

Атаки типа отказ в обслуживании (DoS) на уровне приложений направлены на использование уязвимостей определенных версий сервера HTTP с целью уменьшения доступных серверных ресурсов или остановки сервера.

Атаки на доверительную модель HTTP

Атаки на HTTP сессию (Session ID Hacking). Протокол HTTP не позволяет сохранять информацию о состоянии между сессиями. Поэтому веб-сайты используют такие механизма сохранения состояния, как cookies, динамические или статические поля URL и скрытые теги для контроля над сессиями. Большинство из этих механизмов обеспечивает авторизацию и аутентификацию пользователя и могут быть использованы при проведении атак подмены (Session ID Hijacking - см. рис. 2) или повтора сессии (Session Replay).

(3) Хакер устанавливает новое соединение с HTTP сервером ( используя захваченные переменные сессии) и получает доступ к серверу

Рис. 2. Схема атаки Session ID Hijacking

HTTP Spoofing, HTTP Redirection. Данные атаки используются для перенаправления HTTP клиентов на сайт злоумышленника с целью перехвата информации или для совершения взлома сервера.

Атаки вида Man-in-the-middle (перехват и подмена данных). Данный вид атаки включает в себя перехват и изменения пакетов данных с целью внедрения системы злоумышленника в TCP сессию.

Стратегия защиты

Рассмотрим предлагаемый комплекс мер обеспечения безопасности протокола HTTP. Настройка кэша (или кэширующего прокси). Прежде всего, для ускорения доступа к статическому контенту, следует использовать «серверный кэш», т.е. расположить сервер кэша перед веб-сервером. Настройки безопасности кэша включают в себя следующее:

• Управление доступом и авторизацией. Доступ может предоставляться на основе групп, имен пользователей, IP-адресов, HTTP-методов.

• Фильтрация URL. Ограничение доступа к определенным ресурсам, а также для защиты кэша путем ограничения типов URL и содержимого для кэширования.

• Фильтрация контента. Защита содержимого кэша путем фильтрации типов контента для кэширования, например по MIME-типу или расширению файлов.

• Время жжизни, обновления и устаревания кэша. Контроль времени кэширования для защиты против атак cache poisoning.

• Ограничения на размер файлов в кэше.

• Распределенное кэширование. Обеспечивает лучшую устойчивость при DoS атаках.

• Фильтрация заголовков. Кэш-прокси могут подавлять передачу некоторых HTTP заголовков с целью защиты серверного контента и от сбора информации о сервере.

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

Отключение уязвимых методов HTTP. Помогает снизить вероятность компрометации веб-сервера.

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

Внедрение авторизации доступа HTTP на основе дайджестов. Данный вид авторизации предоставляет лучшую безопасность, нежели базовая авторизация. Поддерживается с версии HTTP 1.1.

Выравнивание сетевой нагрузки и резервные сервера. Устройства выравнивания сетевой нагрузки могут обеспечить защиту от HTTP атак на отказ в обслуживании (см. рис. 3).

f Устройство типа 1 - Устройство распределения сетевых нагрузок

Группа с

Устройство

Группа серв

Устройство типа 1

Router

Основное Устройство типа 1

Firewall

Firewall

HTTP клиенты

Рис. 3. Схема сети с распределенной нагрузкой

Мониторинг сети и сервера HTTP, обнаружение атак. Устройства мониторинга

веб-серверов можно разделить на следующие категории.

• Встроенные средства мониторинга и измерений. Администраторы могут использовать логи операционной системы и веб-сервера для отслеживания данных об авторизации, статистики соединений, запрашиваемых объектов, потребления ресурсов сервера.

• Системы обнаружения атак (IDS) - на уровне сети и на уровне хоста. IDS хостов могут использоваться для мониторинга файлов лога, ресурсов, файловой системы на случай отказа в обслуживании (DoS) или проникновения на сервер. Сетевые IDS могут отслеживать использование сетевых ресурсов или проверять сетевой трафик на предмет злоумышленного кода или попытку взлома HTTP сервера.

Следует обратить внимание на следующие атаки.

• Прослушивание веб-трафика. Злоумышленник, перехватывающий трафик, может быть выявлен с использованием соответствующей утилиты.

• Взлом учетных записей пользователей. Данный вид атаки может быть обнаружен при многократных попытках получить доступ к системе под одним и тем же логином или при попытке перехвата идентификаторов авторизации сессии.

• Отказ в обслуживании (DoS). Анализ показателей производительности может указать на возможную попытку DoS атаки или на нехватку ресурсов в системе.

• Атаки переполнением буфера. Могут быть обнаружены при нехватке системных ресурсов, или нестабильной работе системы. Администраторы должны отслеживать такие же показатели, как и для DoS атак.

• Атаки на сессию и на "обход" директорий. Данные атаки могут быть обнаружены IDS хостов (HIDS - Host IDS) или сетевыми IDS (NIDS - Network IDS) с помощью сигнатур для известных уязвимостей.

Системные заплатки и обновления безопасности.

Безопасность финансовых транзакций. Помимо TLS (Transport Layer Security) и SSL (Secure Socket Layer), существуют и другие технологии обеспечения безопасности финансовых транзакций. Наиболее известной можно считать SET (Secure Electronic Transaction).

Контроль доступа со стороны сервера включает следующие настройки:

• Контроль доступа и авторизации, включающий в себя контроль доступа к определенным URI (Unified Request Identificator), виртуальным серверам и хостам.

• Контроль доступа к контенту, который может определять доступ к определенному скрипту, запускаемому файлу или файловому содержимому.

• Контроль доступа к URI, ограничивающий доступ к определенным URI на вебсервере.

Настройка системы и сервисов для повышения безопасности. При настройке HTTP сервера администраторам нужно обратить внимание на следующее.

• Контроль доступа для файловой системы, веб-директорий, CGI (Common Gateway Interface) директорий, файлов лога, и индивидуальных скриптов и исходных файлов.

• Запуск HTTP сервера с правами пользователя. Что ограничивает возможности доступа к файловой и операционным системам.

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

• Отключение неиспользуемых скриптов, и компонентов для уменьшения возможностей для проникновения.

Использование TLS или SSL для повышения защищенности передаваемых данных.

Заключение

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

Литература

1. HTTP Authentication: Basic and Digest Access Authentication

2. Hypertext Transfer Protocol - HTTP/1.1 (RFC 2617, J. Franks, P. Hallam-Baker,J. Hostetler, S. Lawrence, P. Leach, A. Luotonen, L. Stewart, June 1999).

3. Information Security Management Handbook, 5th Edition, Harold F. Tipton, Micki Krause (Auerbach Publications, ISBN: 0-8493-1997-8).

4. Internet security : cryptographic principles, algorithms, and protocols, Man Young Rhee ( Wiley, ISBN 0-470-85285-2).

5. Web Security (A Stepby-Step Reference Guide), Lincoln D. Stein (Addison Wesley, ISBN 0-201-63489-9).

6. Web Hacking: Attacks and Defense, Stuart McClure, Saumil Shah, Shreeraj Shah (Addison Wesley, ISBN 0-201-76176-9).