Plateforme Edge Cloud de Fastly

Solutions numériques innovantes

Qu’est-ce qu’une injection SQL ?

L’injection SQL est la technique consistant à insérer des commandes SQL complètes ou "partial" dans les champs de données fournis par l’utilisateur des application web et à les soumettre pour exécution par le serveur de base de données. 

En bref, une injection SQL survient lorsqu’un acteur malveillant est capable d’injecter du code malveillant dans une application en raison d’un code mal écrit.

Comment fonctionne une attaque par injection SQL ?

Les entreprises utilisent des champs tels que les formulaires de contact, les formulaires de commentaires, les formulaires de paiement, et les barres de recherche pour interagir avec les utilisateurs du site web. Ces champs permettent aux utilisateurs de soumettre légitimement des informations à la base de données de l’entreprise et d’en récupérer. Cette « ligne ouverte » entre l’utilisateur et la base de données est vulnérable à l’injection SQL.

Si le champ est mal codé, un hacker peut l’utiliser pour insérer des commandes SQL malveillantes. Le code injecté peut tromper la base de données pour qu’elle exécute les commandes du hacker, capables d’extraire des informations privées et de modifier ou de détruire des tables de base de données. Le contenu dynamique, ainsi que les champs, sont vulnérables à l’injection SQL.

Quelles étapes un hacker suit-il lors d’une attaque par injection SQL ?

  1. Le hacker saisit une commande SQL manipulée dans le champ du formulaire

  2. Une base de données non sécurisée considère cette requête comme valide

  3. Le hacker obtient une réponse de la base de données contenant des informations sensibles

  4. Le hacker obtient des informations (comme le nom de la table) pour comprendre la structure de la base de données

  5. Un hacker modifie des données dans la base de données de manière malveillante

Types d’injections SQL

Il existe trois catégories d’injections SQL :

Injection SQLI inférentielle (aveugle)

Dans une attaque SQL aveugle, le hacker envoie des données au serveur et observe son comportement en réponse. Le hacker peut recueillir des informations en se basant sur la réponse de la base de données aux requêtes/invites du hacker, et déduire des informations critiques sur la base de données. Avec suffisamment d’observation, le hacker est capable de se faire une idée de la base de données et de sa structure, ce qui l’aide à déterminer la meilleure façon de l’exploiter. Ce type d’injection est « aveugle », car le hacker n’est pas en mesure de voir réellement à l’intérieur de la base de données. 

Injection SQL in-band

Également connue sous le nom d’injection SQL classique, dans une attaque par injection SQL in-band, le hacker obtient son résultat dans le même « canal » que celui dans lequel il a lancé son attaque. Par exemple, disons qu’un hacker effectue une injection SQL dans un navigateur web ; le hacker recevra les résultats de cette attaque au même emplacement (le navigateur web). 

Injection SQL hors bande

Dans une attaque par injection SQL hors bande, le hacker n’obtient pas son résultat (réponse) de l’application attaquée sur le même « canal » que son attaque. L’attaque force plutôt l’application à envoyer des données vers un point de terminaison distant. Ce point de terminaison est contrôlé par le hacker, ce qui lui permet d’accéder à la réponse de l’application. 

Exemple d’injection SQL

Lorsqu’un utilisateur soumet des identifiants sur une page de connexion, l’application web les utilise dans une requête SQL envoyée à la base de données pour exécution. Si le nom d’utilisateur et le mot de passe soumis sont valides, l’utilisateur obtient l’accès. En supposant que le nom d’utilisateur soit « user1 » et que le mot de passe soit « pass123 », l’application web envoie la requête SQL suivante à la base de données pour vérification :

SELECT * FROM Users WHERE name = 'user1' AND password = 'pass123'

Au lieu d’utiliser un nom d’utilisateur valide, un hacker soumet « test’ OR “1 = 1–” » comme nom d’utilisateur et n’importe quoi comme mot de passe. Cette requête SQL arbitraire renverra une valeur vraie. La requête arbitraire ressemble à ceci :

SELECT * FROM Users WHERE name = 'test' OR 1 = 1 --' AND password = 'xxxxx'

Après avoir saisi la requête, le pirate accède à une session connectée sans mot de passe. Le hacker vole ensuite des données ou manipule les bases de données du site web. 

Comment prévenir les attaques SQL

Le fait qu’un hacker obtienne un accès administratif à une base de données constitue une faille de sécurité extrême que l’injection SQL rend possible. Grâce à ce type d’attaque, un hacker peut modifier ou supprimer des parties de l’ensemble de la base de données. Le hacker peut également lancer des attaque depuis un serveur compromis et accéder aux informations confidentielles stockées dans la base de données. Il est possible d’empêcher cette menace majeure pour la sécurité en codant correctement les champs et en mettant à jour le logiciel du serveur avec les derniers correctifs.

Des outils comme le Next-Gen WAF de Fastly, avec son moteur de détection propriétaire, SmartParse, prennent des décisions instantanées en ligne afin de déterminer si des charges utiles malveillantes ou anormales sont présentes. SmartParse élimine le besoin de regex et de réglages manuels intensifs. 

Vous pouvez en savoir plus sur la prévention des attaques par injection SQL et des autres Top 10 des attaques de l’OWASP avec Fastly ici

En savoir plus sur les fonctions de sécurité de Fastly

En savoir plus


Prêt à commencer ?

Contactez-nous dès aujourd’hui