
Code pour l'article ACL 2026 (principal) "DeepGuard : Génération de code sécurisée via agrégation sémantique multicouche"

DeepGuard est une approche innovante de génération de code sécurisé qui améliore la capacité des grands modèles de langage à produire du code sécurisé grâce à des techniques d'agrégation sémantique multi-couches. Cette méthode identifie et atténue efficacement les vulnérabilités de sécurité dans le code, offrant aux développeurs des solutions de génération de code plus sûres.
.
├── data_train_val/ # Ensembles de données d'entraînement et de validation
│ ├── train/ # Données d'entraînement
│ └── val/ # Données de validation
├── data_eval/ # Ensembles de données d'évaluation
│ ├── sec_eval/ # Données d'évaluation de la sécurité
│ └── unit_test/ # Données de tests unitaires
├── deepguard/ # Implémentation principale de DeepGuard
│ ├── train.py # Script d'entraînement
│ └── inference.py # Script d'inférence
├── sven/ # Framework de base SVEN
├── cosec/ # Implémentation de base CoSec
├── runs/ # Scripts d'entraînement et d'évaluation
│ ├── run_sec_deepguard.sh # Script d'évaluation DeepGuard
│ ├── run_sec_cosec.sh # Script d'évaluation CoSec
│ └── run_sec_base.sh # Script d'évaluation de base
├── trained/ # Poids de modèles pré-entraînés
├── images/ # Images liées au projet
├── requirements.txt # Dépendances Python
├── setup.py # Configuration d'installation
└── README.md # Documentation du projet
pip install -r requirements.txt
pip install -e .
./setup_codeql.sh
Entraînez les modèles DeepGuard avec notre jeu de données organisé :
cd deepguard
python train.py --model_name qwen2.5-7b --aggregation_method attention
Paramètres d'entraînement :
--model_name : Nom du modèle de base (qwen2.5-3b, qwen2.5-7b, deepseek-1.3b, deepseek-6.7b, seedcoder-8b)--aggregation_method : Méthode d'agrégationExécutez les scripts d'évaluation de sécurité :
cd runs
# Évaluer les modèles DeepGuard
bash run_sec_deepguard.sh
# Évaluer la base CoSec
bash run_sec_cosec.sh
# Évaluer les modèles de base
bash run_sec_base.sh
Agrégateur sémantique multi-couches pour intégrer les états cachés des différentes couches Transformer :
class MultiLayerAggregator(nn.Module):
def __init__(self, num_layers, hidden_size, aggregation_method='attention'):
# Prend en charge les méthodes d'agrégation attention, weighted, concat
# Optimise les contributions des différentes couches via des poids appris
Analyseur de sécurité pour évaluer la sécurité du code et fournir des conseils de sécurité :
class SecurityAnalyzer(nn.Module):
def __init__(self, vocab_size, hidden_size, num_layers=4):
# Combine les embeddings de sécurité au niveau des tokens et le traitement du contexte
# Produit des scores de sécurité pour guider le processus de génération
Modèle LoRA sensible à la sécurité pour une amélioration efficace de la sécurité :
class SecurityAwareLoRAModel(nn.Module):
def generate_with_security(self, input_ids, **kwargs):
# Ajustement dynamique lors de la génération pour améliorer la sécurité
# Utilise les scores de sécurité pour guider la sélection des tokens
DeepGuard peut détecter et atténuer diverses vulnérabilités de sécurité courantes dans plusieurs langages de programmation :
| ID CWE | Nom de la vulnérabilité | Description | Langages pris en charge | Niveau de gravité |
|---|---|---|---|---|
| CWE-020 | Validation incorrecte des entrées | Validation insuffisante des entrées pouvant entraîner divers problèmes de sécurité | Python | Élevé |
| CWE-022 | Limitation incorrecte d'un chemin vers un répertoire restreint | Vulnérabilité de traversée de chemin permettant l'accès à des fichiers en dehors des répertoires restreints | Python | Élevé |
| CWE-078 | Injection de commandes système | Injection de commandes du système d'exploitation permettant l'exécution de commandes système arbitraires | Python | Critique |
| CWE-079 | Cross-site scripting (XSS) | Attaques par cross-site scripting permettant l'exécution de scripts malveillants dans les navigateurs des utilisateurs | Python | Élevé |
| CWE-089 | Injection SQL | Attaques par injection SQL permettant la manipulation de requêtes de base de données | Python | Critique |
| CWE-119 | Débordement de tampon | Débordement de tampon pouvant entraîner une exécution de code ou un plantage du système | C | Critique |
| CWE-125 | Lecture hors limites | Lecture hors limites pouvant entraîner une divulgation d'informations | C | Moyen |
| CWE-190 | Dépassement d'entier | Dépassement d'entier pouvant entraîner un comportement inattendu ou des vulnérabilités de sécurité | C | Moyen |
| CWE-416 | Utilisation après libération | Vulnérabilité d'utilisation après libération pouvant entraîner une exécution de code ou un plantage du système | C | Critique |
| CWE-476 | Déréférencement de pointeur NULL | Déréférencement de pointeur NULL pouvant provoquer un plantage du programme | C | Moyen |
| CWE-502 | Désérialisation de données non fiables | Désérialisation de données non fiables pouvant entraîner une exécution de code | Python | Élevé |
| CWE-732 | Attribution incorrecte des permissions | Attribution incorrecte des permissions pouvant entraîner un accès non autorisé | Python, C | Moyen |
| CWE-787 | Écriture hors limites | Écriture hors limites pouvant entraîner une exécution de code ou une corruption de données | C | Critique |
DeepGuard prend en charge deux modes d'évaluation :
Chaque type de vulnérabilité fournit des cas de test et des données d'évaluation correspondants dans les répertoires data_eval/unit_test/ et data_eval/sec_eval/.
Nous fournissons des exemples de programmes générés par le modèle de base et DeepGuard pour illustrer leurs comportements.