О методе машинного обучения для обнаружения аномалий в SQL-запросах
Предлагается метод обнаружения аномалий в SQL, основанный на кластеризации и использовании рекуррентных нейронных сетей для разрешённых SQL-запросов.
Machine learning based anomaly detection method for SQL.pdf На сегодняшний день 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], который может запоминать зависимости между элементами входного вектора. На этапе обучения на вход данная нейронная сеть принимает вектор признаков и число - номер класса, к которому относится вектор. На этапе классификации LSTM-сеть принимает вектор признаков нового запроса, а на выходе выдаёт два числа - номер класса, на который наиболее похож запрос, и число от 0 до 1 как вероятность того, что данный запрос принадлежит к этому классу. В результате работы метод был реализован и подготовлены тестовые данные. В дальнейшем планируется провести серию экспериментов для оценки точности работы метода.
Ключевые слова
машинное обучение,
обнаружение аномалий,
SQL-инъекции,
кластеризация,
рекуррентные нейронные сети,
machine learning,
anomaly detection,
SQL-injections,
Rasterization,
recurrent neural networkАвторы
Мурзина Александра Ивановна | Томский государственный университет | студентка факультета информатики | murzina93@gmail.com |
Всего: 1
Ссылки
OWASP Top 10 Application Security Risks - 2017. https://www.owasp.org/index.php/Top_ 10_2017-Top_10
Halfond 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
Rawat R. and Shrivastav S. K. SQL injection attack detection using SVM // Intern. J. Comput. Appl. 2012. V. 42. No. 13. P. 1-4.
Buehrer G. T., Weide B. W., and Sivilotti P. A. G. Using parse tree validation to prevent SQL injection attacks // Proc. SEM'05. N.Y.: ACM, 2005. P. 106-113.
Cheng Y. Mean shift, mode seeking, and clustering // IEEE Trans. Pattern Analysis Machine Intelligence. 1995. V. 17. Iss.8. P. 790-799.
Schmidhuber J. and Hochreiter S. Long short-term memory // Neural Computation. 1997. No. 9. P. 1735-1780.