Insecure Object Serialization
Sérialisation d'objets non sécurisée
Description
L'application utilise un schéma de désérialisation non sécurisé à partir de données non approuvées.
La désérialisation d'objets non sécurisée peut entraîner :
- L'exécution de code à distance arbitraire (RCE)
- La modification de la logique de l'application
- La falsification de données, comme le contournement du contrôle d'accès
L'exploitation des vulnérabilités de désérialisation est difficile en raison de l'absence d'exploits prêts à l'emploi et de la nécessité de les adapter pour l'exploit ciblé.
Recommandation
Pour prévenir les vulnérabilités de sérialisation d'objets, l'application doit soit :
- Accepter des objets sérialisés provenant uniquement de sources de confiance
- Utiliser uniquement des types de données primitifs de sérialisation
Si ces mesures ne sont pas possibles, envisagez les actions suivantes :
- Implémenter des contrôles d'intégrité tels que des signatures numériques sur tout objet sérialisé pour empêcher la création d'objets hostiles ou la falsification de données.
- Appliquer des contraintes de type strictes lors de la désérialisation avant la création de l'objet, car le code attend généralement un ensemble définissable de classes. Cependant, des contournements de cette technique ont été démontrés, il n'est donc pas conseillé de s'y fier uniquement.
- Isoler et exécuter le code qui effectue la désérialisation dans des environnements à faibles privilèges lorsque cela est possible.
- Consigner (logger) les exceptions et les échecs de désérialisation, tels que les cas où le type entrant n'est pas le type attendu ou la désérialisation lève des exceptions.
- Restreindre ou surveiller la connectivité réseau entrante et sortante des conteneurs ou serveurs qui effectuent la désérialisation.
- Surveiller la désérialisation, alerter si un utilisateur désérialise constamment.
Liens
- Java unmarsheller security
- Deserialization of untrusted data (OWASP)
- Java deserialization cheat sheet
- CWE-502: Deserialization of Untrusted Data
Normes
- CWE_TOP_25:
- CWE_502
- OWASP_ASVS_L1:
- V5_5_1
- V5_5_3
- OWASP_ASVS_L2:
- V1_5_2
- V5_5_1
- V5_5_3
- OWASP_ASVS_L3:
- V1_5_2
- V5_5_1
- V5_5_3
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255
- SECURITY258
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5