Pull to refresh

Comments 6

Какова вероятность того, что данные, на которых обучают сеть, и которые предполагаемо чистые, уже содержат реальную вредную активность?
да, вероятность попадания запросов с атаками в выборку для обучения есть, но тестирование модели происходит на заготовленной отложенной выборке и если после обучения модель на заготовленных чистых данных дает плохой результат — повод не деплоить конкретно эту версию.

В продакшн версии у нас на обучение идут только те запросы, которые прошли стандартные правила и прошлую версию модели.
сколько запросов в секунду классифицирует сеть на CPU? Это ключевой вопрос, потому что даже если использовать эту сеть как WAF для небольшого хостинга, придется обрабатывать десятки тысяч запросов в секунду. Какие для этого мощности потребуются?
Еще раз хочется уточнить, что представленное решение — попробованный нами подход к задаче детекта атак. И конкретно для такой версии мы, конечно, не замеряли производительность. Данное решение — не продакшн версия по многим причинам!

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

Спасибо за статью. К сожалению, я не все понял, и хотел уточнить у Вас кое-какие детали.


  1. Каким образом Вы с помощью автоэнкодера решаете аномален ли запрос или нет? Выдаёт ли Ваша модель ответ вида Да/Нет? Расскажите подробнее как выглядит ответ для НЕ аномального запроса? Или это отдельная модель на основе кодера — используете мультатскинг?


  2. Когда декодер выдаёт результат, то длина выходного вектора в общем то может не равняться длине входа. Как Вы потом эти вероятности маппите на исходный входной текст запроса, если размеры не совпали?


  3. Допустим вероятности получены и их количество равно количеству символов входного запроса. Как Вы определяете трешхолд вероятности выше «нормальной», что символ должен быть помечена как аномальный символ? Просто используете 0.5?


  4. Как Вы решали проблему несбалансированных классов примтреннировке? Ведь аномальных запросов намного меньше, чем нормальных и модель, не так ли?


  5. Как выглядела Ваша тренировочная выборка — Вы вручную разметили в анормальных запросах аномальные куски текста?


1. Об этом написано в части «Автоэнкодеры». Если резюмировать еще раз кратко. Мы обучаем автоэнкодер восстанавливать входную последовательность. Т.е. на входе «строка» и обучаем, чтобы на выходе тоже была эта же «строка». И обучаем только на запросах не содержащих атаку. Когда встречается запрос с атакой «ст' or 1==1'--рока» — нетипичной последовательностью символов — декодер никогда такого не видел. Соответственно на выходе декодирует некорректно и строка с входом не совпадают.

2. Продолжая овтет на первый вопрос. Мы обучаем декодировать в туже последовательность, что и пришла на вход. Значит длина вектора должна быть такой же. Если не такая же, то что-то не так -> можем интерпритировать как аномалию.

3. Да, трешхолд задается вручную в зависимости от конкретного веб-сервиса.

4,5 Мы обучаем только на запросах не содержащих атаку. Кстати, датасет доступен в репозитории. Там еще есть линк на докер, который можно позапускать у себя.
Sign up to leave a comment.