Ayant déjà eu a faire à des injections SQL, c’est quelque chose de très dérangeant…
GreenSQL est une solution libre sous licence GPL permettant de protéger vos bases de données MySQL des attaques de type « SQL Injection », « Cross-Site Scripting » et « Cross-Site Requests Forgeries ».
GreenSQL fonctionne en tant que proxy pour les requêtes SQL sur les bases de données MySQL. A noter qu’il est prévue de le faire fonctionner également sur les bases de données PostgreSQL selon la roadmap. Voici un post sur leur forum qui en parle avec pour titre : GreenSQL for PostgreSQL
Le fonctionnement est basé sur une évaluation des commandes SQL en utilisant une matrice de cotation des risques (ça me rappele spamassassin ça) ainsi que le blocage de commandes d’administration (DROP, CREATE, etc.)
GreenSQL fonctionne en mode reverse-proxy, c’est à dire, la requête SQL sera transmise à GreenSQL qui va l’analyser pour ensuite la transmettre à MySQL si bien sur, elle est acceptée.
Le schema ci-dessous explique son fonctionnement :
GreenSQL écoute le port 3305 et réexpédie les requêtes vers le port 3306, port standard de MySQL
GreenSQL peut fonctionner sous différents modes :
- Simulation (base de données IDS) – Ne fait que détecter mais ne bloque rien
- Protection (base de données IPS)- Détecter et bloque les requêtes
- Apprentissage
- Protection contre les requêtes non recencées
Durant le mode simulation, GreenSQL en fait que logguer les requêtes SQL et envoie une notifications via la console d’administration les requêtes suspicieuse en consultant la matrice de cotation des risques pour en informer les administrateurs.
Durant le mode Protection, si une requête est considérée comme illégale suite à l’interrogation de son moteur heuristique, une whitelist est consultée.
Si celle-ci apparait dans la whitelist elle est envoyée au moteur MySQL.
Si la requête est considérée comme illégale, GreenSQL renvoie une réponse vide pour ne pas bloguer l’application sur le serveur Web.
Bien sur avec ce mode, il est possible d’avoir des faux-positifs…
Le mode apprentissage sert justement à corriger cette problèmatique en apprenant le type de requêtes possible, il faudra ensuite le repasser en mode protection contre les requêtes non-recencées.
Quand le mode de protection contre les requêtes non-recencées est activé, les requêtes qui n’ont pas été intégrée dans la whitelist sont automatiquement rejetées.
GreenSQL va alors calculer les risques que représente cette requête et remonter l’information à la console de management.
C’est le mode le plus rapide car il ne fait que calculer le risque que pour les nouvelles requêtes.
Voilà en gros le fonctionnement de GreenSQL qui me paraît vraiment être une solution très intéressante, même si le mieux est toujours de prévoir les risques dans le développement, mais bon…
Concernant les performances de l’application web, elle ne paraissent pas tant impactées que cela selon un test de performance effectuée avec l’utilisation de GreenSQL
Des packages sont fournit pour les distributions linux le plus courantes (CentOS, Debian, Fedora, Mandriva, RHEL 5, SLE 5, Opensuse, Ubuntu)
La dernière version, qui est la 1.1.0, vient de sortir le 19 octobre, voici l’annonce de cette sortie
Liens utiles :