Pickling the Mailbox: A Deep Dive into CVE-2025-20393
Mis à jour :
Exploitation de la faille CVE-2025-20393 dans les passerelles email Cisco
Une vulnérabilité critique, identifiée sous le nom de CVE-2025-20393, affecte les produits Cisco Secure Email Gateway (SEG) et Secure Email and Web Manager (SMA). Cette faille, notée 10.0 sur l’échelle CVSS, permet une exécution de code à distance non authentifiée.
L’analyse approfondie a révélé que la cause racine réside dans une défaillance de validation d’entrée (CWE-20). Spécifiquement, elle exploite un dépassement d’entier sur un seul octet dans le protocole RPC du service EUQ (End User Quarantine). Ce dépassement, dû à l’utilisation de la version obsolète de Python 2.6, contourne l’authentification et permet ensuite la désérialisation de données malveillantes via le module pickle de Python, menant à l’exécution de code arbitraire avec une seule requête HTTP.
Points Clés
- Produits Affectés : Cisco Secure Email Gateway (SEG), Secure Email and Web Manager (SMA).
- Cause Racine : Dépassement d’entier sur un seul octet lors de la gestion des longueurs des champs
source_lengthetdestination_lengthdans le protocole RPC EUQ. - Contexte d’Exploitation : Utilisation de Python 2.6, qui tronque silencieusement les valeurs dépassant la capacité d’un octet (0-255) au lieu de générer une erreur.
- Mécanisme d’Exploitation : En envoyant une valeur de 256 octets pour la longueur de destination, le système la considère comme 0. Cela conduit à un contournement de l’authentification car le champ destination est alors traité comme une chaîne vide, puis le message (contenant un gadget pickle) est désérialisé par
cPickle.loads(), permettant l’exécution de code à distance.
Vulnérabilités
- CVE : CVE-2025-20393
- CVSS : 10.0 (Critique)
- CWE : CWE-20 (Improper Input Validation)
- Bug IDs Cisco : CSCws36549, CSCws52505
Stratégies d’Exploitation
- Contournement par Longueur Zéro : L’approche la plus efficace. En envoyant un payload dont la longueur totale, après une première troncature (par exemple, 256 octets pour le payload pickle), aboutit à une longueur de destination effective de 0, l’authentification est complètement contournée. Le serveur traite la destination comme une chaîne vide, ce qui permet au payload pickle d’être exécuté.
- Correspondance du Numéro de Série : Si le numéro de série du serveur cible est connu, il peut être inclus dans le payload. Si la longueur du numéro de série (par exemple, 33 octets) cause le dépassement d’entier (256 + 33 = 289, 289 % 256 = 33), le champ destination contiendra le numéro de série correct, passant ainsi l’authentification avant l’exécution du gadget pickle.
Recommandations
- Mettre à jour les systèmes : Appliquer les correctifs de sécurité Cisco fournis pour résoudre CVE-2025-20393.
- Éviter l’utilisation de Python 2.6 : Les versions obsolètes de langages de programmation, surtout celles avec des comportements non sécurisés par défaut, représentent un risque technique important.
- Revoir la validation d’entrée : S’assurer que toutes les données entrantes sont correctement validées et que les limites de taille sont raisonnablement définies et appliquées.
- Attention à la désérialisation : La désérialisation de données provenant de sources non fiables, en particulier avec des fonctions comme
picklede Python, est intrinsèquement dangereuse et peut équivaloir à l’exécution de code arbitraire.
