Quand on aime les injections SQL et que l'on développe des applications web avec Ruby-On-Rails, se réveiller un matin en lisant « SQL injections dans ActiveRecord » annonce une très bonne journée... Cet article va détailler comment il est possible d'exploiter cette vulnérabilité pour la base de données MySQL.
1. Introduction
1.1. ActiveRecord
Le cadriciel Ruby-On-Rails est composé de plusieurs bibliothèques afin de limiter la taille du code source. ActiveRecord est la bibliothèque dédiée à la gestion de la persistance (majoritairement le stockage dans une base de données). Elle réalise le « mapping » entre les objets et la base de données et permet aux développeurs un accès facile aux données sans utilisation du langage SQL. Par exemple, il est possible de récupérer tous les objets de la table « users » grâce au code suivant :
User.all
L'avantage de ce type de bibliothèque est de limiter énormément le risque d'injection SQL vu qu'il devient difficile (mais encore possible) pour les développeurs de faire une erreur. Cependant, si cette bibliothèque s'avère vulnérable, c'est le drame... tout le monde est vulnérable.
1.2. La vulnérabilité
Cette vulnérabilité a été publiée le premier janvier 2012 et a été découverte par Ben Murphy....
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première