Injection SQL : est-ce toujours une menace ? Comment pouvez-vous l'éviter ?
Publié: 2020-03-07Les violations de données sont si courantes qu'elles ne sont même plus surprenantes. Les acteurs malveillants visent à collecter autant de données que possible. Ils sont après les identifiants de connexion, les informations de carte de crédit ou les secrets commerciaux. Une fois qu'ils ont mis la main sur ces données, ils les vendent sur le dark web.
Si vous ne pouvez pas saisir la quantité de données qu'ils ont volée jusqu'à présent et combien ils ont déversé sur le dark web, voici un chiffre inquiétant. L'année dernière, des criminels ont volé et vendu 620 millions de comptes sur seize sites Web piratés. Oui, le piratage de seize sites Web peut causer tant de dégâts. Mais tu sais ce qui est pire ? Des milliers de nouveaux sites sont piratés chaque jour !
Les cybercriminels proposent quotidiennement de nouvelles méthodes de piratage. Mais cela ne signifie pas qu'ils oublient les techniques plus anciennes, telles que les injections SQL. Ils sont toujours l'un des vecteurs d'attaque les plus courants qui sont simples à exécuter et donnent des résultats fructueux.
- Qu'est-ce que l'injection SQL et pourquoi est-ce dangereux ?
- Comment fonctionne l'injection SQL ?
- Injection SQL intrabande
- Injection SQL aveugle
- Injection SQL hors bande
- Cette menace est-elle toujours pertinente ?
- Conseils de sécurité pour la prévention
- Derniers mots
Qu'est-ce que l'injection SQL et pourquoi est-ce dangereux ?

L'injection SQL, également connue sous le nom de SQLi, est une forme d'attaque par injection, qui permet au pirate d'exécuter une instruction SQL. Les attaques par injection sont une large catégorie de différents vecteurs d'attaque. Mais ils permettent tous à des acteurs malveillants d'effectuer des entrées dangereuses. Ils agissent comme une commande système, qui est ensuite exécutée.
Les instructions SQL sont le plus souvent utilisées pour ajouter ou récupérer des données à partir de diverses bases de données. De nombreux systèmes de gestion célèbres tels que Microsoft SQL Server, Access et Oracle utilisent ces instructions.
Étant donné que de nombreux systèmes de gestion de bases de données largement utilisés utilisent des instructions SQL, les pirates peuvent exploiter ces systèmes via des injections SQL. Cela signifie que les criminels peuvent accéder et voler des données sensibles stockées dans la base de données. Il peut inclure les éléments suivants :
- propriété intellectuelle.
- informations de carte de crédit.
- Informations client.
- adresses.
- secrets d'entreprise.
Recommandé pour vous : Chrome vs Firefox : la comparaison des performances, de la sécurité et de la confidentialité !
Comment fonctionne l'injection SQL ?

Pour exécuter une attaque par injection SQL, le pirate doit localiser les entrées d'utilisateurs vulnérables sur le site Web ou les applications internes de l'entreprise.
Par exemple, la victime utilise WordPress pour son site Web. Le code peut avoir une vulnérabilité SQL qui envoie l'entrée de l'utilisateur directement à la base de données sans aucune désinfection. Si un pirate localise cette vulnérabilité, il peut envoyer des commandes à la base de données en question. Ensuite, la sortie de la base de données retourne au navigateur et permet au pirate d'exécuter différentes commandes. De cette façon, ils peuvent télécharger toute la base de données, configurer de nouvelles commandes, modifier des comptes d'utilisateurs ou créer de nouveaux comptes.
Il existe trois formes principales d'attaques par injection SQL :
- Injection SQL intrabande :
- Injection SQL basée sur les erreurs.
- Injection SQL basée sur l'union.
- Injection SQL aveugle :
- Booléen.
- Basé sur le temps.
- Injection SQL hors bande.
Injection SQL intrabande
L'injection SQL intrabande est l'un des types les plus courants car il est simple et efficace. Ici, l'attaquant utilise le même canal de communication pour exécuter l'attaque et collecter les résultats. Il comporte deux sous-variantes - injection SQL basée sur les erreurs et basée sur l'union :
- L'injection SQL basée sur les erreurs permet au pirate informatique de faire en sorte que la base de données produise des messages d'erreur. Ensuite, ils peuvent utiliser ces messages d'erreur pour collecter des informations sur la base de données elle-même.
- L'injection SQL basée sur l'union permet au coupable de tirer parti de l'opérateur SQL UNION. Il combine différentes instructions fournies par la base de données pour obtenir une réponse HTTP. Une telle réponse contient souvent des données que les pirates peuvent exploiter.
Injection SQL aveugle
Les injections SQL aveugles reposent sur les modèles de comportement du serveur. Ils sont beaucoup plus lents à exécuter. Le pirate émet des charges utiles de données et inspecte la réponse du serveur pour analyser sa structure. Ils appellent cela "aveugle" parce que les données ne vont pas directement aux pirates. Ainsi, ils ne peuvent voir aucune information sur l'exploit dans la bande. Il existe en deux variantes, à savoir booléenne et basée sur le temps :
- La variation booléenne permet au pirate d'envoyer une requête SQL, qui invite la base de données à renvoyer des informations. Les informations contenues dans la réponse HTTP changent en fonction du résultat précédent.
- La variation temporelle permet à l'acteur malveillant d'envoyer une requête SQL directement à la base de données, ce qui oblige la base de données à attendre avant de pouvoir réagir. L'attaquant tient compte du temps nécessaire à la base de données pour répondre et décider si la requête est vraie ou fausse. En fonction du résultat, la réponse HTTP est instantanée ou différée.
Injection SQL hors bande
L'injection SQL hors bande permet au pirate d'attaquer la base de données uniquement si des fonctionnalités spécifiques sont activées sur le serveur de base de données. C'est la méthode d'injection SQL la moins populaire. De nombreux pirates l'utilisent en remplacement des injections SQL basées sur les erreurs et en aveugle.

Cette attaque particulière est une option lorsque le pirate ne peut pas utiliser le même support pour exécuter l'attaque et collecter des informations. Ou, ils peuvent utiliser cette injection lorsqu'un serveur est instable et lent pour effectuer les deux autres types d'injection. Cette technique crée des requêtes DNS et HTTP pour transférer les données volées.
Vous aimerez peut-être : Conseils d'évaluation et de gestion des risques liés à la cybersécurité pour les petites entreprises.
Cette menace est-elle toujours pertinente ?

Les injections SQL sont l'une des plus anciennes formes de cyberattaques agressives. Pourtant, il est toujours très pertinent. L'Open Web Application Security Project a classé les injections SQL comme la menace numéro un il y a deux ans. Le fournisseur de services cloud Akamai a créé un rapport sur l'état d'Internet, qui a révélé que les injections SQL étaient responsables de 65 % de toutes les attaques Web de 2017 à 2019. Vous pouvez donc dire que l'injection SQL apparaît toujours dans les deux tiers des attaques Web. au cours des dernières années.
Au premier trimestre 2017, ces vecteurs étaient responsables de 44 % des attaques de la couche application. Pire encore, aucune autre forme de vecteur d'attaque d'application ne se développe aussi rapidement que les injections SQL. En novembre 2018, il y a eu un autre pic important. Il a montré qu'il y avait plus de 35 millions de tentatives d'attaque par injection SQL. Les experts pensent que la principale cause de ce pic était la saison des fêtes. C'est quelque chose dont tous les propriétaires de sites Web devraient être conscients, surtout s'ils travaillent dans le secteur de la vente au détail. Mais même après la fin des fêtes, l'injection SQL reste une menace dont vous devez être conscient.
Les États-Unis sont la principale cible des attaques au niveau de la couche application. Il a fait face à environ 3 milliards d'attaques en seulement 17 mois. Parmi les autres victimes populaires figurent le Royaume-Uni, l'Allemagne, le Brésil, l'Inde, le Japon, le Canada, l'Australie, l'Italie et les Pays-Bas. Il est donc prudent de supposer qu'il s'agit toujours d'une menace énorme et que toutes les entreprises devraient prendre des mesures de précaution étendues.
Conseils de sécurité pour la prévention

Le meilleur plan d'action pour les développeurs est d'introduire des mesures de précaution pour empêcher les attaques de se produire. Voici les mesures de prévention les plus efficaces :
- Validation d'entrée : la validation d'entrée vérifie si une entrée utilisateur particulière est autorisée ou non. Cela signifie que le format, la longueur et le type doivent être collectivement acceptés. Il est utile pour lutter contre les commandes que le pirate plante dans la chaîne d'entrée.
- Requêtes paramétrées : les requêtes paramétrées sont un moyen de précompiler différentes instructions SQL. Il stocke ensuite les paramètres afin que l'instruction puisse être exécutée. Il permet à la base de données de reconnaître le code et de le différencier des données d'entrée régulières.
- Procédures stockées : elles nécessitent que les développeurs regroupent une ou plusieurs instructions SQL dans une unité logique. C'est une forme de code que l'on peut stocker, comme son nom l'indique, et sauvegarder pour plus tard.
- Échappement : les développeurs doivent utiliser des fonctionnalités d'échappement de caractères pour s'assurer que le SGBD ne confond pas l'entrée utilisateur avec une instruction SQL.
- Pare-feu d'application Web : C'est l'une des méthodes les plus sûres pour empêcher les attaques par injection SQL. Le pare-feu surveille le trafic qui circule vers et depuis le serveur. Il identifie les requêtes potentiellement nuisibles et celles qui ne le sont pas. Cette solution est suffisante pour de nombreux autres exploits, elle est donc toujours correcte.
- Éviter les privilèges administratifs : les développeurs ne doivent jamais connecter leurs applications à la base de données via des comptes avec un accès root. Sinon, les pirates pourraient accéder à l'ensemble du système et causer des dommages irréparables. De plus, les développeurs doivent s'assurer que chaque base de données possède son propre ensemble d'informations d'identification avec un nombre limité.
Vous pourriez également aimer : Top 10 des logiciels de sécurité Internet les plus vendus (antivirus et sécurité).
Derniers mots

Toute personne préoccupée par l'injection SQL ne doit pas non plus oublier les autres attaques possibles. Les pratiques habituelles de cybersécurité s'appliquent : utilisez des mots de passe robustes, apprenez à reconnaître les menaces, activez un VPN chaque fois que vous vous connectez à des sites Web ou à des bases de données, etc. Qu'est-ce qu'un VPN et à quoi sert-il ? Il crypte votre trafic en ligne chaque fois que vous vous connectez. Ainsi, si vous envoyez une requête SQL à votre base de données, seule la base de données peut la déchiffrer. Si quelqu'un intercepte les paquets de données en question, il n'y trouvera aucun sens. Plus vous ou votre entreprise êtes prêts à faire face à toutes sortes de menaces, mieux c'est.
Seule l'introduction de mesures préventives complètes garantit que l'injection SQL ou les attaques ne réussissent jamais. Soyez prêt à investir beaucoup de temps, d'efforts et d'argent pour vous assurer que vous disposez des outils appropriés pour lutter contre divers exploits.
