
Étude cryptanalytique de CVE-2025-29774 et des failles SIGHASH_SINGLE dans l'implémentation ECDSA de Bitcoin, permettant la récupération de clé privée via la réutilisation de nonce et la contrefaçon de signature pour l'accès à un portefeuille perdu.
Cet article de recherche présente une étude cryptanalytique complète des vulnérabilités critiques dans l'implémentation de la signature numérique du protocole Bitcoin, à savoir l'Attaque de Signature Fantôme (CVE-2025-29774) et l'erreur fondamentale de traitement de SIGHASH_SINGLE. L'étude démontre qu'un traitement incorrect des primitives cryptographiques dans le mécanisme de signature de transaction crée les conditions pour la compromission totale des clés privées des propriétaires de portefeuilles de cryptomonnaies sans leur connaissance. L'attaque exploite un bug hérité du client Satoshi original, dans lequel le système retourne une valeur de hachage universelle de « 1 » (uint256) au lieu de rejeter la signature si le nombre d'entrées et de sorties de transaction ne correspond pas.
La partie pratique de l'étude implique l'utilisation de l'outil cryptographique KeyFuzzMaster pour identifier systématiquement les vulnérabilités dans le code de vérification de signature, les opérations sur courbes elliptiques et les fonctions de hachage de transaction. Des formules mathématiques pour la récupération de clé privée via la réutilisation du nonce (paramètre k) dans l'algorithme ECDSA sur la courbe secp256k1 sont présentées. Les primitives cryptographiques de l'algorithme ECDSA (Elliptic Curve Digital Signature Algorithm) sur la courbe elliptique secp256k1 sont discutées. Les signatures numériques dans Bitcoin remplissent une triple fonction : autorisation de dépense, non-répudiation et garantie d'intégrité de la transaction.
Cependant, le maintien de solutions architecturales héritées pour assurer la rétrocompatibilité a conduit à l'émergence de vulnérabilités cryptographiques subtiles avec des conséquences potentiellement catastrophiques. Parmi celles-ci, le bug SIGHASH_SINGLE se démarque —un défaut fondamental dans le mécanisme de génération de hachage de signature, hérité de l'implémentation originale de Bitcoin Core et intégré dans le consensus du réseau.
| Identifiant CVE | Composant | Score CVSS | Criticité |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | Critique |
| CVE-2025-29775 | xml-crypto DigestValue bypass | 9.3 | Critique |
| CVE-2025-48102 | GoUrl Bitcoin Payment Gateway (XSS stocké) | 5.9 | Moyenne |
| CVE-2025-26541 | CodeSolz WooCommerce Gateway (XSS réfléchi) | 6.1 | Moyenne |
Bitcoin utilise la courbe elliptique secp256k1 définie par la norme SECG (Standards for Efficient Cryptography Group). La courbe est définie par l'équation de Weierstrass sur un corps fini :
Équation de la courbe :
y² ≡ x³ + ax + b (mod p)
Pour secp256k1 :
y² ≡ x³ + 7 (mod p), où a = 0, b = 7
Les paramètres de la courbe secp256k1 sont déterminés par le tuple T = (p, a, b, G, n, h) :
Paramètres secp256k1 :
p = 2²⁵⁶ − 2³² − 977 (le nombre premier définissant un corps fini)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
(l'ordre du groupe de points de la courbe est l'ordre entier du générateur G)
G = (Gₓ, Gᵧ) — point de base fixe (générateur)