Reconmind, accueil

Attaque

Désérialisation non sécurisée

Aussi appeléInsecure deserializationDésérialisation d’objets non fiables

En résumé

Une vulnérabilité où une application reconstruit des objets à partir de données fournies par l’utilisateur sans en vérifier le contenu. Un objet forgé peut alors déclencher l’exécution de code, la modification de la logique de l’application ou l’accès à des données non prévues.

Désérialisation non sécurisée, en détail

La sérialisation transforme un objet en mémoire en une suite d’octets ou de texte pour le stocker ou le transmettre ; la désérialisation fait l’opération inverse. Le danger apparaît quand le format permet de décrire non seulement des données mais aussi des types et des comportements, comme les sérialisations natives de Java, de PHP, de .NET ou le module pickle de Python. En reconstruisant l’objet, l’application peut exécuter du code présent dans ses propres bibliothèques.

L’attaquant n’a pas besoin d’écrire du code nouveau : il assemble des chaînes d’appels à partir de classes déjà chargées par l’application, ce qu’on appelle des « gadgets ». Les données sérialisées se cachent dans des cookies, des paramètres cachés, des jetons de session ou des messages entre services, et passent souvent inaperçues lors d’une lecture rapide de l’application. La meilleure défense consiste à ne pas désérialiser de données non fiables avec un format natif, et à préférer un format de données pur comme JSON, avec un schéma strict. Quand l’usage est inévitable, on signe les données avec un secret détenu par le serveur, on restreint les types acceptés, et on exécute le composant avec le minimum de droits. La mise à jour des bibliothèques réduit les gadgets disponibles.

Qu’est-ce que cela change pour vous ?

Ce défaut conduit fréquemment à une exécution de code à distance sur un serveur applicatif. Il est facile à introduire par un choix de format de données et se corrige par une décision d’architecture, pas par un filtre.

Exemple illustratif (fictif)

Imaginons une application d’entreprise qui stocke l’état de la session de l’utilisateur dans un cookie contenant un objet sérialisé non signé. Un analyste pourrait remplacer cet objet par un autre, construit pour déclencher une commande lors de sa reconstruction côté serveur.

La confusion fréquente

Penser que seul le code écrit par l’équipe compte. Les gadgets exploités viennent le plus souvent de bibliothèques tierces déjà présentes : une application sans défaut apparent dans son propre code peut rester vulnérable.

Comment le détecter chez vous ?

Aller plus loin

Termes liés

  • AttaqueExécution de code à distance : définitionUne vulnérabilité qui permet à un attaquant d’exécuter ses propres commandes ou son propre code sur un système distant, sans y avoir d’accès légitime.
  • AttaqueChaîne d’approvisionnement logicielle : définitionL’attaque qui vise un composant, un outil ou un fournisseur dont dépend un logiciel, plutôt que le logiciel lui-même.
  • AttaqueInjection SQL : définitionUne vulnérabilité où des données saisies par l’utilisateur sont interprétées comme du code SQL par la base de données, faute de séparation entre la requête et ses paramètres.
  • ConformitéCVE : définitionUn identifiant public et unique, de la forme CVE-2024-12345, attribué à une vulnérabilité connue dans un produit logiciel ou matériel.

Revenir au glossaire complet

Réponse à toute demande sous 24 h ouvrées

Un périmètre à faire tester ?

Le cadrage est gratuit et sans engagement. Trente minutes suffisent à savoir si une mission est pertinente, laquelle, et ce qu’elle coûterait.

  • Accord de confidentialité systématique
  • Cadrage gratuit et sans engagement
  • Périmètre et prix écrits avant le début