Projet de fin d'étude : Détection intelligente des vulnérabilités SQL Injection par compréhension contextuelle du code source à l'aide des grands modèles de langage (LLMs)
Etudiant : BOULAGOUAZ SANAE
Filière : Master Big Data et Systèmes intelligents (BDSI)
Encadrant : Pr. EL-BATTEOUI ISMAIL
Annèe : 2026
Résumé : La sécurité des applications web constitue un enjeu stratégique majeur à l'ère de la transformation numérique accélérée. L'injection SQL (CWE-89), qui permet à un attaquant d'interagir directement avec la base de données via des entrées utilisateur non sécurisées, figure parmi les vulnérabilités les plus critiques et les plus exploitées selon l'OWASP Top 10, où elle occupait la 3ᵉ place dans l'édition 2023 et reste classée 5ᵉ dans l'édition 2025 malgré un recul lié à l'adoption de frameworks modernes — tout en conservant le plus grand nombre de CVE associées de toutes les catégories. Malgré des décennies de sensibilisation, les outils de détection traditionnels présentent des limites structurelles qui empêchent une généralisation efficace aux pratiques de développement modernes. Les outils d'analyse statique (SAST) et dynamique (DAST) souffrent de limites structurelles importantes : taux élevés de faux positifs atteignant 50 à 80 %, incapacité à modéliser la sémantique des abstractions modernes (ORM, PDO, PreparedStatement, MyBatis), et non-généralisation inter-langages face à des bases de code multi-technologies. Par ailleurs, le dataset de référence SARD (NIST) — benchmark standard pour la détection de vulnérabilités — contient 0 % de patterns modernes de développement sécurisé dans ses 84 452 exemples PHP CWE-89, créant un biais de représentativité critique. Nous proposons SQLiDetector V5, un système fondé sur le fine-tuning supervisé de CodeBERT (microsoft/codebert-base, 125M paramètres), modèle de langage pré-entraîné bimodal sur 6,4 millions de fonctions GitHub en Python, Java, JavaScript et PHP, etc. Pour corriger les biais structurels du dataset SARD, une phase d'augmentation ciblée enrichit le corpus avec 94 exemples artisanaux multi-langages (PHP, Python, Java, JavaScript) augmentés ×40, produisant un dataset final de 88 212 exemples. Un préfixage contextuel [LANG] permet à un modèle unique de couvrir simultanément quatre langages de programmation (Innovation V5). Un module de préfiltrage HTML intelligent (extract_server_code(), 6 stratégies) combiné à un moteur d'inférence Sliding Window (510 tokens / stride 128 / recouvrement 75 % / agrégation MAX-PROB) permet l'analyse directe de fichiers web réels sans perte contextuelle (Innovation V5). L'entraînement utilise un WeightedTrainer personnalisé (w[Sain]=0,6385, w[Vuln]=2,3051) avec EarlyStopping (patience=2 sur F1), convergeant à l'epoch 2 en 66,5 minutes sur GPU T4. Évalué sur un test set de 13 232 exemples jamais vus, la solution proposée SQLiDetector atteint une AUC-ROC de 0,9603, un Recall de 98,9 % au seuil Youden de 0,291 et une Average Precision de 0,8821 avec seulement 33 faux négatifs sur 2 870 exemples vulnérables. Au seuil par défaut de 0,5, la Précision atteint 64,2 % et le F1 = 0,751