La fin de l’année 2011 et le début de l’année 2012 ont été particulièrement agités pour les développeurs du framework Struts [1] car pas moins de 5 vulnérabilités leur ont été rapportées en l’espace de trois semaines. Toutes ces vulnérabilités ont la même origine, à savoir le support d’OGNL dans le framework Struts [2]. Au cours de cet article, nous nous focaliserons sur la vulnérabilité la plus critique et la plus représentative de toutes référencée CVE-2011-3923 [3]. Elle présage de plus d'un vecteur potentiel pour la découverte de nouvelles vulnérabilités sur Struts ou sur d’autres frameworks MVC intégrant le support du langage de script « Expression Language ».
1. Le langage OGNL
L’« Object-Graph Navigation Language (OGNL) », créé par OGNL Technology, est un portage open source du langage de script Java « Expression Language ». Ce langage de script permet d’interagir avec le code source Java de manière simple, transparente et dynamique pendant l’exécution de l’application.
Afin de présenter les fonctionnalités offertes par OGNL (ainsi que la vulnérabilité de l'article), nous allons utiliser une application MVC basique se composant de trois fichiers sources (Modèle : User.java, Vue : User.jsp, Contrôleur : UserAction.java) et du fichier de configuration par défaut du framework « Struts.xml » qui sert à décrire les interactions.
Pour rappel, le modèle MVC qui permet de segmenter l'application en bloc (ce qui permet de travailler en parallèle et de manière séparée sur chaque bloc) fonctionne selon les principes suivants :
- Modèle : est en charge de la couche de persistance de l'application.
-...
- 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