Научная статья на тему 'О методе машинного обучения для обнаружения аномалий в SQL-запросах'

О методе машинного обучения для обнаружения аномалий в SQL-запросах Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
676
62
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МАШИННОЕ ОБУЧЕНИЕ / ОБНАРУЖЕНИЕ АНОМАЛИЙ / SQL-ИНЪЕКЦИИ / КЛАСТЕРИЗАЦИЯ / РЕКУРРЕНТНЫЕ НЕЙРОННЫЕ СЕТИ / MACHINE LEARNING / ANOMALY DETECTION / SQL-INJECTIONS / RASTERIZATION / RECURRENT NEURAL NETWORK

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мурзина Александра Ивановна

Предлагается метод обнаружения аномалий в SQL, основанный на кластеризации и использовании рекуррентных нейронных сетей для разрешённых SQL-запросов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Machine learning based anomaly detection method for SQL

In this paper, an anomaly detection method for SQL is proposed. The method is based on the clasterization and recurrent neural networks for legitimate SQL-queries. The main idea is to teach neural network to detect non-typical SQL-queries for the server including queries independent from known instances of successful attacks.

Текст научной работы на тему «О методе машинного обучения для обнаружения аномалий в SQL-запросах»

Математические основы компьютерной безопасности

121

УДК 004.94 DOI 10.17223/2226308X/10/46

О МЕТОДЕ МАШИННОГО ОБУЧЕНИЯ ДЛЯ ОБНАРУЖЕНИЯ АНОМАЛИЙ В SQL-ЗАПРОСАХ

А. И. Мурзина

Предлагается метод обнаружения аномалий в SQL, основанный на кластеризации и использовании рекуррентных нейронных сетей для разрешённых SQL-запросов.

Ключевые слова: машинное обучение, обнаружение аномалий, SQL-инъекции, кластеризация, рекуррентные нейронные сети.

На сегодняшний день SQL-инъекции являются одной из наиболее распространённых атак на веб-приложения [1], с помощью которых можно получить несанкционированный доступ к системам управления базами данных (СУБД). Этот вид атаки основывается на внедрении произвольного SQL-кода, который меняет логику запроса. Известные реальные методы обнаружения SQL-инъекций [2-4] используют признаки их классификации и соответствующие сигнатуры и, как правило, не защищают от всех векторов данной атаки. В настоящей работе предлагается метод, позволяющий обнаруживать нетипичные для конкретного приложения, взаимодействующего с СУБД, SQL-запросы, в том числе не зависящие от уже существующих типов SQL-инъекций. Такие запросы в дальнейшем называются аномалиями.

Предлагаемый метод работает в три этапа: формирование вектора признаков из разрешённых (валидных) SQL-запросов обучающей выборки; кластеризация этих запросов на основе вектора признаков; обучение LSTM-сети для классификации на основе результатов кластеризации. Основная идея состоит в том, что SQL-запросы обучающей выборки можно разделить на несколько классов так, что если новый проверяемый SQL-запрос не «похож» ни на один запрос из этих классов, то будем считать его аномальным. Степень «похожести» определяет сама нейронная сеть.

Вектор признаков формируется на основе SQL-запросов обучающей выборки для конкретного приложения. Каждый запрос формирует вектор признаков, где каждый элемент вектора — число от 0 до 1 — частота вхождения лексемы языка SQL в данный запрос. Если лексемы нет в новом запросе, но она есть в запросах выборки, то ей присваивается 0. В силу того, что не все лексемы языка SQL могут использоваться на практике, длина вектора признаков может отличаться для каждого конкретного приложения. Таким образом, по обучающей выборке SQL-запросов строится матрица размера m х n, где m — количество запросов, а n — количество уникальных лексем SQL в выборке.

Как правило, бизнес-логика приложения меняется не так часто, поэтому разные запросы к СУБД различаются пользовательскими параметрами, через ввод в которые и может быть проэксплуатирована SQL-инъекция. Данные запросы можно кластеризовать — разбить множество запросов на группы по схожим признакам. Для кластеризации применяется метод Mean-Shift [5], на вход которому поступает матрица из сформированных на предыдущем этапе векторов, а на выходе — вектор размера m, и для каждого вектора определён класс в виде числа.

Теперь, когда каждый запрос отнесён к какому-то классу, можно обучить LSTM-сеть, которая будет стараться отнести новый неклассифицированный запрос к одной из групп. LSTM (Long short-term memory) — вид архитектуры рекуррентных нейронных сетей (RNN) [6], который может запоминать зависимости между элементами входного

122

Прикладная дискретная математика. Приложение

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

На этапе классификации LSTM-сеть принимает вектор признаков нового запроса, а на выходе выдаёт два числа — номер класса, на который наиболее похож запрос, и число от 0 до 1 как вероятность того, что данный запрос принадлежит к этому классу.

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

ЛИТЕРАТУРА

1. OWASP Top 10 Application Security Risks — 2017. https://www.owasp.org/index.php/Top_ 10_2017-Top_10

2. Haifond W. G. J., ViegasJ., and Orso A. A classification of SQL injection attacks and countermeasures // Proc. ISSSE 2006, Washington, USA, Mar. 2006. https://pdfs. semanticscholar.org/81a5/02b52485e52713ccab6d260f15871c2acdcb.pdf

3. Rawat R. and Shrivastav S. K. SQL injection attack detection using SVM // Intern. J. Comput. Appl. 2012. V. 42. No. 13. P. 1-4.

4. Buehrer G. T., Weide B. W, and Siviiotti P. A. G. Using parse tree validation to prevent SQL injection attacks // Proc. SEM'05. N.Y.: ACM, 2005. P. 106-113.

5. Cheng Y. Mean shift, mode seeking, and clustering // IEEE Trans. Pattern Analysis Machine Intelligence. 1995. V. 17. Iss.8. P. 790-799.

6. Schmidhuber J. and Hochreiter S. Long short-term memory // Neural Computation. 1997. No. 9. P. 1735-1780.

УДК 004.94 DOI 10.17223/2226308X/10/47

МЕТОД ИДЕНТИФИКАЦИИ СОГЛАШЕНИЙ О ВЫЗОВЕ ФУНКЦИЙ

В БИНАРНЫХ ПРИЛОЖЕНИЯХ

М. А. Станчин, Н. В. Сороковиков

Предлагается метод определения соглашений о вызове функций в бинарных приложениях.

Ключевые слова: статический анализ, бинарные приложения, соглашение о вызове.

При статическом анализе бинарных приложений возникает задача определения соглашений о вызовах функций. Соглашением о вызове (calling convention) называется способ передачи параметров (аргументов) подпрограммам [1]. В известных средствах анализа бинарных приложений (например, Radare2, Angr, IDA Pro) эта задача решается с использованием встроенных инструментов, что, как правило, не позволяет использовать их в собственных разрабатываемых средствах анализа. В данной работе предлагается собственный метод анализа соглашений о вызове функций.

Для определения соглашения о вызове необходимо определить следующие параметры:

1) наличие регистров для передачи параметров в функции;

2) используемые регистры для передачи параметров в функции;

3) используемые области памяти;

4) мнемоника инструкции возврата.

i Надоели баннеры? Вы всегда можете отключить рекламу.