Des messages sur Twitter m’ont alerté ce week-end concernant une faille de sécurité sur le projet commons-collections de la fondation Apache. Cette information a particulièrement attiré mon attention : en tant que développeur Java, nous sommes directement concernés par ce type de faille. Il faut dire que cette librairie est utilisée dans de très nombreuses applications Java, mais également des produits commerciaux tels que Websphere ou Weblogic. Cette faille permet à une personne malintentionnée l’exécution de code arbitraire à distance.
Genèse
Cette faille de sécurité a été confirmée lors de la présentation “AppSecCali: Marshalling Pickles” donné par @frohoff et @gebl en Janvier 2015. L’exploit est présenté à partir du slide 59 de la présentation. Il permet l’exécution de code arbitraire à distance en exploitant les mécanismes de la sérialisation et de la réflexion du JDK. Même si le code de l’exploit a été libéré il y a déjà 9 mois, il n’y a eu aucun communiqué de presse. Dans les faits, il n’y a pas de correctif de la librairie contenant la vulnérabilité. Toutes les applications Java embarquant cette librairie sont susceptibles d’être affectées par cette faille de sécurité.
Explications
Pour les personnes utilisant la lib Apache commons-collections dans leurs projets, il y a une faille de sécurité permettant l’exécution de code distant. L’article de ce blog explique bien le problème. La faille utilise la sérialisation Java et de la réflexion sur la classe InvokerTransformer
pour exécuter du code distant.
Cette faille est possible dans le cas où une application expose des services qui acceptent des objets Java sérialisés (remote EJB, RMI, JMX). Elle a été testée positivement sur Websphere, Weblogic, OpenNMS et Jenkins.
Un ticket JIRA est en cours pour corriger la faille côté Apache commons-collections.