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
Vulnerability AnalysisWeb SecurityMachine LearningPapers & ResearchLearning & EducationAnomaly Detection
GitHubmlily2024/final-project-sql-injection-pipeline

Final-project-SQL-injection-pipeline

하이브리드 머신러닝 파이프라인으로 웹 트래픽에서 SQL 인젝션을 탐지하며, DistilBERT와 BERT-GNN 모델을 결합하고 적대적 훈련 및 견고성 분석을 포함합니다.

저장소 보기
21개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SQL 인젝션 탐지 — 하이브리드 ML 파이프라인

MSc 학위논문 소스 코드: 머신러닝을 활용한 웹 애플리케이션 방화벽 강화를 통한 SQL 인젝션 탐지

저자Lilliane Linnet Musoke
기관University of Reading, 컴퓨터과학과
과정MSc 데이터 사이언스 및 고급 컴퓨팅
지도교수Professor Atta Badii
제출일2024년 9월 17일

이 저장소의 내용

웹 애플리케이션 트래픽에서 SQL 인젝션(SQLi) 공격을 탐지하기 위한 두 가지 새로운 하이브리드 머신러닝 파이프라인으로, 각각 독립적인 Jupyter 노트북으로 구현되어 있습니다:

  1. DistilBERT_Stacked_Ensemble_pipeline.ipynb — DistilBERT-스태킹 앙상블(메타러너) 파이프라인. DistilBERT 컨텍스트 임베딩을 기존 ML 및 앙상블 분류기(로지스틱 회귀, XGBoost, SVM) 스택의 입력으로 사용하며, 신경망 메타러너 아래에서 결합됩니다. 적대적 훈련은 FGSM(Fast Gradient Sign Method)으로 수행되며, 하이퍼파라미터는 Optuna로 튜닝됩니다.
  2. BERT_GNN_pipeline_FINAL.ipynb — BERT-그래프 신경망 하이브리드 파이프라인. BERT는 SQL 쿼리의 컨텍스트 임베딩을 생성하고, GNN은 그래프 구조화된 쿼리 표현을 모델링하여 구조적 패턴을 포착합니다. 하이퍼파라미터는 Optuna로 튜닝됩니다.

또한 두 파이프라인을 훈련하고 평가하는 데 사용된 데이터셋:

  1. SQL_Injection_Dataset.csv — 레이블이 지정된 SQL 쿼리(정상 vs 악성).

주요 결과(학위논문 기준)

파이프라인정확도적대적 정확도(FGSM)비고
DistilBERT-스태킹 앙상블99.81%99.77%권장 접근법으로 선정됨; 실행 시간이 빠름
BERT-GNN99.48% (홀드아웃 99.67%)—구조 이해력 우수; 실행 시간이 더 김(23.13초); 홀드아웃 검증 재훈련 시 99.67% 도달, RESULTS.md 참조
최고 기존 베이스라인(랜덤 포레스트)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) 임베딩 추출 단계는 언어 모델과 전체 데이터셋 임베딩을 동시에 메모리에 보관합니다. 종단 간 실행에는 DistilBERT-스태킹 앙상블 파이프라인의 경우 약 6–8GB의 여유 RAM, BERT-GNN의 경우 8–12GB가 필요합니다. 노트북은 원래 Google Colab(12–16GB 및 무료 GPU 제공)에서 개발되었습니다. 총 RAM이 8GB인 머신에서 로컬로 실행하는 경우 먼저 다른 애플리케이션을 닫거나 각 노트북 상단의 배지 링크를 통해 Colab에서 실행하세요.

개정 결과 재현

저장소 루트의 스크립트는 개정된 BERT-GNN 논문에 보고된 확장 분석(절제 연구, 수정된 홀드아웃 평가, 구조 인식 그래프, 난독화 견고성, 7가지 테스트 견고성 스위트, 전체 지표, 교차 모델 실행 시간)을 재생성합니다. 이 스크립트들은 커밋된 SQL_Injection_Dataset.csv를 읽고, 출력을 results/에 쓰며, 중간 산출물(BERT 임베딩, 그래프, 훈련된 모델)을 .structure_work/ 및 .corrected_work/ 아래에 캐시합니다. 해당 캐시 디렉터리는 의도적으로 추적되지 않습니다. 각 스크립트는 데이터셋에서 이를 재구축하며 재개 가능하므로, CPU 전용 머신에서 중단된 실행은 다시 시작하기만 하면 계속됩니다.

스크립트는 해당 캐시를 통해 생산자→소비자 체인을 형성하므로 다음 순서로 실행하세요(각 단계는 데이터셋과 이전 단계에서 작성된 캐시만 필요):

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

python structure_graph_gnn.py        # 구조 그래프 + best.json(Optuna) + 구조-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   # 7가지 테스트 견고성 스위트, 각각 하나의 스크립트
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 비결정성, 조기 종료 에포크가 실행 간 1~2회 차이가 나는 것에서 발생합니다. 보고된 결론(그래프는 깨끗한 정확도 향상을 추가하지 않지만 URL 인코딩 회피에 대한 견고성을 향상시키며, 관련 통계 테스트)은 해당 오차 범위 내에서 안정적입니다.

감사의 말

지도교수: Professor Atta Badii(University of Reading). 또한 프로젝트 실행 중 조언을 제공한 박사 과정 Ahmed Ashlam에게도 감사를 표합니다. 두 분 모두 학위논문에서 감사 인사를 받았습니다.

인용

이 작업을 참조하는 경우:

Musoke, L. L. (2024). Enhancing Web Application Firewall with Machine Learning for SQL Injection Detection. MSc 학위논문, University of Reading.

라이선스

MIT 라이선스에 따라 배포됩니다.

관련 저장소

이 GitHub 저장소는 University of Reading 기관 Gitlab의 원본 제출물을 미러링합니다: https://csgitlab.reading.ac.uk/qz820024/sql-injection-pipeline-project.


원본 작업 선언(학위논문에서 발췌): "저는 University of Reading 컴퓨터과학과의 Lilliane Linnet Musoke는 다른 저자의 기여를 명시적으로 인정한 경우를 제외하고, 이것이 나의 원본 작업임을 증명합니다."

도구 다운로드