Как стать автором
Обновить
11
0
Эльвин Гасанов @Elvin_GSNV

4regretsinmylife@gmail.com

Отправить сообщение

"Ослабить" систему защиты флудом (чтобы она не распознала sql-инъекцию) не получится. Скорее всего замедлится время ответа микросервиса или он вовсе упадёт

  1. Входные данные - это параметры методов HTTP, которые лексикографически проверяются моделью. Датасет собирался из открытых источников

  2. Я старался сделать равномерное перемешивание, чтобы метрики не перекосило. А вот с поисками аномалий я не знаком, поэтому спасибо за наводку - ознакомлюсь

Редко случается FP ошибка и то только если в тексте специально указывать ключевые слова, очень близкие по контексту к вероятной атаке

Не требуется, всё обучалось на процессоре Intel Core i7 2.5GHz. Видеокарты у меня нет

  1. Входные данные при обучении, валидации или тестировании - это выборка размером в 64 элемента из пулов размера 400, 100 и 500 соответственно. Но при экспорте модели может подаваться на вход как 1 элемент, так и несколько сразу. По поводу примеров полезных нагрузок злоумышленника: здесь на хабре проходит авто-санация (sanitizing) вводимого, так что в полезную нагрузку атак не вставить))). Поэтому пока выложу скрин с примером

    Пример полезных нагрузок
    Пример полезных нагрузок
  2. Я искал в репозиториях kaggle и гитхабов примеры полезных нагрузок, дополнял их примерами реальных атак с разных форумов и использовал burp cheat sheet xss и SQLmap xml, чтобы увидеть каркас запросов в разных субд. По поводу шаблонизаторов - они все похожи, что Jinja2,FreeMarker, Smarty, Twig, поэтому модель можно обучить одним или примесью нескольких из них

  3. В матрице ошибок 64 элемента, так как это выборка случайных 64 полезных нагрузок из пула, размером в 500 элементов. Естественно seed установлен так, чтобы выборка всегда была разной.

  4. Да, слабые места, конечно, есть. Слой Текстовой Векторизации перегружен callback-функцией, которая реализует обработку входных данных. Злоумышленник может использовать различные кодировки, чтобы остаться незамеченным. Поэтому в callback функции надо получше отлавливать такие моменты, я просто с кодировками плохо знаком, а то tplmap иногда западает

По поводу исходников и датасетов: я выложу их, ток немного причешу код, так как он не очень pythonic way получился, я в основном системным программированием занимался на C++. Это моя вторая попытка писать нейронки. По поводу paperswithcode спасибо за наводку, это что-то типа Hugging face?

Я увидел в статье Яна Лекуна (https://arxiv.org/pdf/1502.01710.pdf), что он применяет свёрточную нейросеть для распознавания естественных языков на уровне символов, поэтому подумал, что для формальной выборки свёртки тоже могут подойти. А в статье Юна Кима (https://arxiv.org/pdf/1408.5882.pdf) увидел многоканальную CNN для классификации предложений. Более того, Джейсон Браунли тоже использовал CNN для классификации текстов (https://machinelearningmastery.com/develop-word-embedding-model-predicting-movie-review-sentiment/). Поэтому выбор пал на CNN

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность