Désérialisation d'objets non fiables menant à RCE, DoS ou élévation de privilèges.
La désérialisation non sécurisée est une vulnérabilité critique où une application désérialise des données contrôlées par l'attaquant sans validation, conduisant souvent à une exécution de code à distance (RCE). La sérialisation transforme un objet en flux binaire/texte pour transport/stockage ; la désérialisation reconstruit l'objet — et peut instancier des classes arbitraires avec des effets de bord.
Les langages affectés : Java (ObjectInputStream, ysoserial), .NET (BinaryFormatter, SoapFormatter — deprecated), Python (pickle, yaml.load non sécurisé), PHP (unserialize sur input non contrôlé), Ruby (Marshal.load). Exploits célèbres : Apache Commons Collections (CVE-2015-7501) a permis des RCE sur des milliers de serveurs Java ; les gadgets chains ysoserial génèrent des payloads exploitant les classes de la stdlib.
Mitigations : (1) ne jamais désérialiser de données non fiables — utiliser des formats data-only (JSON, Protobuf, MessagePack) qui ne portent pas de classes ; (2) si nécessaire, signer cryptographiquement les données (HMAC) avant sérialisation et vérifier avant désérialisation ; (3) whitelist des classes autorisées (LookAheadObjectInputStream en Java, restricted unpickler en Python) ; (4) isoler la désérialisation dans un processus sandboxé. OWASP A08:2021 (Software and Data Integrity Failures) couvre ces risques.
200+ certifications, 400 000+ questions, examens blancs chronométrés.
Voir le catalogue →