
Dépôt d'exploitation et de recherche analysant CVE-2025-60013, une vulnérabilité critique d'initialisation HSM permettant la récupération de clés privées Bitcoin par débordement de tampon et injection de métacaractères shell dans les modules FIPS F5OS-A.
Cet article analyse les vulnérabilités cryptographiques découvertes dans l'infrastructure moderne de gestion de clés cryptographiques, avec un accent particulier sur les failles critiques dans l'architecture des modules de sécurité matérielle (HSM) lors du traitement des clés privées de courbe elliptique. L'étude se concentre sur une classe d'attaques qui exploitent une gestion de mémoire RAM insuffisamment isolée dans les dispositifs cryptographiques certifiés. Dans l'écosystème cryptographique moderne de Bitcoin, la sécurité des clés privées est une exigence fondamentale pour protéger des actifs numériques valant des milliards de dollars dans le monde. Les modules de sécurité matérielle (HSM) certifiés selon la norme FIPS 140-2 ont traditionnellement été considérés comme offrant une protection impénétrable pour les clés cryptographiques grâce à une isolation matérielle et des protocoles stricts de gestion de la mémoire. Cependant, la découverte de la vulnérabilité critique CVE-2025-60013 dans le module F5OS-A FIPS HSM, combinée à la classe d'attaques Scalar Venom Attack (également connue sous le nom de Scalar Poison, Memory Phantom Leak Attack, ou Private Key Compromise via Memory Leakage), a radicalement changé cette notion, démontrant la possibilité de compromettre complètement les clés privées Bitcoin en exploitant des défauts de gestion de la mémoire.
La Scalar Venom Attack est une classe critique de vulnérabilités de gestion de la mémoire (classifiées comme CWE-415, CWE-401, et plus largement comme Sensitive Memory Leak Attack (SMA)) qui permet à un attaquant d'extraire des scalaires cryptographiques (clés privées ECDSA) de la RAM d'un processus en exploitant une sanitisation et un nettoyage insuffisants de la mémoire après les opérations cryptographiques. Contrairement aux attaques cryptanalytiques traditionnelles visant à résoudre mathématiquement le problème du logarithme discret sur courbe elliptique (ECDLP), cette attaque contourne la cryptographie elle-même en exploitant des défauts architecturaux fondamentaux dans l'implémentation des bibliothèques cryptographiques et des protocoles de gestion de mémoire HSM.
Cette recherche démontre une chaîne d'attaque catastrophique qui se produit lors de la combinaison de CVE-2025-60013 (vulnérabilité d'initialisation F5OS-A FIPS HSM lors de l'utilisation de mots de passe contenant des métacaractères shell spéciaux) avec les techniques Scalar Venom Attack , entraînant un scénario de menace critique avec un score CVSS de 9.5+ (Critique), malgré la classification officielle de CVE-2025-60013 comme vulnérabilité de niveau moyen (CVSS 5.7). Cette combinaison compromet l'intégrité opérationnelle de millions d'adresses Bitcoin contrôlées par des HSM compromis et représente un changement de paradigme dans les méthodes d'attaque cryptographiques au-delà des exploits traditionnels à vecteur unique.
CVE-2025-60013 est une vulnérabilité d'injection de commandes OS (classifiée comme CWE-78) lors du processus d'initialisation du module de sécurité matérielle FIPS pour les plateformes F5. La vulnérabilité se produit lorsqu'un utilisateur avec un accès privilégié (rôle Admin ou Resource Admin) tente d'initialiser le module FIPS HSM en utilisant un mot de passe contenant des métacaractères shell spéciaux, tels que [unclear], [unclear ;] |, &[ $unclear], `et d'autres.
Mécanisme technique de la vulnérabilité :
Lors du traitement d'un mot de passe contenant des métacaractères shell, le code d'initialisation HSM passe la chaîne du mot de passe aux fonctions de la bibliothèque C système sans valider et nettoyer correctement l'entrée. Le code vulnérable ressemble à ceci :
// Vulnerable code in HSM initialization procedure
void hsm_initialize(const char* password) {
ec_secret master_key; // HSM private key
char temp_buffer[256];
strcpy(temp_buffer, password); // VULNERABILITY: buffer overflow + shell interpretation
derive_key_from_password(master_key, password); // creates copies of key
// If initialization fails, memory is not cleared!
// master_key remains in the stack, its copies—in heap
}