L'injection SQL ou SQLI compte parmi les types de cyberattaques les plus redoutables, selon le top 10 de l'OWASP (Open Web Application Security Project). Découvrez tout ce que vous devez savoir sur cette menace de cybersécurité, et comment protéger votre entreprise contre ce danger.
Au fil des dernières années, de nombreuses entreprises connues dans le monde entier ont été victimes de cyberattaques : Target, Yahoo, Zappos, Equifax, Epic Games, TalkTalk, LinkedIn, Sony Pictures...
Même si ces organisations sont issues de différentes industries et différentes régions du monde, le point commun entre ces multiples cyberattaques est la méthode utilisée par les hackers : l'injection SQL ou SQLI.
Qu'est-ce qu'une attaque par injection SQL ?
Une attaque par injection SQL ou SQLI est un type de cyberattaque consistant à exploiter les vulnérabilités logicielles d'une application web dans le but de voler, supprimer ou modifier des données, ou d'obtenir le contrôle des systèmes exécutant les applications infectées.
Aux yeux des chercheurs en cybersécurité, l'injection SQL est l'une des cybermenaces les moins sophistiquées et les plus simples à déjouer. Ces attaques sont prédictibles, et les protections sont faciles à implémenter.
Une attaque SQLI est si facile à mener qu'il suffit d'une recherche Google pour trouver un site web vulnérable. Ce type de recherche est appelé « Google Dorking ».
Dès qu'un cybercriminel à trouvé une proie, il peut utiliser un programme automatisé pour mener l'attaque SQLI. Il suffit d'entrer l'adresse URL du site ciblé.
Toutefois, les attaques par injection SQL surviennent chaque jour. Si vous avez un site web ou une activité en ligne, il est probable que des cybercriminels aient déjà tenté d'utiliser cette méthode pour vous attaquer.
Selon une étude menée par le Ponemon Institute, intitulée « The SQL Injection Threat & Recent Retail Breaches », 65% des entreprises interrogées ont déjà été victimes d'une SQLI.
Parmi les applications web les plus fréquemment ciblées, on compte les sites de réseaux sociaux, les boutiques en ligne et les universités. Les PME sont particulièrement vulnérables, car elles sont souvent moins familiarisées avec les techniques utilisées par les cybercriminels et ne savent donc pas se défendre correctement.
Comment fonctionne l'injection SQL ?
Le SQL (Structured Query Language ou langage de requête structuré) fut développé au début des années 70. C'est l'un des langages de programmation les plus anciens, mais il reste largement utilisé de nos jours pour gérer les bases de données en ligne.
Ces bases de données contiennent par exemple les prix et les inventaires des sites de commerce en ligne. Lorsqu'un utilisateur a besoin d'accéder à une information, le SQL lui permet de consulter les données.
Toutefois, ces bases de données peuvent aussi contenir des informations sensibles comme les noms d'utilisateur et mots de passe, les informations de carte de crédit ou les numéros de sécurité sociale.
Les déclarations SQL utilisent souvent des arguments pour transmettre les données des utilisateurs vers une base de données sécurisée, ou vice versa. À moins que les valeurs de ces arguments soient sécurisées, les cybercriminels peuvent utiliser les emplacements où les applications communiquent avec les bases de données via un argument SQL pour obtenir l'accès à des informations confidentielles ou à d'autres zones sécurisées.
Une injection SQL consiste à entrer des commandes malveillantes dans un formulaire web, comme le champ de recherche ou de connexion d'un site web mal sécurisé, pour obtenir l'accès à ces données sensibles et précieuses.
Prenons l'exemple d'une boutique de chaussures en ligne. Chaque modèle présenté sur le site web existe dans une base de données stockée sur un serveur.
En cliquant sur l'un des produits du magasin, une requête est envoyée à la base de données. Le site web répond en affichant les informations sur le produit en question.
Toutefois, si ce site web est construit négligemment, il peut comporter des vulnérabilités SQL exploitables par un cybercriminel. Ce dernier peut manipuler les requêtes de base de données, afin qu'une requête d'informations sur une paire de chaussures renvoie le numéro de carte de crédit d'un client.
En répétant ce processus, le hacker peut plonger dans les profondeurs de la base de données pour dérober des informations sensibles sur tous les clients ayant acheté des chaussures sur cette boutique en ligne…
À quoi sert une attaque SQLI ?
Une attaque SQLI peut permettre à un cybercriminel de s'emparer d'informations personnelles, d'adresses email, d'identifiants, de numéros de carte de crédit ou de sécurité sociale de millions de consommateurs.
Ces informations peuvent ensuite être vendues sur le Dark Web ou utilisées pour différentes activités illégales. Les emails volés peuvent être utilisés pour le phishing ou le spam, pouvant ensuite découler sur des infections de malwares tels que les ransomwares, les adwares, les cryptojackers ou les Trojans.
De même, un numéro de téléphone iOS ou Android peut être utilisé pour mener des appels robots ou des spams par SMS. Les identifiants volés sur les réseaux sociaux peuvent même servir à envoyer des spams ou à voler des identifiants pour d'autres sites web.
Par le passé, des hackers ont par exemple piraté des comptes LinkedIn afin d'envoyer des spams aux autres utilisateurs contenant des URL menant à une fausse page de connexion Google Doc. Les criminels ont ainsi pu s'emparer des noms d'utilisateurs et mots de passe Google des victimes.
Les différents types d'injections SQL
Il existe différents types d'attaques par injection SQL. Chacun repose sur une méthode et sur une approche différentes, avec ses propres avantages et inconvénients.
Dans le cas d'une SQLI « in-band », les hackers utilisent le même canal ou la même bande pour lancer des erreurs de base de données et pour collecter les résultats d'une attaque. En général, une SQLi in-band peut être exécutée via deux méthodes d'attaque : basée sur erreur, ou basée sur Union.
Les techniques d'injection basées sur erreur forcent la base de données à produire des messages d'erreur, révélant des informations sur la structure de base de données. De leur côté, les attaques basées sur Union usent de déclarations préparées pour exploiter la fonction Union de SQL visant à combiner les résultats de multiples requêtes en un seul résultat.
Une SQLi inférentielle, ou aveugle, consiste à envoyer des charges de données vers un serveur de base de données pour observer sa réaction et son comportement, sans pour autant être en mesure de voir ce qui se passe vraiment au sein de la base de données. La réponse du serveur fournit des indices au hacker et lui permet d'affiner sa stratégie.
L'injection SQL inférentielle peut être booléenne ou basée sur le temps. Une SQL booléenne utilise des déclarations « vrai ou faux » pour solliciter une réponse, tandis qu'une injection basée sur le temps définit une période de réponse désignée.
Enfin, une SQLi « out-of-band » consiste à prendre avantage du système de nom de domaine ou des requêtes HTTP pour récupérer les données. Une telle attaque est généralement menée uniquement quand un serveur web est trop lent ou quand une SQLi in-band n'est pas possible.
L'histoire des injections SQL
L'injection SQL fut décrite pour la première fois en 1998 par le chercheur en cybersécurité Jeff Forristal. Ses découvertes furent publiées dans le magazine Phrack.
Sous le pseudonyme de Rain Forest Puppy, le chercheur a expliqué comment une personne avec des compétences élémentaires en programmation pouvait déguiser des commandes SQL non autorisées en commandes SQL légitimes pour extraire des informations sensibles de la base de données d'un site web mal sécurisé.
Dans cet article, Forristal révélait aussi avoir signalé cette faille de sécurité à Microsoft sans que la firme en perçoive la gravité. Pourtant, de nombreuses entreprises et institutions de tous les secteurs dépendent de la technologie de gestion de base de données de la firme américaine.
La première attaque par injection SQL fut menée en 2007, contre la plus grande chaîne d'épiceries des États-Unis : 7-Eleven. Des hackers russes ont utilisé l'injection SQL pour pirater le site web, et accéder à la base de données des numéros de cartes de débit des clients.
Ainsi, les hackers ont pu exploiter ces données pour retirer de l'argent en Russie. Au total, les cybercriminels ont engrangé deux millions de dollars grâce à cet assaut.
Notons toutefois que le but d'une attaque SQL n'est pas toujours financier. Toujours en 2007, des cybercriminels ont utilisé une SQLI pour obtenir le contrôle administratif de deux sites web liés à l'armée américaine et rediriger les internautes vers des sites web de propagande anti-américaine et anti-Israël.
La fuite de données MySpace, survenue en 2008, reste encore aujourd'hui l'une des plus grandes cyberattaques menées contre un site web grand public. Les cybercriminels ont dérobé les adresses email, les noms et les mots de passe de 360 millions de comptes. C'est la raison pour laquelle il est déconseillé d'utiliser les mêmes mots de passe sur plusieurs sites web.
En 2017, la fuite de données d'Equifax a marqué les esprits à cause du grave manque de cybersécurité de l'entreprise américaine de crédits. Les informations personnelles de 143 millions de clients étaient stockées sans protection contre les injections SQL, alors même qu'une entreprise de sécurité avait tenté de l'avertir un peu plus tôt.
Aujourd'hui encore, les attaques par injection SQL restent un véritable fléau. Ce type de cyberattaque occupait la première place du top 10 des pires risques de sécurité pour les applications web OWASP (Open Web Application Security Project) en 2017, et arrive en troisième place de l'édition 2021 du classement. Malgré leur ancienneté, les attaques SQLI n'ont pas évolué depuis leur apparition.
Comment se protéger contre les injections SQL ?
L'injection SQL demeure l'une des pires menaces de cybersécurité. Afin de s'en protéger, il est essentiel d'adopter les bonnes pratiques et de prendre des mesures efficaces.
Tout d'abord, veillez à mettre à jour votre logiciel de gestion de base de données. La moindre vulnérabilité peut être exploitée par les cybercriminels à l'aide d'une SQLI, et vous devez donc appliquer les patchs, correctifs et mises à jour dès qu'elles sont disponibles.
Appliquez le principe du moindre privilège (PoLP) en laissant à chaque compte uniquement l'accès aux données dont il a besoin. Par exemple, un compte ayant uniquement besoin de lire les données ne devrait pas avoir la capacité d'écrire ou de modifier les données.
Une autre mesure de défense consiste à utiliser des déclarations préparées plutôt que du SQL dynamique, afin de limiter les variables sur les commandes SQL. Ceci empêche les cybercriminels d'attacher des injections SQL malveillantes aux déclarations légitimes.
De même, les procédures stockées limitent les possibilités des cybercriminels en stockant les déclarations SQL dans la base de données. Elles sont ensuite exécutées depuis l'application web par l'utilisateur.
Bien souvent, les attaques SQLI résultent d'un code informatique de mauvaise qualité. Veillez donc à recruter des développeurs compétents et expérimentés pour les logiciels de votre entreprise.
Vous pouvez visiter l'OWASP (Open Web Application Security Project) pour découvrir la liste des menaces et les techniques pour empêcher les injections SQL.
De manière générale, afin de protéger votre entreprise contre les cyberattaques, il est essentiel de former tous les cadres et les employés à la cybersécurité. Pour atteindre cet objectif, vous pouvez choisir la Cyber University.
Comment suivre une formation de cybersécurité ?
Les bonnes pratiques de cybersécurité doivent être adoptées à l'échelle de toute l'entreprise. Chaque employé doit être capable de reconnaître une tentative d'injection SQL ou toute autre menace telle qu'un email de phishing.
Afin d'éduquer les membres de votre organisation à la cybersécurité, vous pouvez choisir la Cyber University. Nos experts vous proposent une formation sur-mesure, en fonction de vos besoins et de vos objectifs.
Notre simulateur de cyberattaques permet un apprentissage par la pratique, pour que chacun soit prêt à réagir comme il se doit en situation réelle.
En parallèle, Cyber University propose aussi une formation d'analyste SOC. Ce cursus en ligne de 365 heures permet d'acquérir toutes les compétences pour devenir analyse de cybersécurité, et d'obtenir la certification GIAC Certified Forensic Analyst (GCFA).
Ce programme s'effectue intégralement à distance, en Formation Continue ou en BootCamp, et notre organisme est éligible au Compte Personnel de Formation pour le financement. Commencez votre carrière dans la cybersécurité avec Cyber University !
Vous savez tout sur les attaques par injection SQL. Pour plus d'informations sur la cybersécurité, découvrez notre dossier sur les ransomwares et notre dossier sur les Trojans.