Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

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

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Final-project-SQL-injection-pipeline — Гибридные конвейеры машинного обучения для обнаружения SQL-инъекций в веб-трафике, объединяющие модели DistilBERT и BERT-GNN с состязательным обучением и анализом устойчивости. | Kitploit
Инструменты/GitHubGitHub/mlily2024/final-project-sql-injection-pipeline
Анализ уязвимостейВеб-безопасностьМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеОбнаружение Аномалий
GitHubmlily2024/final-project-sql-injection-pipeline

Final-project-SQL-injection-pipeline

Гибридные конвейеры машинного обучения для обнаружения SQL-инъекций в веб-трафике, объединяющие модели DistilBERT и BERT-GNN с состязательным обучением и анализом устойчивости.

Репозиторий
21 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Обнаружение SQL-инъекций — гибридные ML-конвейеры

Исходный код магистерской диссертации: Enhancing Web Application Firewall with Machine Learning for SQL Injection Detection

АвторLilliane Linnet Musoke
УчреждениеУниверситет Рединга, факультет компьютерных наук
ПрограммаMSc Data Science and Advanced Computing
Научный руководительПрофессор Atta Badii
Дата подачи17 сентября 2024 г.

Что содержится в этом репозитории

Два новых гибридных конвейера машинного обучения, каждый из которых реализован в виде автономного Jupyter-ноутбука, для обнаружения атак SQL-инъекций (SQLi) в трафике веб-приложений:

  1. DistilBERT_Stacked_Ensemble_pipeline.ipynb — конвейер DistilBERT-стекового ансамбля (мета-обучающийся). Использует контекстные эмбеддинги DistilBERT в качестве входных данных для стека классических ML- и ансамблевых классификаторов (Logistic Regression, XGBoost, SVM), объединённых под нейросетевым мета-обучающимся. Состязательное обучение выполняется с помощью метода Fast Gradient Sign Method (FGSM); гиперпараметры настраиваются с помощью Optuna.
  2. BERT_GNN_pipeline_FINAL.ipynb — гибридный конвейер BERT–графовая нейронная сеть. BERT генерирует контекстные эмбеддинги SQL-запросов; GNN моделирует графовое представление запроса для выявления структурных закономерностей. Гиперпараметры настраиваются с помощью Optuna.

Плюс набор данных, использованный для обучения и оценки обоих конвейеров:

  1. SQL_Injection_Dataset.csv — размеченные SQL-запросы (безвредные и вредоносные).

Ключевые результаты (из диссертации)

КонвейерТочностьСостязательная точность (FGSM)Примечания
DistilBERT-стековый ансамбль99,81%99,77%Выбранный рекомендуемый подход; быстрое время выполнения
BERT-GNN99,48% (99,67% на отложенной выборке)—Превосходное структурное понимание; большее время выполнения (23,13 с); повторное обучение на отложенной валидации достигает 99,67%, см. RESULTS.md
Лучший традиционный базовый подход (Random Forest)94,47%—Протестирован в том же исследовании

Все четыре метрики производительности (точность, полнота, F1-мера) достигают того же ключевого показателя для обоих гибридных конвейеров. Полные таблицы по каждой модели, матрицы ошибок, ROC-кривые, кривые обучения и анализ чувствительности приведены в ноутбуках и в диссертации.

Состязательная точность DistilBERT-стекового ансамбля 99,77% превышает сопоставимый результат состязательного тестирования, сообщённый Guan et al. (2023, Future Internet 15(4):133, DOI 10.3390/fi15040133), на 2,38% — см. полное сравнение в §4.4 диссертации.

Как просмотреть работу

  • Ноутбуки — два файла .ipynb в корне репозитория содержат полный код конвейеров (загрузка данных, предобработка, эмбеддинги, обучение, оценка, состязательная устойчивость, анализ чувствительности). Выходные данные удалены, чтобы ноутбуки быстро и компактно отображались на GitHub; запуск любого ноутбука сверху вниз восстанавливает все рисунки.
  • Галерея результатов — RESULTS.md показывает все рисунки (матрицы ошибок, ROC-кривые, кривые обучения, графики анализа чувствительности, сравнение моделей) в виде просматриваемой галереи без необходимости что-либо запускать.
  • Все рисунки — отдельные PNG-экспорты каждого рисунка результатов находятся в папке results/ и названы по конвейеру и разделу.

Как запустить ноутбуки локально

Протестировано на Python 3.10+ в среде Jupyter. Для установки всех зависимостей:

root@kitploit:~
python -m venv .venv
source .venv/bin/activate          # macOS / Linux
.venv\Scripts\activate             # Windows
pip install -r requirements.txt

Затем откройте любой ноутбук в JupyterLab или VS Code и запустите ячейки сверху вниз. Каждый конвейер полностью автономен: загрузка и предобработка данных → извлечение эмбеддингов → обучение модели → оценка → проверка состязательной устойчивости → анализ чувствительности. Для этапа обучения BERT-GNN рекомендуется GPU, но он не обязателен для инференса или для DistilBERT-стекового ансамбля.

Требования к ресурсам. Этап извлечения эмбеддингов DistilBERT (и BERT) одновременно удерживает в памяти языковую модель и её эмбеддинги для всего набора данных. Для сквозного выполнения требуется примерно 6–8 ГБ свободной оперативной памяти для конвейера DistilBERT-стекового ансамбля и 8–12 ГБ для BERT-GNN. Ноутбуки изначально разрабатывались на Google Colab (который предоставляет 12–16 ГБ и бесплатный GPU). При локальном запуске на машине с 8 ГБ общей оперативной памяти сначала закройте другие приложения или запустите в Colab по ссылкам-бейджам в верхней части каждого ноутбука.

Воспроизведение результатов ревизии

Скрипты в корне репозитория восстанавливают расширенный анализ, описанный в пересмотренной статье о BERT-GNN (абляция, исправленная оценка на отложенной выборке, структурно-осознанный граф, устойчивость к обфускации, набор из семи тестов устойчивости, полные метрики и время выполнения между моделями). Они читают зафиксированный SQL_Injection_Dataset.csv, записывают свои выходные данные в results/ и кэшируют промежуточные артефакты (эмбеддинги BERT, графы, обученные модели) в .structure_work/ и .corrected_work/. Эти каталоги кэша намеренно не отслеживаются; каждый скрипт перестраивает их из набора данных и поддерживает возобновление, поэтому прерванный запуск на машине без GPU можно просто запустить заново, и он продолжится.

Скрипты образуют цепочку «производитель→потребитель» через эти кэши, поэтому запускайте их в следующем порядке (каждому шагу нужен только набор данных плюс кэши, записанные предыдущими шагами):

root@kitploit:~
pip install -r requirements.txt

python structure_graph_gnn.py        # структурные графы + best.json (Optuna) + результат structure-GNN
python corrected_bertgnn_retrain.py  # повторное обучение на отложенной валидации (цепочка графов) -> исправленный результат
python extract_train_cls.py          # эмбеддинги BERT [CLS] для обучающей выборки (train_cls.npy)
python bert_only_ablation.py         # только BERT-головы на идентичном тестовом наборе
python obfuscation_robustness.py     # обучает + кэширует gnn_model.pt / mlp_model.pkl; полнота обхода
python robustness_1_sensitivity.py   # набор из семи тестов устойчивости, по одному скрипту на каждый
python robustness_2_adversarial.py
python robustness_3_obfuscation_extended.py
python robustness_4_adaptive.py
python robustness_5_crossdataset.py
python robustness_6_significance.py
python robustness_7_calibration.py
python metrics_summary.py            # полные таблицы метрик по классам
python complexity_breakdown.py       # точность по сложности запросов (Таблица 4)
python make_result_figures.py        # матрицы ошибок + сравнительные графики
python model_execution_times.py      # время обучения + инференса для всех моделей

Все скрипты разрешают свои пути относительно репозитория, используют фиксированное зерно (random_state=42) и не требуют аргументов. Полностью поддерживается запуск на CPU (GPU только ускоряет этапы эмбеддингов и обучения GNN).

Ожидаемая точность воспроизведения. Числа воспроизводятся с точностью примерно ±0,1–0,2 процентных пункта, а не побитово. Незначительные отклонения возникают из-за выполнения на CPU и GPU, недетерминизма PyTorch и различий в эпохе ранней остановки на одну-две между запусками. Сообщённые выводы (граф не даёт прироста точности на чистых данных, но улучшает устойчивость к обходу через URL-кодирование, а также связанные статистические тесты) стабильны в пределах этого допуска.

Благодарности

Научный руководитель: профессор Atta Badii (Университет Рединга). Также благодарность аспиранту Ahmed Ashlam за консультации в ходе выполнения проекта. Оба упомянуты в диссертации.

Цитирование

Если вы ссылаетесь на эту работу:

Musoke, L. L. (2024). Enhancing Web Application Firewall with Machine Learning for SQL Injection Detection. Магистерская диссертация, Университет Рединга.

Лицензия

Выпущено под лицензией MIT.

Сопутствующий репозиторий

Этот GitHub-репозиторий зеркалирует оригинальную подачу в институциональном Gitlab Университета Рединга: https://csgitlab.reading.ac.uk/qz820024/sql-injection-pipeline-project.


Декларация об оригинальности работы (из диссертации): «Я, Lilliane Linnet Musoke, с факультета компьютерных наук Университета Рединга, подтверждаю, что это моя оригинальная работа, за исключением тех случаев, где я явно указала вклад других авторов».

Скачать инструмент