6 minute read
Анастасия Гурина, Владимир Елисеев
from InfoSec_04_2020
by jozef24
Advertisement
На протяжении последних нескольких лет уязвимость по типу "инъекция кода" возглавляет список самых опасных угроз безопасности для веб-приложений 1 . SQL-injection занимает лидирующую позицию среди этого вида атак 2 , что обусловлено широким применением SQLзапросов к базам данных в коде приложений на основе пользовательского ввода без его должного контроля. Стандартным способом выявления атак, организованных с помощью "инъекции кода", является анализ сигнатур, но известными недостатками этого способа оказываются трудоемкость написания сигнатур и временной зазор от момента обнаружения уязвимости до пополнения базы для масштабного применения сетевой атаки.
Для обнаружения атак SQLinjection путем выявления аномалий во входящем из Интернета трафике многие исследователи предлагают алгоритмы машинного обучения. Но мы уверены, что совместный анализ входных и выходных данных позволяет решить эту задачу более эффективно.
Корректное функционирование сетевого сервера может быть описано множеством пар "запрос-ответ", соответствующих всем возможным штатным сценариям обработки сервером входных данных. Построение такого множества позволит проверять каждый "запросответ" на соответствие эталону и выявлять сетевые атаки, ответ на которые выходил бы за рамки этого множества. Значимыми признаками для идентификации штатных запросов и ответов является их размер и тайминг обмена
данными в процессе обработки запроса.
Чтобы описать тайминг во взаимосвязи с размерами данных, которыми обмениваются сервер с клиентом, воспользуемся функцией взаимной корреляции (ФВК) временных рядов интенсивности входящего и исходящего трафика сервера. Существует предположение, что форма ФВК выражает уникальность обработки конкретным сервером каждого типового шаблона "запрос-ответ". Определив пространство нормальных ФВК ограниченной размерности, можно выявлять аномальные ФВК, выходящие за его пределы. На рис. 1 изображена условная схема метода обнаружения аномалий на основе ФВК, на которой также показано отличие вида функций взаимной корреляции при обработке сервером нормальных и аномальных запросов – атак. При этом многомерное пространство образуется функциями взаимных корреляций, интерпретируемыми как векторы значений.
Дополнительную информацию о характере обработки данных, осуществляемой сервером, можно извлечь из вычислительных ресурсов, потребляемых сервером, что позволит расширить размерность пространства за счет характеристик загруженности сервера обработкой запроса.
Для апробации метода обнаружения аномалий был выбран веб-сервер с развернутым сай
1 OWASP Top Ten, 2020: https://owasp.org/www-project-top-ten/ 2 Lowis L., Accorsi R., On a Classification Approach for SOA Vulnerabilities. Computer Software and Applications Conference (COMPSAC '09). 33rd Annual.
том для организации форума на основе системы MyBB, использующей типовые инструменты – PHP, MySQL, Apache2.
В версии MyBB 1.8.6 в 2016 г. была обнаружена уязвимость SQL-injection. Уязвимость позволяет ввести в числовое поле фрагмент SQL-кода, который будет выполнен СУБД из-за недостаточного контроля за вводимыми значениями. При осуществлении "инъекции кода" видимой реакции веб-сайта не наблюдается, но при выполнении операции доступа к форуму в окне веб-браузера выдается результат выполнения внедренного кода, а также сообщение об ошибке работы MySQL (см. рис. 2).
Таким образом, данная уязвимость позволяет внедренному коду быть запущенным через неопределенное время, что потенциально может быть очень опасно.
Для разработки системы защиты сайта на основе MyBB был составлен перечень функций (включая настройки), определены типовые шаблоны общения на форуме (короткое сообщение, картинка, параграф, несколько параграфов), а также выявлены места, где некорректные действия пользователя приводят к сообщениям об ошибке. Далее по этому сценарию имитировались несколько сессий работы с форумом. При этом с помощью сетевого сниффера tshark записывался весь входящий и исходящий трафик веб-сервера.
Полученные данные о коммуникациях между клиентом и сервером по протоколу HTTP были преобразованы во временные ряды интенсивности передачи данных, обезличенные до числа байт в единицу времени. Шаг дискретизации по времени был равен 0,1 с.
Два синхронных временных ряда с интенсивностью входящего и исходящего трафика использовались для расчета функции взаимной корреляции с шириной окна 11 отсчетов времени. Таким образом, имелась возможность регистрировать динамический отклик сервера на запрос в течение 1 с каждую 0,1 с. Значительное число корреляционных функций должно было вычисляться для интервалов с нулевой интенсивностью трафика. Такие интервалы исключались из расчетов. Полученные взаимные корреляционные функции образовали профиль нормальной работы сервера.
Структура нейросети для классификации ФВК выбиралась исходя из ширины окна корреляции и экспертных представлений о возможностях нейронных сетей типа "автокодировщик" (см. рис. 3). На вход нейросети подавался вектор значений ФВК. Нейронная сеть обучалась для того, чтобы на выходах формировался вектор значений, максимально близкий к вектору входных значений ФВК. При обучении использовался критерий минимизации средней квадратичной ошибки (MSE, Mean Squared Error). Значение мгновенной ошибки реконструкции (IRE, Immediate Reconstruction Error) для заданного входного вектора определяет точность, с которой нейронная сеть опознает входной вектор значений ФВК длины как известный, и вычисляется по формуле.
Нейросеть обучалась в пакете MATLAB методом Левенберга –Марквардта по подготовленному профилю нормальной работы, из которого формировалась обучающая выборка. После обучения ошибка реконструкции на профиле нормальной работы не превышала значения 0,0024 (см. рис. 4).
Для выявления аномалий был задан порог мгновенной ошибки реконструкции в качестве наибольшего значения среди оши бок реконструкции, рассчитанных для ФВК обучающей выборки, – 0,0024.
Рис. 3. Структура автокодировщика
Для апробации обученного классификатора был проведен сеанс работы с сайтом MyBB, содержащий, кроме нормальных запросов, SQL-injection, и осуществлены дальнейшие действия по вызову результата внедренного кода. По графикам интенсивности измеренного входящего и исходящего трафика были рассчитаны ФВК, представляющие тестовую выборку. На рис. 5 приведен полученный график мгновенной
ошибки реконструкции для ФВК тестовой выборки, а также график ошибки реконструкции для ФВК обучающей выборки и порог обнаружения аномалий.
На графике отмечены значения ошибки реконструкции, превышающие заданный порог, то есть распознанные классификатором как аномальные. Поскольку порядковый номер ФВК по оси абсцисс позволяет однозначно определить временной интервал соответствующего фрагмента трафика, было выяснено, что одно из превышений порога – это ложная тревога (false positive), а три остальных соответствуют трем обнаруженным атакам SQL-injection (SQLIA1, SQLIA2, SQLIA3). Наличие ложного срабатывания может быть объяснено как недостаточным качеством обученного классификатора, так и возмущениями, внесенными средой выполнения во временные характеристики обрабатываемых запросов.
Сравним вид ФВК, которые были распознаны нейросетевым классификатором как нормальные и ошибка для которых была мала, с видом ФВК, ошибка реконструкции для которых превысила пороговое значение IRE (см. рис. 6).
Отметим, что ФВК, соответствующие атакам SQL-injection, носят мультимодальный характер, в отличие от ФВК из области нормальных.
В "узком горле" обученной нейросети, состоящем из трех нейронов, происходит сжатие поданных на вход данных. В трехмерном пространстве показаны точки нормальных ФВК, характеризующие профиль нормальной работы, и точки тестовой выборки (см. рис. 7).
Видно, что большинство ФВК из тестовой выборки нейросеть распознала и отнесла к пространству нормальных ФВК, характеризующих профиль нормальной работы. Некоторые ФВК, отстоящие от выделенной нормальной области, нейронная сеть нашла аномальными, часть из них действительно характеризуют реакцию сервера на вредоносные SQL-запросы.
Рассматривая в качестве объекта классификации все ненулевые ФВК тестовой выборки, можно рассчитать стандартные характеристики классификатора (см. табл.).
True False
Positive 4826 0 Negative 3 1 Recall 99,9% Precision 100% F-мера 99,9%
Таким образом, метод обнаружения аномалий на основе автокодировщика был успешно применен для обнаружения трех проведенных атак SQL-injection на сервис МyBB.
Полученные результаты позволяют серьезно рассматривать вопрос распространения разработанного метода для обнаружения и других сетевых атак на простые сервисы. l
Ваше мнение и вопросы присылайте по адресу is@groteck.ru