Contribuez à SecuObs en envoyant des bitcoins ou des dogecoins.
Nouveaux articles (fr): 1pwnthhW21zdnQ5WucjmnF3pk9puT5fDF
Amélioration du site: 1hckU85orcGCm8A9hk67391LCy4ECGJca

Contribute to SecuObs by sending bitcoins or dogecoins.



GreenSQL un proxy MySQL pour filtrer les requêtes SQL et contrer les injections

Par Rédaction, secuobs.com
Le 23/03/2009


Résumé : GreenSQL est un Proxy filtrant ayant pour objectif de sécuriser les serveurs MySQL contre les attaques par injection SQL. Il intégre différents modes opératoires comme l'apprentissage, la détection ou la prévention des intrusions.



GreenSQL est une solution Open Source, placée sous licence GPL ( lien ), qui se destine à sécuriser les systèmes de gestion de bases de données MySQL ( lien ) vis-à-vis des attaques par injection SQL ( lien ). Présenté (lien ) à l’OWASP ( lien ), GreenSQL est en fait un relai de type Proxy ( lien ) pour analyser les connexions effectuées vers un serveur MySQL.

Son utilisation implique qu’au lieu de se connecter directement au serveur MySQL, les applications vont d’abord se connecter sur le serveur GreenSQL et effectuer des requêtes SQL qui vont être analysées par GreenSQL avant d'être transférées au serveur MySQL réel si elles sont jugées comme légitimes. GreenSQL peut être installé sur la même machine que celle qui héberge le serveur MySQL pour lequel il fait office de Proxy, ou sur un serveur distant. Par défaut, il écoute sur le port 3305 en local et redirige ensuite les requêtes vers le port local 3306, soit le port d'écoute par défaut des serveurs MySQL.

Ces configurations peuvent être modifiées directement via la console de gestion de GreenSQL qu’il sera nécessaire de télécharger et d'installer séparément. GreenSQL peut être en fait utilisé dans différents modes opératoires aux fonctions bien distinctes. Lors du mode de simulation par exemple, aucune requête SQL ne sera bloquée, GreenSQL acte alors comme un « simple » système IDS de détection d’intrusions ( voir notre dossier - lien ) qui identifie les requêtes SQL suspicieuses et notifie l’administrateur via des messages d’avertissement accessibles depuis la console de gestion.

Lorsque GreenSQL est configuré pour bloquer les requêtes suspicieuses, il utilise un moteur de détection heuristique ( lien ) pour prendre la décision de bloquer les requêtes, GreenSQL agit ici comme un système IPS de prévention d’intrusions ( lien ). Si une requête est considérée comme illégale, une seconde vérification sera tout de même effectuée dans une liste blanche. Si une occurrence y est trouvée, la requête sera redirigé vers le serveur MySQL. Dans le cas contraire, un résultat vide est renvoyé gracieusement à l’application pour qu’elle continue son exécution.

Lors de ce mode, certains requêtes légitimes seront bloqués (faux positifs) alors que des illégitimes ne le seront pas (faux négatifs). Ce constat fait partie de la balance d'avantages/inconvénients caractérisant généralement les systèmes IPS de prévention d’intrusions. Aussi il s'avère ici judicieux de recenser préalablement, via le mode apprentissage, les accès SQL légitimes de l'application pour alimenter une liste blanche initiale qui contiendra l’ensemble des requêtes légitimes à exclure des blocages et qui sont nécessaires au bon fonctionnement de l’application. Lors de ce mode, toutes les requêtes sont automatiquement ajoutées à cette liste blanche.

Le mode suivant active lui les protections sur les requêtes inconnues, toutes ces requêtes seront alors automatiquement bloquées, ce mode opérant comme un pare-feu ( lien ) visant à protéger les bases MySQL des requêtes non-recensées par le passé. Lorsqu’une requête inconnue est bloquée, un score équivalent à son potentiel de risque ( lien ) est calculé via différents facteurs par le moteur heuristique, les résultats sont affichés en console. Ce mode est rapide puisqu'il calcule uniquement les scores des requêtes non-recensées, un événement qui s’avère finalement plutôt rare.

GreenSQL identifie les requêtes suspicieuses en combinant différentes méthodes, la première consiste en une recherche exhaustive par motifs sur les requêtes administratives sensibles, soit un sous-système de vérification par signature. Une requête qui essaye de changer la structure d’une base, de créer/vider/supprimer une table ou d’accéder au système de fichier sera ainsi considérée comme sensible, illégale et de nature administrative. Les administrateurs peuvent néanmoins approuver des requêtes spécifiques en les ajoutant à la liste blanche ou en modifiant les listes de motifs administratifs illégaux.

La seconde méthode utilisée consiste pour chaque requête SQL à calculer un score équivalent au potentiel de risque comme précédemment cité, soit un sous-système de classification d'anomalies. Une fois ce potentiel calculé, GreenSQL va bloquer la requête ou juste créer un message d’avertissement selon le mode choisi. Plusieurs facteurs sont utilisées pour ces calcul et notamment l'identification de l’utilisation d’une chaîne vide pour un mot de passe, la détection de la présence de la chaîne « or » dans une requête ainsi que celle d’une expression retournant toujours une valeur positive par exemple.

En termes de performance, les récentes versions ont apporté leur lot d'amélioration pour optimiser les temps nécessaires à la couche additionnelle de traitement qu'il représente. En mode Pare-feu avec une liste de motifs autorisés et sans activation des journaux ni calcul du potentiel de risque, les performances MySQL habituellement constatées ont été abaissées de deux à douze pour-cents en moyenne et en fonction du nombre de requêtes concurrentes. Les pages utilisées comprenaient quatre-vingt deux requêtes. Les mesures des temps de réponses et du nombre de requêtes exécutées par seconde ont été effectuées avec Apache Bench ( lien )

Pour des performances maximales, il est donc recommandé d'utiliser judicieusement le mode d'apprentissage initial pour optimiser le fonctionnement des modes de production. La désactivation des journaux et du calcul des potentiels de risque sont également conseillés, notamment pour les sites subissant une forte charge SQL. La version 0.9.6 de GreenSQL peut être téléchargée ( lien ) sous la forme de packages pré-compilés en version i386 et amd64 pour plusieurs distributions GNU/Linux, ou via son code source à compiler avant de l’installer et de l’utiliser.

Source : Security Database Tools Watch ( lien )