Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. En savoir plus.

S'il y a une chose que les cybercriminels adorent, ce sont les données. Les données volées sont très précieuses sur les marchés illicites, et l'accès à des bases de données privées peut être un excellent moyen pour les acteurs malveillants de tirer profit de leurs entreprises. Une façon d'accéder aux données privées est via une injection SQL. Mais qu'est-ce qu'une injection SQL exactement, comment fonctionne-t-elle et peut-on prévenir une telle attaque ?

Qu'est-ce qu'une injection SQL ?

Les programmes logiciels reposent sur le code pour fonctionner. Le code est également le langage utilisé par les machines pour effectuer des opérations et peut prendre de nombreuses formes (Python, JavaScript, C++, etc.). C'est souvent par le biais du code que les cybercriminels peuvent attaquer les victimes, et les injections SQL (ou SQLis) ne font pas exception. Ceux-ci permettent aux acteurs malveillants d'"injecter" du code nuisible dans une instruction SQL.

instagram viewer

Voyons d'abord ce que signifie SQL.

SQL signifie langage de requête structuré. C'est un autre type de langage de programmation spécifiquement utilisé lorsqu'il s'agit de bases de données. Développé dans les années 1970 par IBM, SQL peut manipuler, stocker et récupérer des informations de base de données. De nombreux systèmes de communication de bases de données dans le monde utilisent SQL, il n'est donc pas surprenant que les acteurs de la menace aient trouvé des moyens d'en abuser afin de cibler les bases de données.

Les instructions SQL constituent un élément clé de la communication de la base de données. Une instruction SQL est une commande qui se présente sous de nombreuses formes différentes. Certains modifient les données, certains les récupèrent ou les suppriment, et certains peuvent modifier la structure de la base de données elle-même. Lorsqu'une injection SQL se produit, le code malveillant est injecté dans une instruction SQL.

Bien sûr, un site Web ou une application doit utiliser le langage de programmation SQL pour qu'une injection SQL soit possible. Mais comment fonctionne ce vecteur d'attaque ?

Disons que vous avez une ligne de code régulière utilisée par une application. Lorsqu'un cybercriminel insère une injection SQL malveillante, une ligne de code est ajoutée qui peut interférer avec les requêtes que l'application elle-même envoie à sa base de données. Ce faisant, la base de données peut être exploitée d'une manière qui permet à l'auteur de la menace d'afficher des données auxquelles il n'aurait autrement pas accès.

De là, le cybercriminel pourrait voler des données pour les exploiter directement ou le vendre sur le dark web ou ailleurs. Ils pourraient également modifier, ajouter ou supprimer des données de la base de données ciblée. Selon le degré de l'attaque par injection SQL, beaucoup de dégâts pourraient être causés. Si les détails de paiement, les numéros de sécurité sociale ou d'autres types de données privées sont consultés, de nombreuses personnes risquent d'être exploitées.

D'un autre côté, si l'attaquant parvient à modifier de manière significative la base de données, de grandes quantités de données pourraient être définitivement perdues. Dans l'ensemble, les injections SQL peuvent détruire des bases de données entières en une seule attaque. Bien qu'ils existent depuis 1998, ils sont toujours pertinents et dangereux de nos jours.

Comme trouvé par le Projet de sécurité des applications Web ouvertes (OWASP), 274 000 instances d'injections SQL ont été identifiées lors des tests d'applications pour la présence d'une telle attaque en 2021.

Les types d'injection SQL

Il existe différents types d'injection SQL, les trois principaux étant les injections aveugles, intrabande et hors bande.

Une injection SQL aveugle (ou inférentielle) se produit lorsque l'application ou le site est attaqué par le injection, mais les réponses HTTP (Hypertext Transfer Protocol) fournies ne contiennent pas le résultat de Requête SQL. En d'autres termes, aucune donnée de la base de données attaquée n'est transmise au cybercriminel. Alors, quel est le point de cela?

À l'aide d'une injection SQL aveugle, un attaquant envoie des données au serveur cible et peut alors discerner certaines choses sur une base de données grâce à la nature de la réponse HTTP elle-même. De plus, les facteurs associés à la réponse HTTP peuvent aider l'attaquant à créer une autre injection SQL plus efficace pour accéder à la base de données.

Il existe deux principaux types d'injection SQL aveugle, appelées basées sur le temps et booléennes. Ces deux variantes sont assez similaires dans leur nature. Une injection SQL booléenne et temporelle envoie un tableau de questions à réponse oui ou non, bien que cette dernière nécessite que la base de données attende un peu avant de répondre aux requêtes.

Ensuite, il y a les injections SQL intrabande. Les injections SQL intrabande permettent à l'opérateur d'effectuer l'attaque et d'obtenir le résultat souhaité en utilisant le même canal. Les injections SQL intrabande sont les plus couramment utilisées, tout simplement parce qu'elles sont les plus simples à réaliser du fait qu'elles ne nécessitent qu'un seul canal.

Enfin, vous avez une injection SQL hors bande. Il s'agit essentiellement de la version alternative d'une injection SQL intrabande, dans laquelle l'attaquant ne peut pas mener l'attaque au total en utilisant un seul canal. Alternativement, une attaque peut avoir besoin de recourir à une injection SQL hors bande si le serveur cible n'est tout simplement pas assez rapide pour fournir des résultats.

Ces facteurs rendent le processus un peu plus difficile, ce qui signifie qu'il doit s'appuyer sur certaines fonctionnalités pour être actif sur la base de données ciblée pour réussir. Par exemple, la plate-forme attaquée doit avoir un manque de désinfection des entrées. Pour cette raison, les injections SQL intrabande sont beaucoup plus courantes que les injections SQL hors bande. Mais ils se produisent toujours.

Les injections SQL peuvent-elles être évitées ?

Les injections SQL préoccupent davantage les entreprises et les organisations que les particuliers. Mais il y a des choses que ces cibles potentielles peuvent faire pour réduire les chances d'être touchées par une telle attaque.

Le nettoyage des entrées est la principale pratique courante pour éviter les injections SQL. Il s'agit d'un processus de filtrage qui analyse et nettoie l'entrée de caractères dangereux. Si le code SQL est traité avant d'être nettoyé, le risque d'injection SQL augmentera naturellement.

De plus, les requêtes paramétrées peuvent vous aider à éviter les injections SQL. Ce sont des requêtes qui nécessitent au moins un paramètre pour s'exécuter. L'application de paramètres rend plus difficile pour les cybercriminels de mener à bien une attaque par injection SQL.

Mais il n'existe aucun moyen infaillible d'empêcher une injection SQL. Comme c'est le cas pour de nombreuses cyberattaques, il est pratiquement impossible de garder vos appareils et systèmes totalement hermétiques. En ce qui concerne les injections SQL, le mieux que vous puissiez faire est de nettoyer toutes les entrées et d'établir des requêtes paramétrées.

Les injections SQL sont anciennes, mais restent une menace

Bien que les injections SQL existent depuis plus de 20 ans, elles présentent toujours un risque pour de nombreux sites Web et applications. C'est donc une bonne idée de garder à l'esprit cette forme d'attaque et de prendre les mesures nécessaires pour essayer de la prévenir, car elle pourrait constituer une menace pour vos bases de données à un moment donné dans le futur.