Article

Qu’est-ce qu’une attaque par injection SQL et comment se protéger ?

Exploitée par des cybercriminels depuis la fin des années 1990, l’injection SQL (Structured Query Language) reste l’une des vulnérabilités les plus répandues et les plus dangereuses dans le domaine de la cybersécurité. Régulièrement classée en première position dans le Top 10 de l’OWASP, elle cible les bases de données SQL de nombreuses applications web. Cet article présente les différents types d’injections SQL, leurs conséquences, et les meilleures pratiques pour se protéger.

Consultez également notre article « Comment se protéger contre le TOP 10 de l’OWASP ? »


Injection SQL : Définition

Avant de présenter ce qu’est une attaque par injection SQL, il est essentiel de comprendre ce qu’est le Structured Query Language (SQL), le langage de requêtes standard utilisé pour gérer et manipuler des bases de données relationnelles. SQL est le moyen privilégié pour interagir avec les données stockées dans des bases, qu’il s’agisse de les lire, de les modifier, ou de les supprimer.

L’injection SQL est une technique de piratage exploitant les failles dans les applications web pour manipuler des requêtes SQL et obtenir un accès non autorisé aux bases de données. En insérant des scripts malveillants, ou en manipulant une chaîne de caractères dans les champs de saisie (comme des formulaires de connexion ou de recherche), un attaquant peut influencer l’exécution des commandes SQL de l’application et accéder à des informations sensibles.

Étant donné que la grande majorité des applications web modernes reposent sur des bases SQL, une attaque par injection SQL peut donc exposer des informations critiques et entraîner des conséquences graves pour les organisations qui y sont vulnérables.


Comment reconnaitre une attaque par injection SQL ?

Les attaques par injection SQL peuvent être difficiles à détecter. Toutefois, certains signes peuvent alerter les équipes de sécurité :

  • Messages d’erreur SQL inhabituels : des erreurs de syntaxe SQL peuvent indiquer une tentative d’injection de code malveillant.
  • Comportements anormaux des données : des données affichées incorrectement, des informations disparues ou des modifications suspectes peuvent signaler une manipulation.
  • Audits de sécurité réguliers : des analyses de code permettent de vérifier la sécurité des champs d’entrée utilisateur et de détecter les vulnérabilités potentielles.


Les différents types d’injection SQL

Voici les types d’injections SQL les plus répandus, chacun exploitant une méthode particulière pour atteindre la base de données selon les permissions du serveur :

1. Injection SQL classique (par exemple, avec `’ OR ‘1’=’1`)

Il s’agit du type d’injection SQL la plus courant, souvent exploité dans les formulaires de connexion. Cette méthode permet à un hacker d’accéder à n’importe quel compte utilisateur en modifiant la requête initiale. Par exemple :

SELECT * FROM utilisateurs WHERE nom_utilisateur = ‘nom’ AND mot_de_passe = ‘mdp’;

En ajoutant la condition `’ OR ‘1’=’1’` dans le champ de mot de passe, l’attaquant force la requête à retourner un résultat valide, obtenant un accès non autorisé.

2. Injection SQL « Union-based »

En SQL, l’opérateur `UNION` permet de combiner les résultats de plusieurs requêtes. Ce type d’injection SQL basée sur `UNION` fusionne des requêtes distinctes, donnant accès à des informations supplémentaires sans autorisation. Par exemple, un pirate peut combiner des données de plusieurs tables pour extraire des informations confidentielles.

3. Injection SQL « Blind »

Utilisée lorsque l’application ne retourne pas directement le résultat des requêtes, cette technique se base sur des tests successifs pour observer les réponses du serveur (par exemple, des différences de temps de réponse ou des erreurs). L’attaquant en déduit ainsi les informations contenues dans la base de données.

5. Injection SQL « Error-based »

Cette méthode utilise les messages d’erreur retournés par le serveur pour obtenir des informations détaillées contenues dans la base de données. Si l’application ne masque pas correctement les messages d’erreur SQL, elle peut révéler des informations précieuses à un attaquant.


Les conséquences d’une attaque par injection SQL

Les attaques par injection SQL peuvent avoir des impacts très graves pour les entreprises, notamment :

  • Perte de données sensibles : Avec la possibilité d’exécuter des requêtes personnalisées, un attaquant peut récupérer des informations critiques dans une base de données SQL (par exemple, des noms, des emails et des adresses). Les données sensibles doivent être protégées pour éviter d’exposer des informations d’identification personnelles.
  • Vol de compte : Lorsqu’une injection SQL est possible sur un formulaire de connexion, il devient simple pour un attaquant de s’authentifier avec un compte ne lui appartenant pas. La prise de contrôle d’un compte administrateur met en danger le fonctionnement global de l’application.
  • Corruption des données : Exploitées avec des requêtes SQL empilées (stacked queries), les injections SQL permettent à un attaquant de modifier ou de supprimer des données critiques, ce qui peut provoquer des interruptions de service. En plus de compromettre des données sensibles, l’accès non autorisé à une base de données permet aux attaquants de falsifier des informations, de modifier des mots de passe ou de publier des contenus indésirables (défacement) et des fausses nouvelles. Une telle intrusion peut gravement nuire à l’image de l’entreprise.


Test SQL : exemple d’exploitation d’une faille SQL par injection (PHP & MYSQL)

Prenons l’exemple d’un site de vente en ligne. Un utilisateur malveillant, nommé « Loris », utilise la barre de recherche à partir du mot clé « tondeuse », pour essayer d’injecter des commandes SQL.

  • Recherche initiale : Loris effectue une recherche simple pour voir les modèles de tondeuses disponibles. Quand il clique sur le bouton de recherche, le serveur insère son entrée dans une requête SQL, récupère les informations dans la table « articles » et affiche les résultats.
  • Test de vulnérabilité : Loris remarque que la recherche est inscrite dans l’URL sous la forme ?name=tondeuse. Pour tester si ce paramètre est vulnérable, il ajoute un ‘, un caractère spécial SQL qui déclenche une erreur. Le message d’erreur retourné par le serveur (« MySQL error : Invalid Syntax ») confirme à Loris qu’il peut tenter une injection SQL.
  • Exploitation de la faille SQL : Loris utilise un commentaire SQL (–) pour ignorer le reste de la requête. Cette fois, le serveur exécute la commande sans condition de stock, affichant tous les articles, même ceux qui sont épuisés.
  • Exécution de l’injection SQL : Avec une requête SQL maintenant valide, Loris passe à l’attaque en cherchant à obtenir les mots de passe des utilisateurs. Il ajoute une condition (AND 1=2 –) pour annuler la requête d’origine, puis utilise l’opérateur UNION pour fusionner des requêtes et extraire le nom des tables. Avec quelques manipulations supplémentaires, il identifie Paul comme administrateur et récupère son mot de passe, stocké en tant que hash MD5.
  • Décryptage et connexion : En comparant le hash sur un site de décryptage MD5, Loris découvre que le mot de passe est « password123456 » et détient ainsi les informations d’identification pour se connecter au compte administrateur.

Cet exemple montre comment une injection SQL manuelle permet d’exploiter une faille SQL de sécurité. Aujourd’hui, des outils comme SQLMap automatisent cette détection grâce à des scripts préétablis, rendant les applications vulnérables encore plus exposées.


Exemples connus d’attaques par injection SQL

Plusieurs exemples concrets permettent de comprendre l’impact d’une injection SQL sur des organisations :

  • Heartland Payment Systems (2008) : Une attaque SQL majeure a compromis plus de 100 millions de cartes de crédit et de débit, coûtant des millions en amendes et une perte de confiance importante.
  • Sony Pictures (2011) : Une injection SQL a permis aux pirates de récupérer des données personnelles de plus d’un million d’utilisateurs, exposant des informations d’identification sensibles comme les mots de passe et les emails.
  • TalkTalk (2015) : Suite à une attaque SQL, la fuite des informations de 157 000 clients a coûté à l’entreprise britannique de télécommunications environ 60 millions de livres en amendes et en pertes de réputation.

Ces incidents montrent à quel point les injections SQL sont destructrices et soulignent l’importance de mesures de sécurité proactives.


Comment se protéger contre les attaques par injection SQL ?

Les recommandations de OSWAP 

Pour se protéger contre les injections SQL, il est crucial d’adopter des pratiques de développement sécurisées et d’utiliser des outils de protection. Les recommandations de l’OWASP (Open Web Application Security Project) constituent une base solide :

  • Requêtes préparées et instructions paramétrées : En utilisant des paramètres fixes, l’application ne prend pas en compte les entrées utilisateur comme du code SQL, empêchant ainsi l’injection.
  • Échappement des caractères spéciaux : Évitez que des caractères comme les apostrophes soient interprétés comme du code SQL.
  • ORM (Object-Relational Mapping) : En utilisant des ORM comme Hibernate (Java) ou SQLAlchemy (Python), les requêtes SQL sont abstraites et plus sécurisées.
  • Limiter les permissions de la base de données : Assignez uniquement les permissions nécessaires aux utilisateurs de la base de données, limitant ainsi les actions qu’un attaquant peut effectuer.
  • Validation et filtrage des entrées utilisateur : N’acceptez que les formats de données autorisés dans les champs de saisie.
  • Outils de détection de vulnérabilités : Des solutions comme SQLmap, Acunetix, ou OWASP ZAP permettent de tester les applications pour détecter et corriger les vulnérabilités.
  • Surveillance des logs et des erreurs : Une surveillance active permet de repérer les comportements suspects et d’analyser les erreurs pour mieux comprendre les failles potentielles.


Les solutions d’UBIKA contre les attaques par injection SQL

Reconnu pour son expertise de près de 25 ans en sécurité applicative, UBIKA développe des solutions WAAP (Web Application and API Protection) conçues pour détecter et bloquer les menaces, y compris les injections SQL.

Acteur souverain français et européen, pionnier en sécurité applicative, UBIKA se démarque par son positionnement unique en France : le seul WAF Made In France certifié CSPN par l’ANSSI.

Développées et hébergées entièrement en France, nos solutions garantissent la souveraineté des données, prévenant tout transfert hors de l’Union Européenne, en conformité avec le RGPD.


UBIKA WAAP Gateway

Disponible en version on-premise ou dans le Cloud, UBIKA WAAP Gateway protège vos applications et API contre toutes les attaques visant la couche applicative, y compris celles du Top 10 OSWAP telles que les injection SQL.

Les avantages de UBIKA WAAP Gateway

  • Une gestion simplifiée et personnalisable : notre interface de gestion visuelle et intuitive simplifie l’administration : Création de politiques de sécurité adaptées à vos besoins spécifiques. Visualisation des flux d’inspection et du traitement du trafic. Combinaison de plusieurs moteurs de sécurité pour une détection plus fine et précise.
  • Un support réactif et accessible : avec une équipe d’experts bilingues (français/anglais) basée en France, UBIKA propose une option d’assistance téléphonique 24/7 en cas de besoin.
  • Un déploiement rapide et automatisé : que vous choisissiez une installation sur site ou dans le Cloud, UBIKA WAAP Gateway simplifie et accélère le déploiement grâce à l’automatisation. Vos équipes peuvent ainsi gagner du temps pour se concentrer sur vos priorités.
  • Une protection proactive et avancée : UBIKA WAAP Gateway offre une protection proactive contre les attaques connues et inconnues de type zero-day, prévenant ainsi les pertes ou vols de données, les sabotages et les dénis de service applicatif (DoS en couche L7).


UBIKA Cloud Protector

Disponible en mode SaaS, UBIKA Cloud Protector est la solution idéale pour protéger efficacement vos applications web, API et Websocket en toute simplicité. Flexible et ergonomique, elle offre une interface intuitive et des tableaux de bord complets pour une gestion optimale de votre sécurité.

Les avantages de UBIKA Cloud Protector

  • Réduction du CTO : Pas de dépenses initiales ni de frais liés à l’installation, à la maintenance ou aux mises à niveau. La tarification par abonnement, basée sur la consommation, en fait une solution économique et flexible.
  • Adaptabilité et scalabilité : UBIKA Cloud Protector s’adapte rapidement à toute augmentation de trafic grâce à un processus entièrement géré par notre infrastructure, assurant des performances optimales en toutes circonstances.
  • Performance et disponibilité : Grâce à un SLA robuste, UBIKA Cloud Protector protège contre les attaques DDoS tout en améliorant les performances de vos sites via l’accélération, la compression et la mise en cache globale.
  • Analyse en temps réel : interprétez rapidement et facilement l’état opérationnel de vos systèmes grâce à nos tableaux de bord complets et intuitifs. Les journaux (logs) sont exportables vers une solution SIEM, garantissant qu’aucune menace ne passe inaperçue et facilitant une réponse rapide aux incidents.
  • Services Managés : Nos services de sécurité gérés (MSS) prennent en charge la surveillance et la gestion proactive des menaces avancées, optimisant vos coûts opérationnels et vos ressources internes.


ICX, un moteur de sécurité tout-en-un et redoutable contre les injections SQL

Le moteur ICX, au cœur des solutions d’UBIKA, est une technologie de sécurité tout-en-un qui offre une protection avancée et sans compromis contre les injections SQL et d’autres menaces applicatives. Conçu pour répondre aux enjeux actuels en matière de sécurité applicative, ICX repose sur un moteur de patterns génériques, positifs et négatifs, commun à l’ensemble de nos produits.

Grâce à plus de 20 ans d’évolution continue, ICX surpasse les standards du marché en matière de protection, selon le dernier rapport de SecureIQLab. Ce moteur innovant détecte et neutralise les principaux types d’attaques connues sans générer de faux positifs, grâce à des signatures régulièrement mises à jour. Ce niveau de précision garantit une sécurité renforcée tout en offrant une simplicité d’utilisation optimale pour vos équipes.

ICX se distingue également par son évolutivité. Notre équipe dédiée assure une surveillance constante et une amélioration continue du moteur, garantissant ainsi la performance et l’adaptabilité aux nouvelles menaces.


Vous recherchez une solution de protection efficace pour sécuriser vos applications ?

Contactez-nous dès aujourd’hui pour découvrir comment nos solutions WAF et WAAP peuvent sécuriser vos applications et protéger vos données contre tout type de menaces en ligne.

Posted ago by Christine Amory

Directrice Commerciale & Marketing