Insecure Deserialization
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT
1I. Qu’est-ce la sérialisation/Désérialisation
?
● La sérialisation :
○ Sauvegarder l’état d’une donnée en mémoire
● La désérialisation:
○ Récupérer la donnée sérialisée et la convertir
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Nathan Renaud 2
II. l’Insecure Deserialization
Qu’est-ce que la désérialisation insécurisée ?
● On parle de désérialisation non sécurisée quand
…
● Remplacer un objet sérialisé par un objet d'une classe entièrement différente
● “injection d'objet”
● L’insecure deserialization est 8ème dans le top 10 des vulnérabilités d’OWASP
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Nathan Renaud 3
Qu’est-ce que l’OWASP ?
● L’Open Web Application Security Project (OWASP)
II. l’Insecure Deserialization
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Nathan Renaud 4
II. l’Insecure Deserialization
Comment apparaissent les vulnérabilités de désérialisation non sécurisées ?
●
Manque général de compréhension du danger● Contrôle de données mal effectuer
● Grand nombre de dépendances
● Il est difficile de totalement se prémunir de cette attaque
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Nathan Renaud 5
III. l’Insecure Deserialization par l’exemples
Profiter de l’Object Injection* afin de réaliser une élévation de privilège en PHP.
* En PHP, il est plus courant d’appelé l’Insecure Deserialization “Object Injection”.
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Allan JARRY 6
III. l’Insecure Deserialization par l’exemples
Format d’un objet php sérialisé :
O:4:”User”:2:{s:8:”username”;s:4:”Allan”;s:5:”admin”;b:0;}
Objet décomposé : TYPE : LONGUEUR_NOM : ”NOM_CLASSE” : NOMBRE_DE_PROPRIETES: { PROPRIETES }
Propriété décomposée : TYPE : LONGUEUR_NOM : ”NOM_PROP” : TYPE_VALEUR: LONGUEUR_VALEUR : VALEUR s:8:”username”;s:4:”Allan”;
Élévation de privilège en PHP
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Allan JARRY 7
III. l’Insecure Deserialization par l’exemples
Encodage en base64 :
O:4:”User”:2:{s:8:”username”;s:4:”Allan”;s:5:”admin”;b:0;}
Devient :
Tzo0OuKAnVVzZXLigJ06Mjp7czo4OuKAnXVzZXJuYW1l4oCdO3M6NDrigJ1BbGxhbuKAnTtzOjU64oCdYWRtaW7igJ07YjowO30K
Élévation de privilège en PHP
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Allan JARRY 8
III. l’Insecure Deserialization par l’exemple
1. On décode le cookie
2. On modifie les valeurs du champ admin : O:4:”User”:2:{s:8:”username”;s:4:”Allan”;s:5:”admin”;b: 1 ;}
3. On encode en base64 et on met à jour la valeur du cookie du navigateur.
Élévation de privilège en PHP
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Allan JARRY 9
III. l’Insecure Deserialization par l’exemples
Au rechargement de la page, si aucune vérification sur l’intégrité des données du cookie n’est réalisée.
Vous pouvez profiter de vos nouveaux droits d’administrateur !
Élévation de privilège en PHP
Potentiellement :
- Des accès à des zones de l’application restreintes - Utilisation d’action réservé
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Allan JARRY 10
IV. Les Risques
● Une désérialisation non sécurisée est une attaque à ne pas prendre à la légère
● fournit un point d'entrée à une surface d'attaque
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Florian MARTIN 11
IV. Les Risques
● Attaque de désérialisation permet d'introduire du code non autorisé dans une application.
● Si le code d'un attaquant est autorisé à être désérialisé de manière non sécurisée, presque toutes les intentions malveillantes sont possibles
● L'exposition des données, la compromission du contrôle d'accès et l'exécution de code à distance (« Remote code execution ») sont autant de conséquences possibles d'une désérialisation non sécurisée.
● Même dans le cas où l’exécution de code à distance n’est pas possible, la désérialisation non sécurisée peut conduire à une escalade des privilèges ou bien à des accès non autorisés aux fichiers
● Cette vulnérabilité elle peut également ouvrir la porte à d’autres attaques comme l’injection SQL.
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Florian MARTIN 12
IV. Les Risques
Exécution de code à distance:
● L’attaquant se met à exécuter des commandes sur le serveur comme les commandes ls ou bien cat.
● Dans le cas de ces 2 commandes, on pourrait se dire qu’elles n’ont pas un grand impact sur le serveur.
● En revanche, si l’attaquant se met à exécuter des
commandes comme rm ou rmdir, alors les commandes vont avoir un grand impact sur le serveur qui peut se retrouver compromis.
● De même, un attaquant pourrait installer à partir de la ligne de commande des malwares de toutes sortes sur le serveur.
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Florian MARTIN 13
IV. Les Risques
● Une vulnérabilité de désérialisation avait été découverte chez PayPal et elle avait permis aux attaquants de détourner les systèmes de production
● Incapsula avait rapporté que le nombre d'attaques de désérialisation avait augmenté de 300 % en moyenne, ce qui les transformaient en un risque de sécurité sérieux pour les applications web.
● Très efficace pour les attaques par exécution de code à distance.
● Avec une exploitation réussie d'une mauvaise implémentation de la désérialisation, un attaquant peut utiliser les serveurs d'une victime à n'importe quelle fin. Il peut s'agir d'une prise de contrôle complète du système.
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Florian MARTIN 14
IV. Les Risques
● Développement avec des frameworks récents qui vont abstraire tous les processus de sérialisation /
désérialisation
● Nous n’avons plus vraiment la main sur ces processus ce qui rend difficile la gestion des vulnérabilités de désérialisation insécurisée
● Si le framework ne gère pas correctement les
vulnérabilités, c’est la porte ouverte aux attaquants qui souhaitent exécuter du code malveillant
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Florian MARTIN 15
V. Comment s’en défendre/Tester la vulnérabilité de son application
● Théorie des systèmes → Patience et analyse [ TEST LOGICIEL ]
○ Boite blanche
○ Boite noire
● Non-acceptation objets sérialisés
○ → Source non fiable
○ → Types primitifs
● ⚠ User input ⚠
● Mesure robuste
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Alexandre BOUGRAT 16
V. Comment s’en défendre/Tester la vulnérabilité de son application
● Intégrité → signatures numériques
● Environnements faible privilège
● Authentification → rôle utilisateur
○ ⚠ Piratage
● Exceptions
● Surveillance réseau → drapeau autorisation
● Fichier journal
● Validation user input
○ ⚠ Vookie
● Pare-feu d’application
● WAF → traffic HTTP
○ ⚠ Injections SQL
● Formats données non standard
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Alexandre BOUGRAT 17
● Environnement
● Mesures sécuritaires
● Nettoyage code
● Lutte
VI. Ressources intéressante pour en savoir plus sur l’Insecure Deserialization
- Explication simple et courte :
https://hdivsecurity.com/owasp-insecure-deserialization
- Article avec plusieurs exemples dans divers langages :
https://thehackerish.com/insecure-deserialization-explained-with-examples/
- Article très complet sur l’Insecure Deserialization :
https://infosecwriteups.com/understanding-identifying-insecure-deserialization-vulnerabilities-f7fac5414bb3
- Ressource très intéressante, “guide” pour sécuriser son application face à cette vulnérabilité, proposé par OWASP : https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html
Nathan RENAUD - Allan JARRY - Florian MARTIN - Alexandre BOUGRAT - Qui parle ? Allan JARRY 18