Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 603

Désérialisation non sécurisée

Vérifié parCybersecurity entrepreneur & security researcher

Qu'est-ce que Désérialisation non sécurisée ?

Désérialisation non sécuriséeVulnérabilité où une application désérialise des données non fiables, permettant à un attaquant d'instancier des objets arbitraires et souvent d'obtenir un RCE.


Quand une application reconvertit des données sérialisées (formats binaires Java/PHP/Python/.NET, YAML ou JSON avec métadonnées de type) en objets, le désérialiseur peut invoquer des constructeurs, des méthodes magiques ou des chaînes de gadgets — des séquences de méthodes déjà chargées qui, mises bout à bout, atteignent un sink dangereux tel que Runtime.exec. Avec une entrée non fiable, l'attaquant forge un payload déclenchant ce comportement pendant la désérialisation, ce qui aboutit à une exécution de code à distance (RCE), un contournement d'authentification, une écriture de fichier ou un déni de service.

Le cas emblématique est CVE-2015-4852 : Oracle WebLogic désérialisait sans authentification des objets Java reçus via le protocole T3 sur le port TCP 7001 et, avec Apache Commons Collections dans le classpath, l'outil ysoserial produisait un gadget RCE fonctionnel. Le premier correctif d'Oracle reposait sur une fragile deny-list de classes plutôt que sur le blocage pur et simple de la désérialisation non fiable. Des failles similaires ont touché Apache Struts (CVE-2017-9805, via XStream) ainsi que d'innombrables bugs d'injection d'objets via unserialize() en PHP. Dans la liste de l'OWASP, la catégorie est passée de A8:2017 à la catégorie plus large A08:2021 – Software and Data Integrity Failures.

flowchart LR
  A[Attaquant] -->|blob sérialisé forgé<br/>cookie / T3 / corps API| APP[Application]
  APP -->|désérialise des octets non fiables| DZ[Désérialiseur]
  DZ -->|instancie des objets<br/>invoque des méthodes magiques| GC[Chaîne de gadgets<br/>dans le classpath]
  GC -->|atteint un sink dangereux| RCE[Runtime.exec / écriture de fichier]
  APP -. défense .-> SIG[Payload signé +<br/>allow-list de types]
  SIG -.->|rejette les types inconnus| DROP[Rejet]

Défenses : ne jamais désérialiser de données non fiables ; préférer des formats liés à un schéma (JSON simple, Protobuf) sans récupération de type ; signer ou appliquer un HMAC aux payloads sérialisés ; imposer une allow-list stricte des types désérialisables ; et maintenir les runtimes à jour — le .NET moderne a rendu obsolète puis supprimé BinaryFormatter.

Exemples

  1. 01

    Application Java désérialisant un cookie de session avec Commons Collections dans le classpath et atteignant un RCE.

  2. 02

    Service Python exécutant pickle.loads sur des octets contrôlés par l'utilisateur.

Questions fréquentes

Qu'est-ce que Désérialisation non sécurisée ?

Vulnérabilité où une application désérialise des données non fiables, permettant à un attaquant d'instancier des objets arbitraires et souvent d'obtenir un RCE. Cette notion relève de la catégorie Vulnérabilités en cybersécurité.

Que signifie Désérialisation non sécurisée ?

Vulnérabilité où une application désérialise des données non fiables, permettant à un attaquant d'instancier des objets arbitraires et souvent d'obtenir un RCE.

Comment se défendre contre Désérialisation non sécurisée ?

Les défenses contre Désérialisation non sécurisée combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.

Quels sont les autres noms de Désérialisation non sécurisée ?

Noms alternatifs courants : Désérialisation non sûre, Vulnérabilité de désérialisation d'objet.

Termes liés

Voir aussi