Рисунок 5. Раздел "Результаты".

API для взаимодействия с клиентами.

Интерфейс взаимодействия с клиентами реализован с использованием REST-подобной архитектуры. Все передаваемые данные, кроме файлов, сериализуются в формат JSON. Обмен ведется по протоколу HTTP. Рассмотрим несколько типов сообщений, которые может отправлять сервер:

requestTest – предложение клиенту выполнить определенный тест из задания, клиент вправе отказаться;

responseFuzzer – ответ клиенту на запрос фаззера. В ответе содержится URL для загрузки;

pong – ответ на сообщение проверки соединения.


Разработка клиента.

Одной из основных задач клиента является контроль за состоянием тестируемого процесса и регистрация отладочной информации в случае его сбоя. Этого можно добиться, используя такие WinAPI функции, как WaitForDebugEvent и MiniDumpWriteDump[15]. Применение WinAPI повлияло на выбор языка разработки – это С++.

Вторая важная задача – обеспечения взаимодействия с сервером. Для этих целей используется библиотека JsonCpp.

Описание API было дано в предыдущем разделе.

Разработка фаззера. Общие сведения.

Разработанный фаззер предназначен для оценки безопасности интернет-браузеров. Наиболее вероятными областями выявления уязвимостей в данном случае являются объектная модель документа (DOM), визуализация и прикладной интерфейс браузера (browser API). Фаззер ориентирован на обнаружение таких типов уязвимостей, как использование после освобождения, целочисленное переполнение, переполнение буфера и, в меньшей степени, состояние гонки.

НЕ нашли? Не то? Что вы ищете?

Инструмент разработан на языке JavaScript и не требует дополнительного ПО для запуска. Используется собственная имплементация генератора случайных чисел (ГПСЧ), так как встроенные средства JavaScript не позволяют задавать инициализирующее значение для ГПСЧ. Это необходимо, чтобы однозначно связать каждый тест с его порядковым номером, обеспечив повторяемость результатов.

Данное средство совмещает мутирующий и порождающий методы фаззинга.

Основные структуры фаззера.

Объект «окно» в прикладном интерфейсе браузера является корневым. Логичным является решение начать обход дерева объектов с него. Чтобы случайным образом не нарушить логику работы фаззера, все манипуляции выполняются не над основным окном, а над специально созданными вспомогательными.

В процессе обхода дерева объектов инструмент часто использует информацию о типах параметров и свойств. База с такой информацией была предварительно сгенерирована в процессе разработки фаззера из набора файлов спецификации DOM.

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

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

Сценарий работы.

Каждый тест делится на определенное количество раундов. Опишем порядок действий, который выполняется во время каждого раунда:

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

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

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

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

Методика испытаний.
    Продолжительность испытаний – 16 часов. Приложение для тестирования – браузер Google Chrome версии 32. Использовался 1 компьютер. Тестирование велось без вмешательств извне.
Результаты.

За время тестирования была обнаружена одна уязвимость высокой степени опасности – использование после освобождения в компоненте V8 (см. рисунок 4).

Рисунок 6. Анализ обнаруженной уязвимости с помощью WinDBG.

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

Кроме того, система обнаружила не менее 9 (без учета повторений) различных ошибок разыменования нулевого указателя. Такие ошибки не несут вреда безопасности приложения и могут представлять лишь проблему стабильности.

Обнаружение даже одной уязвимости в популярном приложении за такой срок в автоматическом режиме можно считать свидетельством достаточной эффективности.

ЗАКЛЮЧЕНИЕ

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

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

СПИСОК ЛИТЕРАТУРЫ

Forbes [Электронный ресурс] //URL: http://www. /sites/andygreenberg/2012/03/23/shopping-for-zero-days-an-price-list-for-hackers-secret-software-exploits/ (Дата обращения: 20.12.13) New York Times [Электронный ресурс] //URL: http://www. /2013/07/14/world/europe/nations-buyin? g-as-hackers-sell-computer-flaws. html (Дата обращения: 20.12.13) Michael Sutton, Adam Greene, and Pedram Amini. Fuzzing : brute force vulnerabilty discovery. Upper Saddle River, NJ: Addison-Wesley, 2007. Print. Takanen, Ari, Jared D. Demott, and Charles Miller. Fuzzing for software security testing and quality assurance. Boston: Artech House, 2008. Print. Code Injection [Электронный ресурс] //URL: https://www. owasp. org/index. php/Code_Injection (Дата обращения: 23.01.14) Fuzzing : the Past, the Present and the Future [Электронный ресурс] //URL: http://actes. sstic. org/SSTIC09/Fuzzing-the_Past-the_Present_and_the_Future/SSTIC09-article-A-Takanen-Fuzzing-the_Past-the_Present_and_the_Future. pdf (Дата обращения: 23.01.14) Mark Dowd, John McDonald, and Justin Schuh. The art of software security assessment : identifying and preventing software vulnerabilities. Indianapolis, Ind: Addison-Wesley, 2007. Print. Coverity [Электронный ресурс] //URL: http://www. idapro. ru/description/ (Дата обращения: 23.01.14) IDA Pro [Электронный ресурс] //URL: http://www. idapro. ru/description/ (Дата обращения: 27.01.14) Peach Fuzzer [Электронный ресурс] //URL: http:/// (Дата обращения: 27.01.14) Lcamtuf’s blog [Электронный ресурс] //URL: http://lcamtuf. blogspot. ru/ (Дата обращения: 27.01.14) Fuzzing [Электронный ресурс] //URL: https://www. owasp. org/index. php/Fuzzing (Дата обращения: 28.01.14) About Node. js [Электронный ресурс] //URL: http://nodejs. org/about/ (Дата обращения: 01.02.14) About SQLite [Электронный ресурс] //URL: http://www. sqlite. org/about. html (Дата обращения: 01.02.14) WaitForDebugEvent [Электронный ресурс] //URL: http://msdn. /en-us/library/windows/desktop/ms681423(v=vs.85).aspx (Дата обращения: 01.02.14)

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5