Le 3 décembre 2008, Sun a corrigé une faille, découverte et rapportée par Sami Koivu le 1er août 2008. Le rapport de Sun était laconique : « A Security Vulnerability in the Java Runtime Environment (JRE) Related to Deserializing Calendar Objects May Allow Privileges to be Escalated ». Il n'y a là pas grand-chose pour attirer l’œil, si ce n'est l'absence de référence à toute bibliothèque native et à toute corruption mémoire (telle que le classique « buffer overflow ») comme c'est le cas pour la plupart des vulnérabilités Java.
En fait, cette vulnérabilité est due à une faille logique dans la manière dont Java traite la sérialisation (les procédés de conversion entre la représentation interne d'objets et une séquence d'octets stockable ou transférable). Elle permet indépendamment de la plate-forme sous-jacente, de casser le modèle de sécurité de Java et de sortir de la JVM. Pour un attaquant, cela permet notamment de pirater une victime utilisant un navigateur web supportant Java en sortant du bac à sable Java et en exécutant du code arbitraire avec les privilèges de l'utilisateur. Et cela, quel que soit le navigateur, le système d'exploitation et l'architecture matérielle.
Dans cet article, nous tenterons d'expliquer pourquoi nous avons qualifié [ext.1] cette faille de « proche du Saint Graal des failles de logiciels client ».
1. L'impact
L'impact potentiel de cette faille est la raison principale pour laquelle nous nous y sommes intéressés. La mesure de l'impact d'une...
- 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