Особенности проектирования и построения защищенных web-систем

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

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

В настоящее время в Украине эта деятельность осуществляется по трем направлениям:

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

Не затрагивая проблематику нормативно-правовой базы и организационных мероприятий, одним из аспектов безопасного информационного обмена является проектирование, построение и реализация защищенных WEB-систем. С развитием информационно-коммуникационных технологий, коммерческие и государственные организации все чаще

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

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

Всего в 2006 году было проведено 111 936 сканирований, в ходе которых было обнаружено 129 197 различных уязвимостей высокого и среднего уровня риска. Уязвимыми оказались 31 113 сайтов. Уязвимости низкой степени риска в данное исследование включены не были, в связи с низкой достоверностью обнаружения подобных ошибок в ходе полностью автоматического сканирования.

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

  1. Процесс аутентификации (Authentication).
  2. Процесс авторизации (Authorization).
  3. Атаки на клиентов (Client-side Attacks).
  4. Выполнение кода (Command Execution).
  5. Разглашение информации (Information Disclosure).
  6. Логические атаки (Logical Attacks).

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

Таблица 1

Распределение обнаруженных уязвимостей по различным классам

Распределение обнаруженных уязвимостей по различным классам

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

К этому классу следует также отнести недостаточную аутентификацию (Insufficient Authentication) и небезопасное восстановление паролей (Weak Password Recovery Validation).

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

К классу атак на клиентов относятся:

  • Подмена содержимого (Content Spoofing) Web-приложения;
  • Межсайтовое выполнение сценариев (Cross-site Scripting, XSS), позволяющее атакующему передать серверу исполняемый код, который будет перенаправлен браузеру пользователя.
  • Расщепление HTTP-запроса (HTTP Response Splitting). Класс выполнения кода (Command Execution) характерен:
  • Переполнением буфера (Buffer Overflow);
  • Атакой на функции форматирования строк (Format String Attack), т.е. путь исполнения программы модифицируется методом перезаписи областей памяти с помощью функций форматирования символьных переменных.
  • Внедрение операторов LDAP (LDAP Injection) — атаки этого типа направлены на Web-серверы, создающие запросы к службе LDAP на основе данных, вводимых пользователем.
  • Выполнение команд ОС (OS Commanding)для манипуляции входными данными.
  • Внедрение операторов SQL (SQL Injection), создающих SQL запросы к серверам СУБД на основе данных, вводимых пользователем.
  • Внедрение серверных сценариев (SSI Injection) для передачи исполняемого кода, который в дальнейшем будет выполнен на Web-сервере.
  • Внедрение операторов XPath (XPath Injection) для создания запросов на языке XPath на основе данных, вводимых пользователем.

Уязвимости, связанные с разглашением информации:

  • Индексирование директорий (Directory Indexing) — позволяет получить информацию о наличии файлов в Web-каталоге, которые недоступны при обычной навигации по Web-сайту.
  • Идентификация приложений (Web Server/Application Fingerprinting).
  • Утечка информации (Information Leakage).
  • Обратный путь в директориях (Path Traversal) — получение доступа к файлам, директориям и командам, находящимся вне основной директории Web-сервера.
  • Предсказуемое расположение скрытых ресурсов (Predictable Resource Location). В предложенной классификации можно выделить следующие логические атаки:
  • Злоупотребление функциональными возможностями (Abuse of Functionality) -данные атаки направлены на использование функций Web-приложения с целью обхода механизмов разграничения доступа.
  • Отказ в обслуживании (Denial of Service) — вид атак, направленный на нарушение доступности Web-сервера.
  • Недостаточное противодействие автоматизации (Insufficient Anti-automation), т. е. сервер позволяет автоматически выполнять операции, которые должны проводиться вручную.
  • Недостаточная проверка процесса последовательности выполнения операций приложения (Insufficient Process Validation).

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

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

  1. Составление схемы потоков данных и определение точек входа.
  2. Проведение моделирования угроз для web-приложения.
  3. Ввод допущения, что все данные, вводимые в систему, считаются злонамеренными. При этом, на этапе проектирования необходимо четко описать:
  • Тип данных в терминах используемого языка программирования;
  • Размер данных
  • Реакцию системы на ввод данных
  • Разработать критерии проверки данных как в контексте соответствия типу данных и его длине, так и в контексте бизнес логики приложения.
  • Описать реакцию системы на ввод не корректных данных
  1. В целях обеспечения безопасности данные, используемые для передачи между объектами бизнес логики приложения, также должны быть описаны и формализованы.
  2. Разработка алгоритмов или методов проверки целостности данных.
  3. Минимизация области системы, доступная для атак, с проведением анализа вероятности вторжения,
  4. Установка параметров безопасности, используемых в системе по умолчанию (например, доступ к системе по умолчанию блокируется),
  5. Использование эшелонированной обороны (при этом нельзя полагаться на защиту, предоставляемую другими частями системы).
  6. Составление четкого описание ресурсов, которые будут предоставляться WEB-сервисом и схему доступа к этим ресурсам. Схема должны включать в себя описание прав доступа к ресурсу как рабочего процесса WEB-приложения, так и внешних клиентов.
  7. Анализ и внедрение требуемой схемы аутентификации и авторизации.
  8. Разработка схемы аудита безопасности.
  9. Составление плана тестирование на проникновение (penetration testing)., с проведением тестирования на: возможность напрямую получить доступ к его данным, чтобы выявить проблемы до того, как это сделают другие. Проведение тестирования на работу приложения «на пределе», передавая ему некорректные или наиболее неподходящие данные. Кроме того, необходимо проверить приложение на прочность, использовав свои знания о его внутреннем устройстве. Хотя эти знания дают вам принципиальное преимущество перед типичными злоумышленниками, у вас появляется шанс обнаружить уязвимости, которые иначе бы таились глубоко в коде. Кроме того, для тестирования на проникновение существует довольно много готовых инструментальных средств.

Необходимо отметить, что корректность выполнения всех вышеописанных особенностей во многом определяет защищенность создаваемых приложений. Так согласно проведенным исследованиям суммарная вероятность обнаружения уязвимостей различной степени риска при глубоком анализе Web-приложений: высокая — 65 проц, средняя — 93 проц, низкая — 99 проц. То есть в 65 проц сайтов были обнаружены критичные уязвимости, и в 93 случаев из ста в программном обеспечении Web-приложения содержатся уязвимости средней степени риска.

На основании проведенного исследования можно сделать следующие выводы:

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

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.