Аннотация. В данной статье рассмотрены проблемы с применением современных технологий поиска ошибок в WEB-приложениях. Исследована технология Фаззинг для поиска ошибок и уязвимостей в программном обеспечении WEB-приложений.
Введение. WEB-приложения – это программные средства, предназначенные для автоматизированного выполнения действий на WEB-серверах.
WEB-сервер – это сервер, который принимает HTTP запросы от пользователей и выдает им ответы в виде HTML документов, страниц или сайтов.
Фреймворк – это программные продукты, упрощающие создание и поддержку технически сложных проектов.
Фаззинг – это процесс отсылки преднамеренно неправильных данных в исследуемый объект с целью вызвать ситуацию сбоя либо ошибку. Успех этой технологии измеряется результатами теста как поиск уязвимостей и их нахождение.
WEB-браузер – это программа, благодаря которой человек имеет доступ к WEB- страницам в глобальной сети интернет. Браузер должен иметь возможность для обращения к HTTP и путём обработки кода, предоставить пользователю понятную для него информацию.
WEB-сайт – это информационная единица в интернете, ресурс из WEB-страниц (документов), которые объединены общей темой и связаны между собой с помощью ссылок. Сайт регистрируется на одно лицо и обязательно привязан к конкретному домену, являющемуся его адресом. Сайт может состоять как из одной страницы, так и огромного количества. Каждая страница ресурса – это текстовый файл или его набор, написанный на специальном языке программирования (HTML, PHP,CSS и другие).
Онлайн-ритейл – это розничная продажа товаров потребителям с использованием интернета.
Фаззер – это программа, которая автоматически вводит случайные данные в программу и обнаруживает ошибки.
Методы. Глобальная система Интернет своей сетью объединила миллионы компьютеров пользователей с возможностью передачи и хранения информации. По оценкам международного союза электросвязи (МСЭ), в конце 2019 года 53,6 % населения мира, или 4,1 миллиарда человек, использовали Интернет, в котором действуют более миллиарда различных сайтов. Приведённые цифры говорят о том, что в мире разрабатывается множество различных WEB-приложений, в том числе и для бизнеса. Используя электронные площадки, бизнес продвигает свои услуги и товары на мировом рынке, такое понятие как электронная коммерция – e-сommerce прочно вошла в повседневную жизнь. Электронная коммерция – дает широкий охват аудитории и, следовательно, потенциальных покупателей. Домашним и мобильным интернетом пользуется значительное количество людей, а значит, становится проще донести до них свое предложение. Кроме того, это позволяет сделать охват различных сегментов аудитории. Также e-сcommerce требует меньше затрат на рекламу и продвижение. Наконец, возможность взаимодействовать посредством интернета с банками упростила и функцию документооборота и оплаты.
Одним из развивающихся направлений в электронной коммерции – e-сcommerce является онлайн-ритейл. Онлайн-покупки у розничных торговцев, а также у интернет-магазинов розничной торговли, согласно статистики опубликованной на сайте The Statistics Portal в 2018 году, совершили примерно 1,8 миллиарда человек по всему миру. В том же году мировые продажи в онлайн-ритейл составили 2,8 триллиона долларов США, а прогнозы показывают рост до 4,8 триллиона долларов США к 2021 году. То есть продажи в онлайн-ритейле нацелены на то, чтобы максимально приблизиться к пользователю. Современный ритейл стремится продавать свои продукты, используя омниканальность – запуская различные маркетинговые акции и программы при помощи современных WEB-приложений, все это интересно не только потребителям, но и злоумышленникам. WEB-приложения, по своей природе, доступны в Интернете круглосуточно и без выходных. Это обеспечивает злоумышленникам легкий и постоянный доступ к ним и предоставляет практически неограниченное количество времени и попыток взлома.
С точки зрения архитектуры WEB-приложение представляет собой трехуровневую систему. Первый уровень представляет собой WEB-браузер, второй – инструмент технологии создания контента (такой как Java-сервлет или ASP – страницы активных серверов), а третий уровень – базу данных. WEB-браузеры отправляют начальный запрос на средний уровень, который в свою очередь, после обработки запроса, обращается к базе данных для выполнения запрошенной задачи либо, получая информацию из базы данных, обновляет ее. Широкое распространение WEB-приложения получили вследствие того, что они могут обновляться и модифицироваться в любое время без необходимости установки программного обеспечения на клиентских компьютерах, так как само WEB-приложение находится на сервере. С точки зрения бизнес-функций и технической архитектуры современные WEB-приложения очень сложны, их сложность увеличивает поверхность атаки со стороны злоумышленников. Для обеспечения безопасности WEB-приложений необходимо применение современных технологий поиска ошибок, призванных выявлять потенциальный ущерб, вызванный различными инцидентами.
Результаты и обсуждения. Сложность структуры современных WEB-приложений и их большой размер не позволяют провести ручную проверку на наличие ошибок. Поэтому целесообразность использования средств автоматического анализа является более актуальной.
Современные разработчики программного обеспечения в своей деятельности активно используют два основных метода анализа – статистический и динамический. Динамический анализ имеет больше преимуществ по сравнению со статистическим методом, так как не использует строгих шаблонов и критериев, что позволяет выполнять его непрерывно. Анализ программы производится в процессе или по результатам исполнения программы. Основное требование, предъявляемое к динамическому анализу программного обеспечения (далее – ПО) — это малый процент замедления выполнения программы. Поскольку за один запуск программы производится анализ на одном пути исполнения программы, то для анализа всей программы требуется многократный запуск анализируемого ПО. В основном ход исполнения программы зависит от входных данных. Если в программе имеются дефекты, то при специфически входных данных эти дефекты будут воспроизведены при исполнении ПО. Автоматические методы анализа, как правило, позволяют обнаруживать ограниченный класс ошибок в программах. Среди известных методов обнаружения ошибок в ПО можно выделить: тестирование, отладку, фаззинг и динамическое символьное исполнение.
Для автоматизации процесса анализа ПО современные разработчики используют наиболее прогрессивный анализ - фаззинг. Фаззинг – это технология автоматизированного тестирования программного обеспечения с целью выявления потенциальных уязвимостей, которая охватывает большое количество путем порождения некорректных входных данных. То есть в ходе тестирования вместо ожидаемых входных данных программе передаются случайные или специально сформированные данные. В качестве входных данных при этом могут выступать обрабатываемые приложением файлы, информация, передающаяся по сетевым протоколам, функции прикладного интерфейса и т.д. Смысл такой проверки сводится к тому, что программист не знает, какие данные будут переданы приложению, протоколу, функции, поэтому главной задачей является предусмотреть и проверить как можно больше вариантов. В случае, если при тестировании ПО зависает или завершает работу в аварийном варианте, это считается нахождением дефекта в ПО, который может привести к обнаружению определенной уязвимости. Злоумышленники могут воспользоваться уязвимостью путем составления запроса, содержащего вредоносный код и данные, которые повлияют на работоспособность ПО. Фаззинг по своей сути является динамической технологией тестирования безопасности.
Под статической технологией подразумеваются любые программные средства, которые производят тестирование кода по определенным шаблонам. Средства статистического анализа кода позволяют обрабатывать большое количество кода благодаря автоматизации, результаты строго ограничены и могут быть ложными. Фаззинг же динамичен, он не имеет строгих шаблонов и критериев и может быть просто автоматизирован, выполняясь непрерывно.
Заключение. Такие преимущество фаззинга как автоматизация, выполнение большинства проверок в приложениях, нахождение множественных ошибок, большой объём тестирования с множеством вариаций, оценка, связанная с надежностью ПО (многие из них являются потенциальными проблемами безопасности) реализованы в программах средствах (приложение, фреймворк) автоматического тестирования – фаззер, которые наиболее полно удовлетворяют потребность в обеспечении безопасности современных WEB-приложений.
Одним из примеров является JBro Fuzz - фаззер уязвимостей, работающий с HTTP, SOAP, XML, LDAP и прочими сетевыми протоколами, поддерживающий большое количество самых разнообразных проверок на такие уязвимости как:
- Межсайтовый скриптинг (Cross Site Scripting - XSS);
- SQL инъекции (SQL-inj);
- Переполнения буфера (buffer overflows - BFO);
- Ошибки форматной строки (format string errors - FSE);
- Целочисленное переполнение (integer overflows - INT);
JBro Fuzz фаззер представленный от мирового проекта OWASP - Open Web Application Security посвящен безопасности WEB-приложений. При помощи данного фаззера упрощается процесс анализа на поиск уязвимостей и имеется возможность редактировать содержание так называемых «генераторов».
Полученные в ходе тестирования данные с использованием современных технологий на основе файзинга, помогают разработчикам выявлять ошибки и устранять их в приложениях, что позитивно отражается на обеспечении безопасности и создает условия для создания более сложных, с точки зрения бизнес-функций и технической архитектуры, современных WEB- приложений.
Список использованных источников:
- https://www.anti-malware.ru/analytics/Technology_Analysis/web-security-myths-and-reality
- https://www.itu.int/en/ITU-D/Statistics/Pages/publications/default.aspx
- https://quality-lab.ru/blog/key-principles-of-web-testing/
- https://e-pepper.ru/news/mirovoy-rynok-ecommerce-dostignet-3-5-trln-v-2019-godu.html
- https://www.seonews.ru/glossary/elektronnaya-kommertsiya/
- https://www.digitalcommerce360.com/article/global-ecommerce-sales/
- https://www.statista.com/topics/871/online-shopping/
- https://habr.com/ru/post/460669/
- https://cyberleninka.ru/article/n/obespechenie-bezopasnosti-storonnih-komponentov-veb- prilozheniy/viewer
- https://moluch.ru/archive/186/47575/
- Мишечкин М. В. Обзор различных средств фаззинга как инструментов динамического анализа программного обеспечения // Молодой ученый. — 2017. — №52. — С. 28-31.
- https://cyberleninka.ru/article/n/fazzing-poisk-uyazvimostey-v-programmnom-obespechenii- bez-nalichiya-ishodnogo-koda/viewer.
- https://owasp.org/www-community/Fuzzing