Контакты
Подписка 2021
МЕНЮ
Контакты
Подписка

Обнаружение атак SQL-injection на веб-сервер без инспекции трафика

Анастасия Гурина, 15/02/21

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

Авторы:
Анастасия Гурина, аспирантка кафедры УИТ НИУ “МЭИ”
Владимир Елисеев, доцент кафедры УИТ НИУ “МЭИ”

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

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

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

Главные принципы анализа данных для обнаружения SQL-injection

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

Чтобы описать тайминг во взаимосвязи с размерами данных, которыми обмениваются сервер с клиентом, воспользуемся функцией взаимной корреляции (ФВК) временных рядов интенсивности входящего и исходящего трафика сервера. Существует предположение, что форма ФВК выражает уникальность обработки конкретным сервером каждого типового шаблона "запрос-ответ". Определив пространство нормальных ФВК ограниченной размерности, можно выявлять аномальные ФВК, выходящие за его пределы. На рис. 1 изображена условная схема метода обнаружения аномалий на основе ФВК, на которой также показано отличие вида функций взаимной корреляции при обработке сервером нормальных и аномальных запросов – атак. При этом многомерное пространство образуется функциями взаимных корреляций, интерпретируемыми как векторы значений.


Рис. 1. Схема обнаружения аномальных откликов сервера на запросы

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

Применение метода для обнаружения атак SQL-injection на веб-сервер

Для апробации метода обнаружения аномалий был выбран веб-сервер с развернутым сайтом для организации форума на основе системы MyBB, использующей типовые инструменты – PHP, MySQL, Apache2.

В версии MyBB 1.8.6 в 2016 г. была обнаружена уязвимость SQL-injection. Уязвимость позволяет ввести в числовое поле фрагмент SQL-кода, который будет выполнен СУБД из-за недостаточного контроля за вводимыми значениями. При осуществлении "инъекции кода" видимой реакции веб-сайта не наблюдается, но при выполнении операции доступа к форуму в окне веб-браузера выдается результат выполнения внедренного кода, а также сообщение об ошибке работы MySQL (см. рис. 2).


Рис. 2. Результат SQL-инъекции с произведенным выводом (выделен красным прямоугольником) и введенным кодом (подчеркнуто красным)

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

Для разработки системы защиты сайта на основе MyBB был составлен перечень функций (включая настройки), определены типовые шаблоны общения на форуме (короткое сообщение, картинка, параграф, несколько параграфов), а также выявлены места, где некорректные действия пользователя приводят к сообщениям об ошибке. Далее по этому сценарию имитировались несколько сессий работы с форумом. При этом с помощью сетевого сниффера tshark записывался весь входящий и исходящий трафик веб-сервера.

Полученные данные о коммуникациях между клиентом и сервером по протоколу HTTP были преобразованы во временные ряды интенсивности передачи данных, обезличенные до числа байт в единицу времени. Шаг дискретизации по времени был равен 0,1 с.

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

Структура нейросети для классификации ФВК выбиралась исходя из ширины окна корреляции и экспертных представлений о возможностях нейронных сетей типа "автокодировщик" (см. рис. 3). На вход нейросети подавался вектор значений ФВК. Нейронная сеть обучалась для того, чтобы на выходах формировался вектор значений, максимально близкий к вектору входных значений ФВК. При обучении использовался критерий минимизации средней квадратичной ошибки (MSE, Mean Squared Error). Значение мгновенной ошибки реконструкции (IRE, Immediate Reconstruction Error) для заданного входного вектора определяет точность, с которой нейронная сеть опознает входной вектор значений ФВК длины как известный, и вычисляется по формуле.


Рис. 3. Структура автокодировщика

Нейросеть обучалась в пакете MATLAB методом Левенберга – Марквардта по подготовленному профилю нормальной работы, из которого формировалась обучающая выборка. После обучения ошибка реконструкции на профиле нормальной работы не превышала значения 0,0024 (см. рис. 4).

Рис. 4. Мгновенная ошибка реконструкции для обучающей выборки

Для выявления аномалий был задан порог мгновенной ошибки реконструкции в качестве наибольшего значения среди ошибок реконструкции, рассчитанных для ФВК обучающей выборки, – 0,0024.

Для апробации обученного классификатора был проведен сеанс работы с сайтом MyBB, содержащий, кроме нормальных запросов, SQL-injection, и осуществлены дальнейшие действия по вызову результата внедренного кода. По графикам интенсивности измеренного входящего и исходящего трафика были рассчитаны ФВК, представляющие тестовую выборку. На рис. 5 приведен полученный график мгновенной ошибки реконструкции для ФВК тестовой выборки, а также график ошибки реконструкции для ФВК обучающей выборки и порог обнаружения аномалий.


Рис. 5. Ошибка реконструкции для обучающей (синий цвет) и тестовой (красный цвет) выборки

На графике отмечены значения ошибки реконструкции, превышающие заданный порог, то есть распознанные классификатором как аномальные. Поскольку порядковый номер ФВК по оси абсцисс позволяет однозначно определить временной интервал соответствующего фрагмента трафика, было выяснено, что одно из превышений порога – это ложная тревога (false positive), а три остальных соответствуют трем обнаруженным атакам SQL-injection (SQLIA1, SQLIA2, SQLIA3). Наличие ложного срабатывания может быть объяснено как недостаточным качеством обученного классификатора, так и возмущениями, внесенными средой выполнения во временные характеристики обрабатываемых запросов.

Сравним вид ФВК, которые были распознаны нейросетевым классификатором как нормальные и ошибка для которых была мала, с видом ФВК, ошибка реконструкции для которых превысила пороговое значение IRE (см. рис. 6).


Рис. 6. Вид нормальных ФВК для малой ошибки IRE и вид аномальных ФВК для ошибки выше порога IRE

Отметим, что ФВК, соответствующие атакам SQL-injection, носят мультимодальный характер, в отличие от ФВК из области нормальных.

В "узком горле" обученной нейросети, состоящем из трех нейронов, происходит сжатие поданных на вход данных. В трехмерном пространстве показаны точки нормальных ФВК, характеризующие профиль нормальной работы, и точки тестовой выборки (см. рис. 7).

Рис. 7. Профиль нормальной работы сервера и обнаруженные аномальные отклики сервера

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

Рассматривая в качестве объекта классификации все ненулевые ФВК тестовой выборки, можно рассчитать стандартные характеристики классификатора (см. табл.).

Таблица. Матрица ошибок классификации и характеристики качества классификатора

Таким образом, метод обнаружения аномалий на основе автокодировщика был успешно применен для обнаружения трех проведенных атак SQL-injection на сервис МyBB.

Полученные результаты позволяют серьезно рассматривать вопрос распространения разработанного метода для обнаружения и других сетевых атак на простые сервисы.


  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.
Темы:ТехнологииНейросетиБезопасная разработкаЖурнал "Информационная безопасность" №4, 2020SQL-инъекции

Хотите сотрудничать?

Выберите вариант!

Печатное издание
Интернет-портал
Стать автором

More...