Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Final-project-SQL-injection-pipeline — Híbridos pipelines de machine-learning para detectar inyección SQL en tráfico web, combinando modelos DistilBERT y BERT-GNN con entrenamiento adversarial y análisis de robustez. | Kitploit
Herramientas/GitHubGitHub/mlily2024/final-project-sql-injection-pipeline
Análisis de VulnerabilidadesSeguridad WebAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y EducaciónDetección de Anomalías
GitHubmlily2024/final-project-sql-injection-pipeline

Final-project-SQL-injection-pipeline

Híbridos pipelines de machine-learning para detectar inyección SQL en tráfico web, combinando modelos DistilBERT y BERT-GNN con entrenamiento adversarial y análisis de robustez.

Ver Repositorio
2hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Detección de Inyección SQL — Pipelines Híbridos de ML

Código fuente para la tesis de MSc: Mejora del Firewall de Aplicaciones Web con Aprendizaje Automático para la Detección de Inyección SQL

AutorLilliane Linnet Musoke
InstituciónUniversidad de Reading, Departamento de Ciencias de la Computación
ProgramaMSc en Ciencia de Datos y Computación Avanzada
SupervisorProfesor Atta Badii
Presentado17 de septiembre de 2024

Qué contiene este repositorio

Dos novedosos pipelines híbridos de Aprendizaje Automático, cada uno implementado como un cuaderno Jupyter autocontenido, para detectar ataques de Inyección SQL (SQLi) en el tráfico de aplicaciones web:

  1. DistilBERT_Stacked_Ensemble_pipeline.ipynb — un pipeline de Ensemble Apilado con DistilBERT (Meta-Aprendiz). Utiliza embeddings contextuales de DistilBERT como entrada a una pila de clasificadores convencionales de ML y ensembles (Regresión Logística, XGBoost, SVM), combinados bajo un meta-aprendiz de red neuronal. El entrenamiento adversarial se realiza con el Método del Signo del Gradiente Rápido (FGSM); los hiperparámetros se ajustan con Optuna.
  2. BERT_GNN_pipeline_FINAL.ipynb — un pipeline híbrido BERT–Red Neuronal de Grafos (GNN). BERT genera embeddings contextuales de las consultas SQL; una GNN modela la representación de la consulta como estructura de grafo para capturar patrones estructurales. Hiperparámetros ajustados con Optuna.

Además, el conjunto de datos utilizado para entrenar y evaluar ambos pipelines:

  1. SQL_Injection_Dataset.csv — consultas SQL etiquetadas (benignas vs maliciosas).

Resultados principales (de la tesis)

PipelinePrecisiónPrecisión adversarial (FGSM)Notas
Ensemble Apilado DistilBERT99.81%99.77%Enfoque recomendado seleccionado; tiempo de ejecución rápido
BERT-GNN99.48% (99.67% en validación retenida)—Comprensión estructural superior; mayor tiempo de ejecución (23.13 s); el reentrenamiento con validación retenida alcanza el 99.67%, ver RESULTS.md
Mejor línea base convencional (Random Forest)94.47%—Evaluado comparativamente en el mismo estudio

Las cuatro métricas de rendimiento (precisión, exhaustividad, puntuación F1 y exactitud) alcanzan la misma cifra principal para ambos pipelines híbridos. Las tablas completas por modelo, matrices de confusión, curvas ROC, curvas de aprendizaje y análisis de sensibilidad se encuentran en los cuadernos y en la tesis.

La precisión adversarial del Ensemble Apilado DistilBERT de 99.77% supera el resultado comparable de pruebas adversariales reportado por Guan et al. (2023, Future Internet 15(4):133, DOI 10.3390/fi15040133) en un 2.38% — ver la sección §4.4 de la tesis para la comparación completa.

Cómo ver el trabajo

  • Cuadernos — los dos archivos .ipynb en la raíz del repositorio contienen el código completo del pipeline (carga de datos, preprocesamiento, embeddings, entrenamiento, evaluación, robustez adversarial, análisis de sensibilidad). Las salidas están eliminadas para que los cuadernos se rendericen rápido y ligero en GitHub; ejecutar cualquiera de los cuadernos de principio a fin regenera cada figura.
  • Galería de resultados — RESULTS.md muestra todas las figuras (matrices de confusión, curvas ROC, curvas de aprendizaje, gráficos de análisis de sensibilidad, comparación por modelo) como una galería visible sin necesidad de ejecutar nada.
  • Todas las figuras — exportaciones PNG individuales de cada figura de resultados están en la carpeta results/, nombradas por pipeline y sección.

Cómo ejecutar los cuadernos localmente

Probado bajo Python 3.10+ con un entorno Jupyter. Para instalar todas las dependencias:

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

Luego abra cualquiera de los cuadernos en JupyterLab o VS Code y ejecute las celdas de arriba a abajo. Cada pipeline es totalmente autocontenido: carga y preprocesamiento de datos → extracción de embeddings → entrenamiento del modelo → evaluación → verificación de robustez adversarial → análisis de sensibilidad. Se recomienda una GPU para el paso de entrenamiento de BERT-GNN, pero no es necesaria para la inferencia ni para el Ensemble Apilado DistilBERT.

Requisito de recursos. El paso de extracción de embeddings de DistilBERT (y BERT) mantiene el modelo de lenguaje y sus embeddings de todo el conjunto de datos en memoria simultáneamente. La ejecución de principio a fin necesita aproximadamente 6–8 GB de RAM libre para el pipeline del Ensemble Apilado DistilBERT y 8–12 GB para BERT-GNN. Los cuadernos se desarrollaron originalmente en Google Colab (que proporciona 12–16 GB y una GPU gratuita). Si se ejecuta localmente en una máquina con 8 GB de RAM total, cierre otras aplicaciones primero o ejecute en Colab mediante los enlaces de insignia en la parte superior de cada cuaderno.

Reproducción de los resultados de la revisión

Los scripts en la raíz del repositorio regeneran el análisis ampliado reportado en el artículo revisado de BERT-GNN (ablación, evaluación corregida con validación retenida, grafo consciente de la estructura, robustez a la ofuscación, la suite de robustez de siete pruebas, métricas completas y tiempo de ejecución entre modelos). Leen el SQL_Injection_Dataset.csv confirmado, escriben sus salidas en results/, y almacenan en caché artefactos intermedios (embeddings de BERT, grafos, modelos entrenados) bajo .structure_work/ y .corrected_work/. Esos directorios de caché no se rastrean intencionalmente; cada script los reconstruye a partir del conjunto de datos y es reanudable, por lo que una ejecución interrumpida en una máquina solo con CPU puede simplemente reiniciarse y continuará.

Los scripts forman una cadena productor→consumidor a través de esas cachés, así que ejecútelos en este orden (cada paso solo necesita el conjunto de datos más las cachés escritas por los pasos anteriores):

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

python structure_graph_gnn.py        # grafos de estructura + best.json (Optuna) + resultado GNN de estructura
python corrected_bertgnn_retrain.py  # reentrenamiento con validación retenida (grafo de cadena) -> resultado corregido
python extract_train_cls.py          # embeddings BERT [CLS] del split de entrenamiento (train_cls.npy)
python bert_only_ablation.py         # cabezales solo-BERT en el conjunto de prueba idéntico
python obfuscation_robustness.py     # entrena + almacena en caché gnn_model.pt / mlp_model.pkl; recall de evasión
python robustness_1_sensitivity.py   # suite de robustez de siete pruebas, un script cada una
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            # tablas completas de métricas por clase
python complexity_breakdown.py       # precisión por complejidad de consulta (Tabla 4)
python make_result_figures.py        # matrices de confusión + gráficos de comparación
python model_execution_times.py      # tiempo de entrenamiento + inferencia en todos los modelos

Todos los scripts resuelven sus rutas relativas al repositorio, usan una semilla fija (random_state=42) y no requieren argumentos. La ejecución en CPU es totalmente compatible (una GPU solo acelera los pasos de embeddings y entrenamiento de GNN).

Precisión esperada de la reproducción. Los números se reproducen aproximadamente con ±0.1–0.2 puntos porcentuales en lugar de bit por bit. La variación menor proviene de la ejecución en CPU frente a GPU, el no determinismo de PyTorch y la época de parada temprana que difiere en uno o dos entre ejecuciones. Las conclusiones reportadas (el grafo no añade ganancia en precisión limpia pero mejora la robustez frente a la evasión por codificación de URL, y las pruebas estadísticas asociadas) son estables dentro de ese margen.

Agradecimientos

Supervisor: Profesor Atta Badii (Universidad de Reading). Agradecimiento también al candidato a doctorado Ahmed Ashlam por sus consejos durante la ejecución del proyecto. Ambos son reconocidos en la tesis.

Citación

Si hace referencia a este trabajo:

Musoke, L. L. (2024). Mejora del Firewall de Aplicaciones Web con Aprendizaje Automático para la Detección de Inyección SQL. Tesis de MSc, Universidad de Reading.

Licencia

Publicado bajo la Licencia MIT.

Repositorio complementario

Este repositorio de GitHub refleja la presentación original en el Gitlab institucional de la Universidad de Reading: https://csgitlab.reading.ac.uk/qz820024/sql-injection-pipeline-project.


Declaración de obra original (de la tesis): "Yo, Lilliane Linnet Musoke, del Departamento de Ciencias de la Computación de la Universidad de Reading, atestiguo que esta es mi obra original, excepto en aquellos casos en los que he reconocido explícitamente las contribuciones de otros autores."

Descargar herramienta