
Cryptanalytic study of CVE-2025-29774 и SIGHASH_SINGLE flaws in Bitcoin's ECDSA implementation, enabling private key recovery via nonce reuse and signature forgery for lost wallet access.
В данной исследовательской работе представлен всесторонний криптоаналитический анализ критических уязвимостей в реализации цифровой подписи протокола Bitcoin, а именно атаки Phantom Signature (CVE-2025-29774) и фундаментальной ошибки обработки SIGHASH_SINGLE. Исследование показывает, что некорректная обработка криптографических примитивов в механизме подписи транзакций создаёт условия для полной компрометации секретных ключей владельцев криптовалютных кошельков без их ведома. Атака эксплуатирует унаследованную ошибку в оригинальном клиенте Сатоши, при которой система возвращает универсальное хэш-значение «1» (uint256) вместо отклонения подписи, если количество входов и выходов транзакции не совпадает.
Практическая часть исследования предполагает использование криптографического инструмента KeyFuzzMaster для систематического выявления уязвимостей в коде проверки подписи, операциях на эллиптической кривой и функциях хэширования транзакций. Представлены математические формулы восстановления секретного ключа путём повторного использования nonce (k-параметра) в алгоритме ECDSA на кривой secp256k1. Рассматриваются криптографические примитивы алгоритма ECDSA (Elliptic Curve Digital Signature Algorithm) над эллиптической кривой secp256k1. Цифровые подписи в Bitcoin выполняют тройную функцию: авторизация траты, неотказуемость и гарантия целостности транзакции.
Однако сохранение унаследованных архитектурных решений для обеспечения обратной совместимости привело к появлению тонких криптографических уязвимостей с потенциально катастрофическими последствиями. Среди них выделяется ошибка SIGHASH_SINGLE — фундаментальный дефект механизма генерации хэша подписи, унаследованный от оригинальной реализации Bitcoin Core и встроенный в консенсус сети.
| Идентификатор CVE | Компонент | Оценка CVSS | Критичность |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | Критическая |
| CVE-2025-29775 | xml-crypto DigestValue bypass | 9.3 | Критическая |
| CVE-2025-48102 | GoUrl Bitcoin Payment Gateway (Stored XSS) | 5.9 | Средняя |
| CVE-2025-26541 | CodeSolz WooCommerce Gateway (Reflected XSS) | 6.1 | Средняя |
Bitcoin использует эллиптическую кривую secp256k1, определённую стандартом SECG (Standards for Efficient Cryptography Group). Кривая задается уравнением Вейерштрасса над конечным полем:
Уравнение кривой:
y² ≡ x³ + ax + b (mod p)
Для secp256k1:
y² ≡ x³ + 7 (mod p), где a = 0, b = 7
Параметры кривой secp256k1 определяются кортежем T = (p, a, b, G, n, h):
Параметры secp256k1:
p = 2²⁵⁶ − 2³² − 977 (простое число, определяющее конечное поле)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
(порядок группы точек кривой — целый порядок генератора G)
G = (Gₓ, Gᵧ) — фиксированная базовая точка (генератор)
Алгоритм ECDSA использует секретный ключ d для формирования подписи сообщения M. Процесс подписания включает следующие математические операции:
Шаг 1: Генерация случайного nonce k
Выбирается криптостойкое случайное число k ∈ [1, n-1]
Шаг 2: Вычисление точки R
R = k × G (скалярное умножение точки генератора)