Se rendre au contenu

Injection SQL aveugle (Blind SQLi)

Variante discrète de l'injection SQL, la « Blind SQLi » fonctionne même quand l'application n'affiche ni résultat de requête ni message d'erreur. L'attaquant déduit l'information autrement. Un faux sentiment de sécurité à ne pas entretenir.

Qu'est-ce qu'une injection SQL aveugle ?

C'est une catégorie d'injection SQL qui ne renvoie ni le résultat de la requête, ni de message d'erreur détaillé. L'attaquant doit donc s'appuyer sur des indices indirects : un changement de comportement de l'application, ou une variation du temps de réponse.

Plus discrète, elle n'en est pas moins efficace : elle permet de contourner les barrières d'accès aux données sensibles, parfois caractère par caractère. C'est pourquoi l'absence de message d'erreur ne signifie jamais qu'une application est à l'abri, un point régulièrement démontré en test d'intrusion.

Les types d'injection aveugle

Basée sur le booléen

L'attaquant pose des questions « vrai/faux » et observe si la page change, pour reconstituer l'information bit par bit.

Basée sur le temps

En injectant des délais conditionnels, il déduit la réponse selon que la page répond vite ou lentement.

Hors bande (out-of-band)

L'information est exfiltrée via un canal annexe (par exemple une requête réseau déclenchée par la base).

Une exploitation automatisable

Lente manuellement, l'attaque s'automatise aisément avec des outils, ce qui la rend tout à fait praticable.

Mêmes impacts qu'une injection classique

Discrète ne veut pas dire inoffensive : une Blind SQLi mène aux mêmes conséquences qu'une injection SQL classique : vol de données, contournement d'authentification, voire prise de contrôle. Elle est simplement plus longue à exploiter et plus difficile à détecter côté défense, ce qui la rend d'autant plus dangereuse si l'on s'est cru protégé par la seule absence de messages d'erreur.

La parade est la même que pour la SQLi

Bonne nouvelle : qu'elle soit « visible » ou « aveugle », l'injection SQL se prévient de la même façon. La mesure reine reste la requête paramétrée (préparée), qui sépare strictement la donnée de la structure de la requête. On y ajoute la validation des entrées, le moindre privilège sur la base et une gestion des erreurs maîtrisée. Masquer les messages d'erreur aide, mais ne suffit jamais, comme le confirme un test d'intrusion.

Se protéger, étape par étape

1

Requêtes paramétrées partout

La défense n°1, sur tous les accès à la base, sans exception.

2

Valider les entrées

Contrôler type, format et longueur des données, en complément des requêtes préparées.

3

Moindre privilège

Limiter les droits du compte applicatif pour réduire l'impact d'une exploitation.

4

Limiter le temps & le débit

Rate limiting et délais maîtrisés compliquent les attaques basées sur le temps.

5

Surveiller les comportements

Détecter des séries de requêtes anormales, signe d'une exploitation automatisée.

6

Tester régulièrement

Inclure la Blind SQLi dans les audits et pentests.

Pourquoi se faire accompagner par BCIT ?

Détecter l'invisible

Nous recherchons les injections, y compris aveugles, que des contrôles superficiels manquent.

Des correctifs clairs

Des recommandations applicables par vos développeurs, priorisées par impact.

Une couverture complète

De la sécurité applicative aux audits, toute la chaîne.

Pas encore prêt à échanger ? Découvrez notre diagnostic cybersécurité →

L'absence d'erreur n'est pas une preuve de sécurité

Prenons 15 minutes pour évaluer l'exposition de vos applications aux injections SQL, y compris aveugles, et définir les correctifs prioritaires.