Généralités
Failles d'Injection SQL (SQL Injection)
Description
Les failles d'injection SQL se produisent lorsque des entrées utilisateur sont directement incluses dans des requêtes SQL sans validation ou échappement adéquat. Cela permet à un attaquant de manipuler les requêtes SQL exécutées par l'application, pouvant conduire à la divulgation de données sensibles, à la modification de données, à l'exécution de commandes administratives sur la base de données, et à d'autres conséquences graves.
Exemple d'Attaque SQL Injection
Scénario d'attaque :
- Une application web accepte des entrées utilisateur et les utilise directement dans une requête SQL, par exemple une page de connexion qui vérifie les identifiants des utilisateurs.
Exemple de code vulnérable :
Exploitation :
- Un attaquant peut manipuler les entrées pour altérer la requête SQL, par exemple en entrant
' OR '1'='1
comme nom d'utilisateur ou mot de passe.
Prévention des Attaques SQL Injection
Utilisation de Requêtes Préparées :
- Utiliser des requêtes préparées avec des paramètres liés pour empêcher l'injection SQL.
Échappement des Entrées Utilisateur :
- Échapper correctement toutes les entrées utilisateur avant de les inclure dans des requêtes SQL.
Utilisation d'ORMs :
- Utiliser des Object-Relational Mappers (ORMs) qui abstraient les requêtes SQL et fournissent des mécanismes de protection contre les injections SQL.
Détection des Failles SQL Injection
Revue de Code :
- Examiner le code source pour identifier les endroits où des entrées utilisateur sont directement incluses dans des requêtes SQL sans validation ou échappement adéquat.
Tests Manuels :
- Effectuer des tests manuels en manipulant les paramètres de requêtes pour vérifier la présence de vulnérabilités d'injection SQL.
Utilisation d'Outils de Sécurité :
- Utiliser des outils de sécurité tels que SQLMap, Burp Suite, ou des scanners spécifiques pour détecter les failles d'injection SQL.
Exemples de Prévention
Requêtes Préparées :
Utilisation de PDO :
Validation et Sanitation des Entrées :
Catégorie | Information |
---|---|
TTP | Technique d'injection de code SQL dans les requêtes de base de données |
CWE | CWE-89 (Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')) |
Description de l'attaque | L'injection SQL se produit lorsqu'un attaquant insère ou "injecte" une requête SQL malveillante via les données d'entrée d'une application. Cela peut permettre à l'attaquant de lire, modifier, ou supprimer des données dans la base de données. |
Impacts potentiels | - Fuite de données confidentielles - Perte d'intégrité des données - Prise de contrôle de la base de données |
Comment la détecter | - Analyse des journaux d'applications pour des requêtes SQL suspectes - Utilisation de systèmes de détection d'intrusion - Tests de pénétration et scans de vulnérabilité |
Remédiations/mitigations | - Utilisation de requêtes préparées (PreparedStatement) et ORM - Validation et échappement des entrées utilisateur - Mise en œuvre de listes blanches pour les entrées utilisateur - Formation des développeurs aux pratiques sécurisées de codage |
Lien de référence | OWASP - SQL Injection |