В научном исследовании представлены результаты построения модели среды тестирования современных интернет-приложений. Актуальность построения модели обуславливается необходимостью комплексного подхода к решению задачи тестирования применительно к среде тестирования на основе представленной модели. Четкое определение компонентов приложения дает возможность более эффективно декомпозировать процесс обнаружения и локализация возможных векторов воздействия. Особое внимание автором уделено структурной модели тестовой сети, роли и месту часто используемых компонентов защиты на основе межсетевых экранов безопасности веб-приложений, а также рассмотрению механизмов детектирования уязвимостей и их локации относительно модели комплексной среды тестирования.
Таким образом, построение модели позволяет определить структурные компоненты сетевой инфраструктуры, необходимые для функционирования приложения, и вспомогательные компоненты, которые будут использоваться в процессе тестирования методом фаззинга, что особенно важно при оценке степени критичности найденной уязвимости и определения ее приоритета при ее закрытии.
Ключевые слова: межсетевой экран безопасности веб-приложений, фильтрация, веб-технологии, http запросы, веб-сервер, информационные технологии.
Интернет-технологии стремительно развивающийся компонент информационного пространства. Простота, функциональность и доступность — одни из многих факторов, которые позволили им занять особое место среди элементов бизнес-систем, различных социальных сетей, а также направлений, связанных с электронной коммерцией и банковским сектором. В тоже время все это неизбежно приводит к росту атак с целью получения доступа к активам компаний, личным данным пользователей и другой конфиденциальной информации. В связи с этим в рамках решения задачи безопасности приложений, предполагается использовать методологический аппарат различных тестов, базирующихся на фаззинге, задача которых сводится к обнаружению возможных входных векторов вредоносного воздействия. Необходимо отметить, что частичное тестирование не может помочь в решении задачи максимального охвата уязвимостей, так как дает лишь отрывочные результаты и не может дать целостную картину защищенности приложения — затрагивает уязвимости лишь одной из многочисленных групп их классификации. Поэтому считаем, что решение задачи комплексного тестирования становится первоочередной задачей любой компании, разрабатывающей или эксплуатирующей программные продукты или использующей интернет-технологии. Для комплексного тестирования в рамках исследования предполагается тестирование с помощью технологии фаззинга, однако для этого автором предлагается разработка некоторой тестовой подсистемы с использованием метода фаззинга на основе черного и серого ящика.
Процесс тестирования является многогранным механизмом поиска, анализа и локализации уязвимостей. Существует множество подходов, применяемых в тестировании, обуславливаемых той или иной ситуацией. Однако применительно к веб-приложениям, когда отсутствует или имеется частичный доступ к программным компонентам, исполняем файлам или исходному коду, это обусловлено тем, что они хранятся на удаленном сервере, а пользователь взаимодействует с ним посредством HTTP запросов, применение популярных алгоритмов тестирования становится неэффектным. Для устранения этих недостатков рационально использовать методологическую основу фаззинга [2, 4]. В рамках тестирования интернет приложений рационально использовать методы черного и серого ящика. Однако при наличии исходного кода программы дополнительно можно использовать метод белого ящика, адаптированных к технологии фаззинга, с полной неизвестностью о тестируемом объекте (метод черного ящика) и с частичной известностью соответственно (метод серого ящика).
В рамках решения задачи комплексного тестирования необходимо построить среду тестирования, которая поможет эффективно оценить защищенность приложения. Классическое веб-приложение строится, как правило, на архитектуре клиент-сервер, где в качестве сервера выступает веб-сервер и сервер-приложений, наиболее популярные из которых Apache, Nginx, Tomcat, IIS, а в роли клиента веб-браузер. Помимо веб-сервера и сервера приложений серверная инфраструктура может быть расширена сервером баз данных, используемым для хранения, как личных данных пользователей, так и корпоративной информации организации. Для защиты от атак на проникновения (penetration testing) предполагается наличие межсетевого экрана безопасности веб-приложений (WAF). В данном контексте по WAF будем понимать программные компонент (модуль), работающий на прикладном уровне, имеющий полноценную интеграцию с веб-сервером и обеспечивающий анализ, и фильтрацию входных запросов на предмет содержания в них опасных параметров и фрагментов программного кода. Обобщенная структура тестовой сети представлена на рисунке 1.
Рис. 1. Структура тестовой сети анализа уязвимостей
Анализируя вышеприведенный рисунок видно, что для тестирования инъекций, в частности SQL-инъекций [1, 6] присутствует реляционная СУБД типа MySQL и PostgreSQL. Для анализа уязвимых компонентов предполагается использования баз данных уязвимостей, таких как National Vulnerability Database (NVD) от NIST и Common Weakness Enumeration (CVE) от компании MITRE, а также базы эксплойтов Exploit DB, для анализа защищённости приложения базирующихся на популярных фреймворках, системах управления сайтами и других программных модулях. При этом CVE и NVD могут быть использованы лишь в подсистемы тестирования отвечающей лишь за определения статуса — уязвим определенный компонент веб-приложений или нет. В противопоставления этому Exploit DB дополнительно к информации об уязвимом компоненте содержит информацию об уязвимых входных параметрах, возможные шаблоны детектирования уязвимостей, а также фрагменты программного кода, необходимые для эксплуатации определенной уязвимости. В рамках решения задачи построения модели тестовой сети, под сервером эксплуатации XSS уязвимостей будем понимать некоторый веб-сервер, с набором скриптов javascript, позволяющих при удаленной загрузки в веб-браузер выполнять определенный набор специфических задач, к примеры получения скриншотов страницы веб-браузера, получения карты внутренней сети компьютеров, в которую входит компьютер в запущенным веб-браузером, перенаправлять клиента на страницы, позволяющие загрузить и исполнить вредоносные программные фрагменты.
Также для тестирования XSS [3, 5] используются установленные веб-браузеры такие как Firefox, Internet Explorer и Google Chrome, позволяющие максимально оценить вероятность срабатывания той или иной XSS внутри браузера пользователя, к примеры за счет использования javascript функции alert. Однако в рамках тестирования XSS необходимо также выделить сервер эксплуатации XSS уязвимостей. Для имитации внедрения механизмов защиты предполагается наличие межсетевого экрана WAF на базе проекта с исходным кодом modsecurity, используя его в связке в веб-сервером Apache. В рамках исследования полагается проведения тестирования как с выключенным, так и с включенным modsecurity, с целью проверки механизмов обхода межсетевых экранов безопасности, а также накопления статистической информации, о динамике появления уязвимостей, как для единичного приложения, так и для группы приложений. В качестве системы индикации используется многогранная характеристика, отражающая специфику тестирования конкретной уязвимости, в случае XSS наличие всплывающего окна порождаемого функцией alert, применительно к инъекциям — сравнения путем применения регулярных выражений, сравнении времени выполнения с вредоносной нагрузкой и без нее, а также раскрытие информации внутри ошибок. Компьютер тестировщика используется для запуска тестов на основе фаззинга, а также взаимодействия со вспомогательными компонентами подсистемы тестирования — XSS сервер, базы данных уязвимостей и эксплойтов, обработки результатов тестирования и детально отображения информации о выявленных уязвимостях, а также возможностью детального анализа определенных входных параметров на предмет оценки степени критичности и важности уязвимости, которая может быть получена за счет внедрения вредоносных данных в анализируемый входной параметр приложения.
Таким образом, предложенная нами модель тестовой сети в полной мере отражает требования, предъявляемые к системы комплексного тестирования, позволяющей всесторонне осуществлять анализ и выявления наиболее известных уязвимостей интернет-приложений, эффективно оценивать возможность применения как встроенных, так и дополнительно устанавливаемых компонентов защиты с целью тестирования всевозможных методик обхода и преодоления данных механизмов, а также осуществлять прогнозирования наличия и появления определенных уязвимостей в будущем за счет накопления статистической и вероятностной информации. При этом модель системы тестирования может функционировать как в рамках глобальной сети интернет, что особенно важно для тестирования приложений, которые находятся на стадии активной эксплуатации, так и в локальной сети, в рамках предрелизного тестирования разрабатываемого веб-приложения, созданной с помощью систем виртуализации, таких как VMware или VirtialBox. Использования технологии фаззинга позволяет оценить не только факт присутствия конкретной уязвимости внутри веб-приложения, но также дает возможность оценить последствия, выявить доступ к каким модулям приложения или функциям языка программирования могут быть получены в результате эксплуатации уязвимости. Это позволит аналитикам спрогнозировать возможные риски и ущерб, который может быть получен в результате раскрытия уязвимости, что в первую очередь важно для компаний использующий приложения в электронной коммерции, банковских и биллинговых системах. При наличии исходного кода приложения, используя базы данных уязвимостей предложенная модель тестовой сети позволяет оценить и проанализировать набор сторонних модулей и компонентов, уже содержащие уязвимости для своевременного обновления и применения патчей.
Литература:
1. Азарнова Т. В. Исследование процесса фаззинга SQL-инъекций веб-приложений на основе динамической сети Байеса / Т. В. Азарнова, П. В. Полухин // Вестник ВГУ, серия: системный анализ и информационные технологии. — 2014. — № 1. — С. 120–129.
2. Азарнова Т. В. Расширение функциональных возможностей фаззинга веб-приложений на основе динамических сетей Байеса / Т. В. Азарнова, П. В. Полухин // Научно-техническая информация. Сер. 2. Информ. процессы и системы. — 2014. — № 9. — С. 12–19.
3. Полухин П. В. Интеграция динамических байесовских сетей в процесс тестирования веб-приложений для выявления уязвимостей межсайтингового скриптинга / П. В. Полухин // Научное обозрение. — 2014. — № 9. — С. 414–422.
4. Godefroid P. Automating Software Testing Using Program Analysis / P. Godefroid, Peli de Halleux // IEEE SOFTWARE. — 2008. — P. 30–37.
5. Harper A. Gray Hat Hacking. The Ethnical Hacker’s Handbook / A. Harper, H. Harris, J. Ness, C. Eagle, J. Lenkey, T. Williams. — US: Mc Graw Hill. — 2011. — 693 p.
6. Oehlert P. Violating Assumotions with Fuzzing / P. Oehlert. // IEEE Security & Privace. — 2005. — № 2. — P. 58–67.