Qu'est-ce qu'une attaque par injection SQL ?
Vous ne savez peut-être pas ce qu'est une attaque par injection SQL (SQLI) ou comment elle fonctionne, mais vous connaissez certainement les victimes. Target, Yahoo, Zappos, Equifax, Epic Games, TalkTalk, LinkedIn et Sony Pictures - ces entreprises ont toutes été piratées par des cybercriminels utilisant des injections SQL.
Une SQLI est un type d'attaque où les cybercriminels exploitent des vulnérabilités dans les applications web dans le but de voler, supprimer, modifier des données ou obtenir un contrôle administratif sur les systèmes exécutant les applications affectées.
Les chercheurs en cybersécurité considèrent l'injection SQL comme l'une des menaces cybernétiques les moins sophistiquées et faciles à contrer. Malwarebytes Labs a classé l'injection SQL en troisième position dans Les 5 menaces cybernétiques les plus stupides qui fonctionnent quand même, citant le fait que l'injection SQL est une attaque connue et prévisible avec des contre-mesures faciles à mettre en œuvre.
Les attaques SQLI sont si faciles que les attaquants peuvent trouver des sites vulnérables en utilisant des recherches avancées sur Google, appelées Google Dorking. Une fois qu'ils ont trouvé une cible appropriée, les attaquants SQLI peuvent utiliser des programmes automatisés pour effectuer efficacement l'attaque pour eux. Tout ce qu'ils ont à faire est de saisir l'URL du site cible et de regarder les données volées affluer.
Et pourtant, les attaques SQLI sont courantes et surviennent chaque jour. En fait, si vous avez un site web ou une entreprise en ligne, des cybercriminels ont probablement déjà essayé d'utiliser la SQLI pour tenter de s'introduire dans votre site. Une étude de Ponemon Institute sur "The SQL Injection Threat & Recent Retail Breaches" a révélé que 65 % des entreprises interrogées étaient victimes d'une attaque basée sur SQLI.
Les applications web souvent ciblées comprennent : les sites de réseaux sociaux, les détaillants en ligne et les universités. Les petites et moyennes entreprises sont particulièrement vulnérables car elles ne connaissent souvent pas les techniques que les cybercriminels utilisent lors d'une attaque SQLI et, par conséquent, ne savent pas comment se défendre contre une telle attaque.
Avec cela, faisons le premier pas pour se défendre contre une injection SQL en s'éduquant sur le sujet. Voici votre guide sur les injections SQL.
Comment fonctionne une injection SQL ?
Développé au début des années 70, SQL (abréviation de structured query language) est l'un des plus anciens langages de programmation encore utilisés aujourd'hui pour gérer des bases de données en ligne. Ces bases de données contiennent des informations telles que les prix et les niveaux de stock pour les sites d'achat en ligne. Lorsqu'un utilisateur a besoin d'accéder aux informations de la base de données, SQL est utilisé pour accéder à ces données et les présenter à l'utilisateur. Mais ces bases de données peuvent également contenir des données plus sensibles et précieuses, comme des noms d'utilisateur et des mots de passe, des informations sur les cartes de crédit et des numéros de sécurité sociale. C'est là que les injections SQL entrent en jeu.
En termes simples, on parle d'injection SQL lorsque des pirates informatiques introduisent des commandes malveillantes dans des formulaires web, tels que le champ de recherche, le champ de connexion ou l'URL d'un site web non sécurisé, afin d'obtenir un accès non autorisé à des données sensibles et précieuses.
Voici un exemple. Imaginez que vous vous rendiez sur votre site de vente de vêtements en ligne préféré. Vous achetez des chaussettes et vous avez devant vous un monde en technicolor de chaussettes colorées, toutes disponibles d'un simple clic de souris. Les merveilles de la technologie ! Chaque chaussette que vous voyez existe dans une base de données sur un serveur quelque part. Lorsque vous trouvez une chaussette qui vous plaît et que vous cliquez dessus, vous envoyez une requête à la base de données des chaussettes, et le site d'achat répond en fournissant les informations relatives à la chaussette sur laquelle vous avez cliqué. Imaginez maintenant que votre site d'achat en ligne préféré soit construit de manière peu rigoureuse et qu'il soit truffé de failles SQL exploitables.
Un cybercriminel peut manipuler les requêtes de la base de données de manière à ce qu'une demande d'informations sur une paire de chaussettes renvoie le numéro de carte de crédit d'un client malchanceux. En répétant ce processus encore et encore, un cybercriminel peut explorer les profondeurs de la base de données et voler des informations sensibles sur chaque client ayant déjà acheté sur votre site de vêtements en ligne préféré - y compris vous. En poussant l'expérience de pensée encore plus loin, imaginez que vous êtes le propriétaire de ce site de vêtements. Vous avez une énorme violation de données entre les mains.
Une seule attaque SQLI peut permettre aux cybercriminels d'obtenir des informations personnelles, des courriels, des identifiants, des numéros de carte de crédit et des numéros de sécurité sociale pour des millions de consommateurs. Les cybercriminels peuvent ensuite revendre ces informations personnelles dans les coins les plus sombres du dark web, pour les utiliser à toutes sortes de fins illégales.
Les courriels volés peuvent être utilisés pour des attaques de phishing et de malspam. Ces dernières peuvent à leur tour être utilisées pour infecter les victimes avec toutes sortes de malwares destructeurs tels que les ransomwares, les adwares, les cryptojackers et les chevaux de Troie (par exemple Emotet), pour n'en citer que quelques-uns. Les numéros de téléphone volés pour les appareils mobiles Android et iOS peuvent être ciblés par des appels téléphoniques non sollicités et des spams.
Les identifiants volés de sites de réseaux sociaux peuvent même être utilisés pour envoyer des spams de messages et voler encore plus d'identifiants pour d'autres sites. Malwarebytes Labs avait précédemment signalé que des comptes LinkedIn piratés étaient utilisés pour spammer d'autres utilisateurs avec des messages InMail contenant de mauvaises URL usurpées ou falsifiées pour ressembler à une page de connexion Google Docs, permettant ainsi aux cybercriminels de récupérer des noms d'utilisateur et des mots de passe Google.
Quelle est l'histoire des injections SQL ?
L'exploit de l'injection SQL a été documenté pour la première fois en 1998 par le chercheur en cybersécurité et pirate informatique Jeff Forristal. Ses découvertes ont été publiées dans le magazine de pirates informatiques Phrack, qui existe depuis longtemps. Sous le nom de Rain Forest Puppy, Forristal expliquait comment une personne ayant des compétences de base en codage pouvait superposer des commandes SQL non autorisées à des commandes SQL légitimes et extraire des informations sensibles de la base de données d'un site web non sécurisé.
Lorsque M. Forristal a informé Microsoft de l'impact de la vulnérabilité sur son célèbre produit SQL Server, l'entreprise n'y a pas vu de problème. Comme l'a dit Forristal, "selon eux [Microsoft], ce que vous allez lire n'est pas un problème, alors ne vous préoccupez pas de faire quoi que ce soit pour l'arrêter".
Ce qui rend la réponse laxiste de Microsoft si choquante, c'est que de nombreux secteurs et institutions dépendaient sérieusement (à l'époque et aujourd'hui) de la technologie de gestion de base de données de l'entreprise pour assurer le bon fonctionnement de leurs activités, notamment le commerce de détail, l'éducation, la santé, la banque et les ressources humaines. Cela nous amène à l'événement suivant dans la chronologie de l'histoire de SQLI : la première attaque majeure de SQLI.
En 2007, la plus grande chaîne de magasins de proximité des États-Unis, 7-Eleven, a été victime d'une attaque SQLI. Les pirates russes ont utilisé des injections SQL pour pirater le site web de 7-Eleven et s'en servir comme tremplin pour accéder à la base de données des cartes de débit des clients de la supérette. Les pirates ont ainsi pu retirer de l'argent chez eux, en Russie. Au total, les coupables ont emporté deux millions de dollars, comme le rapporte le magazine Wired.
Toutes les attaques SQLI ne sont pas motivées par la cupidité. Dans un autre exemple remarquable de 2007, des cybercriminels ont utilisé SQLI pour obtenir un contrôle administratif sur deux sites Internet liés à l'armée américaine et rediriger les visiteurs vers des sites contenant de la propagande anti-américaine et anti-israélienne.
La violation de données de MySpace en 2008 est l'une des plus importantes attaques contre un site web grand public. Les cybercriminels ont volé les courriels, les noms et les mots de passe partiels de près de 360 millions de comptes. Voilà pourquoi nous ne réutilisons pas les mots de passe d'un site à l'autre.
Le titre du manque de sécurité le plus flagrant revient à Equifax. La violation de données d'Equifax en 2017 a permis de recueillir des informations extrêmement personnelles (noms, numéros de sécurité sociale, dates de naissance et adresses) concernant 143 millions de consommateurs. Pour une organisation qui joue le rôle de gardien des informations de chaque Américain, à l'exception de ceux qui vivent hors du réseau, on pourrait penser qu'elle prendrait des précautions contre une attaque SQLI de base. Avant la violation des données, un cabinet de recherche en cybersécurité a même averti Equifax qu'elle était susceptible de subir une attaque SQLI, mais le bureau de crédit n'a pris aucune mesure jusqu'à ce qu'il soit trop tard.
Dans ce qui est considéré comme le piratage le plus effrayant de l'histoire, une attaque SQLI de 2015 sur le fabricant de jouets Vtech a conduit à une violation de près de cinq millions de parents et 200 000 enfants. S'adressant à Motherboard, la publication multimédia en ligne, le pirate responsable a affirmé qu'il n'avait pas l'intention d'utiliser les données et qu'il ne les avait pas publiées en ligne. À l'inverse, le pirate a également expliqué que les données étaient très faciles à voler et que quelqu'un d'autre aurait pu les obtenir en premier. Une consolation bien froide en effet.
Aujourd'hui, l'attaque par injection SQL existe toujours. Tous les trois ans, le projet de sécurité des applications Web ouvertes (OWASP) classe les dix risques de sécurité des applications Web les plus critiques. Dans l'édition la plus récente de 2017, l'attaque par injection SQL se classait au premier rang.
Au-delà de la longévité de l'attaque SQLI, ce qui est intéressant, c'est que les attaques SQLI n'ont pas changé ou évolué d'une quelconque manière. Les attaques SQLI fonctionnent et continueront de fonctionner jusqu'à ce que les gens changent d'attitude à l'égard de la cybersécurité. Soyez ce changement.
Actualités sur les injections SQL
- Qu'est-ce qu'un pot de miel ? Comment ils sont utilisés en cybersécurité
- Entretien avec un chasseur de primes aux insectes : Youssef Sammouda
- Un guide sur les attaques de type "zero-day" pour 2020 : Attaques récentes et techniques préventives advanced
- Les vulnérabilités des applications mobiles financières mettent en danger les consommateurs et les entreprises
- Comment sécuriser votre système de gestion de contenu
- Expliqué : Injection SQL
- Top 10 de l'OWASP - Une sécurité ennuyeuse mais payante
- Les 5 cybermenaces les plus stupides qui fonctionnent malgré tout
Quel est l'impact des injections SQL sur mon entreprise ?
Comme l'indique notre rapport sur les tactiques et techniques de cybercriminalité, les cyberattaques (de toutes sortes) contre les entreprises ont augmenté de 55 % au second semestre 2018, tandis que les attaques contre les consommateurs individuels n'ont progressé que de 4 %. Ces statistiques ne sont pas surprenantes. Les entreprises dont la sécurité est médiocre représentent pour les criminels une cible facile, car elles détiennent un trésor de données précieuses qui valent des millions.
À l'inverse, une entreprise victime d'une violation de données peut s'attendre à devoir débourser des millions. Selon une étude d'IBM, le coût moyen d'une violation de données, y compris les mesures correctives et les pénalités, s'élève à 3,86 millions de dollars. La violation de données de LinkedIn mentionnée précédemment a fini par coûter au site de réseautage professionnel 1,25 million de dollars dans le cadre d'un règlement à l'amiable.
Après sa violation de données, Target a été contraint de payer le montant le plus élevé jamais enregistré - 18,5 millions de dollars - pour régler des enquêtes menées par plusieurs États. Ce montant s'ajoute aux 10 millions de dollars versés par Target pour régler un recours collectif intenté par des consommateurs.
Il est vrai qu'il s'agit d'énormes violations de données qui touchent des millions de consommateurs. Cependant, les petites et moyennes entreprises peuvent encore s'attendre à payer 148 dollars pour chaque dossier de consommateur volé.
La morale de l'histoire ? Prenez votre sécurité au sérieux et évitez d'être une "cible" pour les cybercriminels.
Comment me protéger contre les injections SQL ?
Toutes ces considérations mises à part, vous êtes ici parce que vous savez que les injections SQL constituent une menace sérieuse. Maintenant, agissons. Voici quelques conseils pour protéger votre entreprise contre les attaques par injection SQL.
Mettez à jour votre logiciel de gestion de base de données. Votre logiciel est défectueux tel qu'il sort du fabricant. C'est un fait. Il n'existe pas de logiciel exempt de bogues. Les cybercriminels peuvent tirer parti de ces vulnérabilités logicielles, ou exploits, à l'aide d'un SQLI. Vous pouvez vous protéger en appliquant des correctifs et en mettant à jour votre logiciel de gestion de base de données.
Appliquer le principe du moindre privilège (PoLP). Ce principe signifie que chaque compte ne dispose que d'un accès suffisant pour effectuer son travail, et rien de plus. Par exemple, un compte web qui n'a besoin que d'un accès en lecture à une base de données donnée ne devrait pas avoir la possibilité d'écrire, d'éditer ou de modifier les données de quelque manière que ce soit.
Utilisez des instructions préparées ou des procédures stockées. Contrairement au SQL dynamique, les instructions préparées limitent les variables sur les commandes SQL entrantes. Ainsi, les cybercriminels ne peuvent pas insérer des injections SQL malveillantes dans des instructions SQL légitimes. Les procédures stockées limitent également les possibilités des cybercriminels en stockant des instructions SQL dans la base de données, qui sont exécutées par l'utilisateur à partir de l'application web.
Embaucher des développeurs compétents et expérimentés. Les attaques SQLI résultent souvent d'un codage négligé. Faites savoir à l'avance à vos développeurs de logiciels ce que vous attendez d'eux en matière de sécurité.
Que faire si mes informations personnelles ont été volées dans une fuite de données ? Consultez notre liste de contrôle en cas de fuite de données. Vous y apprendrez tout sur le nettoyage et la sécurité après avoir été victime d'une fuite de données suite à une attaque SQLI.
Visitez OWASP. L'Open Web Application Security Project, OWASP en abrégé, est l'autorité principale sur les applications Web, et ils ont beaucoup de lectures supplémentaires sur comment prévenir les injections SQL.
Et si vous n'en avez jamais assez des injections SQL dans votre vie, visitez le blog de Malwarebytes Labs pour connaître toutes les dernières actualités dans le monde des cybermenaces et de la cybersécurité.