Перетятько
Иван
Украина,
г. Днепропетровск, Национальный горный университет
Классификация угроз безопасности
Web-приложений под управлением CMS
Данная классификация представляет собой попытку
собрать воедино и упорядочить угрозы безопасности Web-сайтов, построенных на
основе систем управления содержимым (CMS). Это
даёт возможность разработчикам приложений, специалистам в области безопасности,
производителям программных продуктов и аудиторам использовать единый язык при
своем взаимодействии. Данная классификация объединяет известные классы атак,
которые представляют угрозы для Web-приложений. Классы организованы в
иерархическую структуру.
Классы атак
1.
Аутентификация
(Authentication)
Атаки
направленные на используемые Web-приложением методы проверки идентификатора
пользователя, службы или приложения. Аутентификация использует как минимум один
из трех механизмов (факторов): "что-то, что мы имеем", "что-то,
что мы знаем" или "что-то, что мы есть". В этом разделе
описываются атаки, направленные на обход или эксплуатацию уязвимостей в
механизмах реализации аутентификации Web-серверов.
1.
Подбор (Brute Force)
автоматизированный процесс проб и ошибок, использующийся для того, чтобы
угадать имя пользователя, пароль, номер кредитной карточки, ключ шифрования и
т.д.
2.
Недостаточная
аутентификация (Insufficient Authentication) эта уязвимость возникает, когда
Web-сервер позволяет атакующему получать доступ к важной информации или
функциям сервера без должной аутентификации.
3.
Небезопасное
восстановление паролей (Weak Password Recovery Validation) эта уязвимость
возникает, когда Web-сервер позволяет атакующему несанкционированно получать,
модифицировать или восстанавливать пароли других пользователей.
2. Авторизация (Authorization)
Атаки,
направленные на методы, которые используются Web-сервером для определения того,
имеет ли пользователь, служба или приложение необходимые для совершения
действия разрешения. Многие Web-сайты разрешают только определенным
пользователям получать доступ к некоторому содержимому или функциям приложения.
Доступ другим пользователям должен быть ограничен. Используя различные техники,
злоумышленник может повысить свои привилегии и получить доступ к защищенным
ресурсам.
1.
Предсказуемое значение
идентификатора сессии (Credential/Session Prediction) предсказуемое значение
идентификатора сессии позволяет перехватывать сессии других пользователей
2.
Недостаточная
авторизация (Insufficient Authorization) недостаточная авторизация возникает,
когда Web-сервер позволяет атакующему получать доступ к важной информации или
функциям, доступ к которым должен быть ограничен
3.
Отсутствие таймаута
сессии (Insufficient Session Expiration) в случае если для идентификатора
сессии или учетных данных не предусмотрен таймаут или его значение слишком
велико, злоумышленник может воспользоваться старыми данными для авторизации
4.
Фиксация сессии (Session
Fixation) используя данный класс атак, злоумышленник присваивает идентификатору
сессии пользователя заданное значение
3.
Атаки на клиентов (Client-side
Attacks)
Атаки
на пользователей Web-сервера. Во время посещения сайта, между пользователем и
севером устанавливаются доверительные отношения, как в технологическом, так и в
психологическом аспектах. Пользователь ожидает, что сайт предоставит ему
легитимное содержимое. Кроме того, пользователь не ожидает атак со стороны
сайта. Эксплуатируя это доверие, злоумышленник может использовать различные
методы для проведения атак на клиентов сервера.
1.
Подмена содержимого
(Content Spoofing) используя эту технику, злоумышленник заставляет пользователя
поверить, что страницы сгенерированны Web-сервером, а не переданы из внешнего
источника.
2.
Межсайтовое выполнение
сценариев (Cross-site Scripting, XSS) наличие уязвимости Cross-site Scripting
позволяет атакующему передать серверу исполняемый код, который будет
перенаправлен браузеру пользователя.
3.
Расщепление HTTP-запроса
(HTTP Response Splitting) при использовании данной уязвимости злоумышленник
посылает серверу специальным образом сформированный запрос, ответ на который
интерпретируется целью атаки как два разных ответа.
4.
Выполнение кода
(Command Execution)
Атаки,
направленные на выполнение кода на Web-сервере. Все серверы используют данные,
преданные пользователем при обработке запросов. Часто эти данные используются
при составлении команд, применяемых для генерации динамического содержимого.
Если при разработке не учитываются требования безопасности, злоумышленник
получает возможность модифицировать исполняемые команды.
1.
Переполнение буфера
(Buffer Overflow) эксплуатация переполнения буфера позволяет злоумышленнику
изменить путь исполнения программы путем перезаписи данных в памяти системы.
2.
Атака на функции
форматирования строк (Format String Attack) при использовании этих атак путь
исполнения программы модифицируется методои перезаписи областей памяти с
помощью функций форматирования символьных переменных.
3.
Внедрение операторов
LDAP (LDAP Injection) атаки этого типа направлены на Web-серверы, создающие
запросы к службе LDAP на основе данных, вводимых пользователем.
4.
Выполнение команд ОС (OS
Commanding) атаки этого класса направлены на выполнение команд операционной
системы на Web-сервере путем манипуляции входными данными.
5.
Внедрение операторов SQL
(SQL Injection) эти атаки направлены на Web-серверы, создающие SQL запросы к
серверам СУБД на основе данных, вводимых пользователем.
6.
Внедрение серверных
сценариев (SSI Injection) атаки данного класса позволяют злоумышленнику
передать исполняемый код, который в дальнейшем будет выполнен на Web-сервере.
7.
Внедрение операторов
XPath (XPath Injection) эти атаки направлены на Web-серверы, создающие запросы
на языке XPath на основе данных, вводимых пользователем.
5.
Разглашение
информации (Information Disclosure)
Атаки
данного класса направлены на получение дополнительной информации о
Web-приложении. Используя эти уязвимости, злоумышленник может определить
используемые дистрибутивы ПО, номера версий клиента и сервера и установленные
обновления. В других случаях, в утекающей информации может содержаться
расположение временных файлов или резервных копий. Во многих случаях эти данные
не требуются для работы пользователя. Большинство серверов предоставляют доступ
к чрезмерному объему данных, однако необходимо минимизировать объем служебной
информации. Чем большими знаниями о приложении будет располагать злоумышленник,
тем легче ему будет скомпрометировать систему.
1.
Индексирование
директорий (Directory Indexing) атаки данного класса позволяют атакующему
получить информацию о наличии файлов в Web каталоге, которые недоступны при
обычной навигации по Web сайту.
2.
Идентификация приложений
(Web Server/Application Fingerprinting) определение версий приложений
используется злоумышленником для получения информации об используемых сервером
и клиентом операционных системах, Web-северах и браузерах.
3.
Утечка информации (Information
Leakage) эти уязвимости возникают в ситуациях, когда сервер публикует важную
информацию, например комментарии разработчиков или сообщения об ошибках,
которая может быть использована для компрометации системы.
4.
Обратный путь в
директориях (Path Traversal) данная техника атак направлена на получение
доступа к файлам, директориям и командам, находящимся вне основной директории
Web-сервера.
5.
Предсказуемое
расположение ресурсов (Predictable Resource Location) позволяет злоумышленнику
получить доступ к скрытым данным или функциональным возможностям.
6.
Логические атаки
(Logical Attacks)
Атаки
данного класса направлены на эксплуатацию функций приложения или логики его
функционирования. Логика приложения представляет собой ожидаемый процесс
функционирования программы при выполнении определенных действий. В качестве
примеров можно привести восстановление пролей, регистрацию учетных записей, ,
аукционные торги, транзакции в системах электронной коммерции. Приложение может
требовать от пользователя корректного выполнения нескольких последовательных
действий для выполнения определенной задачи. Злоумышленник может обойти или
использовать эти механизмы в своих целях.
1.
Злоупотребление
функциональными возможностями (Abuse of Functionality) данные атаки направлены
на использование функций Web-приложения с целью обхода механизмов разграничение
доступа.
2.
Отказ в обслуживании
(Denial of Service) данный класс атак направлен на нарушение доступности
Web-сервера.
3.
Недостаточное
противодействие автоматизации (Insufficient Anti-automation) эти уязвимости
возникают, в случае, если сервер позволяет автоматически выполнять операции,
которые должны проводиться вручную.
4.
Недостаточная проверка
процесса (Insufficient Process Validation) уязвимости этого класса возникают,
когда сервер недостаточно проверяет последовательность выполнения операций
приложения.
Литература:
1.
“Секреты хакеров Безопасность Web-приложений - готовые
решения”, издательство: Вильямс 2003 г.
2.
Классификация
угроз безопасности Web-приложений [В
Интернете]. — http://devilart.net/bezopasnost-135/6533-klassifikaciya-ugroz-bezopasnosti-web-prilozhenii.html.