Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Bluetooth-Attacks-CVE-2025-27840 — Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth | Kitploit
Strumenti/GitHubGitHub/demining/bluetooth-attacks-cve-2025-27840
Sicurezza Sistemi EmbeddedSicurezza BluetoothSicurezza IoTAnalisi delle VulnerabilitàExploitSicurezza WirelessCrittografiaSicurezza Hardware e IoTPaper e Ricerca

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Apprendimento e Formazione
GitHubdemining/bluetooth-attacks-cve-2025-27840

Bluetooth-Attacks-CVE-2025-27840

Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Vedi RepositorySito web
12561 anno faNon ancora revisionato
Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Il presente documento illustra come un attaccante possa introdurre un elenco nascosto di vulnerabilità attraverso gli aggiornamenti dei moduli, il che può portare al compromesso dei dispositivi ESP32 e all'ottenimento di accesso non autorizzato alle chiavi private, colpendo miliardi di dispositivi che utilizzano questo microcontrollore. Uno dei problemi principali è la vulnerabilità CVE-2025-27840 scoperta nell'architettura ESP32. Per garantire la sicurezza della rete Bitcoin, abbiamo identificato le seguenti vulnerabilità: la possibilità di utilizzare chiavi private non valide a causa della mancanza di un controllo del limite inferiore nella funzione  has_invalid_privkey; una vulnerabilità nella contraffazione delle firme delle transazioni nella funzione  electrum_sig_hash dovuta all'incompatibilità con BIP-137; un problema di PRNG debole nella funzione di generazione delle chiavi  random_key, che rende prevedibili le chiavi private personali dei portafogli di criptovaluta; la mancanza di verifica dei punti sulla curva ECC nella funzione  multiply, che può portare ad attacchi di curva non valida; una vulnerabilità nella funzione  ecdsa_raw_sign durante il ripristino della coordinata Y, che può potenzialmente portare alla sostituzione della chiave pubblica; e vulnerabilità relative alle API di hashing deprecate in  bin_ripemd160.


  • Tutorial: https://youtu.be/nBeZWm2z5o4
  • Tutorial: https://cryptodeeptech.ru/bitcoin-bluetooth-attacks
  • Tutorial: https://dzen.ru/video/watch/6784be61b09e46422395c236
  • Google Colab: https://colab.research.google.com/drive/15lPDHeTo7FkrPY7v4qS7X6hO4x27qT2Y

All'inizio di marzo 2025, Tarlogic Security ha identificato una vulnerabilità nel microcontrollore ESP32, ampiamente utilizzato per connettere i dispositivi tramite WiFi e Bluetooth. Questa vulnerabilità è stata registrata con il numero CVE-2025-27840 . Gli attaccanti possono accedere senza autorizzazione ai dati dei portafogli Bitcoin utilizzando il chip ESP32 come punto di partenza per attacchi crittografici sui dispositivi che operano sulle reti di criptovalute popolari come Bitcoin ed Ethereum. Il problema riguarda milioni di dispositivi IoT che utilizzano questo microcontrollore. Lo sfruttamento di questa vulnerabilità consentirà agli attaccanti di condurre attacchi mascherandosi da utenti legittimi e di infettare permanentemente i dispositivi vulnerabili. Ciò minaccia la sicurezza dei dispositivi IoT basati sul microcontrollore ESP32 e può portare al furto delle chiavi private dei portafogli Bitcoin.

ESP32 è un microcontrollore ampiamente utilizzato nei dispositivi IoT per fornire connettività Wi-Fi e Bluetooth. Gli attaccanti possono utilizzare vari metodi per ottenere l'accesso ai dati delle chiavi private dei portafogli Bitcoin tramite ESP32.

Le minacce alla sicurezza legate al microcontrollore ESP32 possono portare al furto delle chiavi private dei portafogli Bitcoin. I problemi principali includono la presenza di backdoor e vulnerabilità. Sfruttando tali vulnerabilità, gli attaccanti possono manipolare la memoria, falsificare gli indirizzi MAC e iniettare codice dannoso, creando seri rischi per la sicurezza.

Gli attaccanti possono colpire i dispositivi IoT dotati di microcontrollore ESP32 sfruttando le vulnerabilità nelle connessioni Bluetooth e Wi-Fi, che possono diventare uno strumento per attaccare altri dispositivi sulla rete correlata a Bitcoin, oltre che per rubare informazioni riservate, incluse le chiavi private dei portafogli Bitcoin.


Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetoothhttps://youtu.be/nBeZWm2z5o4


Elenco nascosto di vulnerabilità:

Un attaccante può aggiornare i moduli e introdurre nel codice un elenco di varie vulnerabilità, tra cui:

  • Una vulnerabilità nella funzione  has_invalid_privkey che può essere utilizzata per ottenere la chiave privata.
  • Una vulnerabilità nella funzione  electrum_sig_hash consente di contraffare le firme delle transazioni Bitcoin.
  • Vulnerabilità nella funzione  random_key legata a un generatore di numeri pseudo-casuali debole (PRNG non deterministico).
  • Vulnerabilità nella funzione  multiply in cui non viene effettuato alcun controllo di un punto sulla curva ECC.
  • Vulnerabilità nelle funzioni  ecdsa_raw_sign e  bin_ripemd160.

Queste vulnerabilità possono essere utilizzate per iniettare aggiornamenti falsi nei dispositivi ESP32, offrendo agli attaccanti un accesso di basso livello al sistema. Ciò consentirà loro di aggirare i controlli di audit del codice e di ottenere l'accesso alle chiavi private. Attualmente, miliardi di dispositivi potrebbero essere vulnerabili a causa delle funzionalità nascoste di un singolo componente nella loro architettura, designato come CVE-2025-27840.


Vulnerabilità per l'ottenimento della chiave privata nella funzione has_invalid_privkey

Questa vulnerabilità è stata riscontrata nel codice di verifica delle chiavi private di Bitcoin e consente l'utilizzo di chiavi non valide (minori o uguali a 0) a causa della mancanza di un controllo del limite inferiore. Ciò può portare alla perdita di fondi. Per risolvere il problema, è necessario aggiungere un controllo che verifichi che la chiave privata sia maggiore di 0. Il codice è fornito a scopo dimostrativo.


Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetoothhttps://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L305

Questo bug consente l'utilizzo di chiavi private non valide, il che può portare a seri problemi, inclusa la perdita di denaro.

Per risolvere il problema, è necessario aggiungere un controllo che verifichi che la chiave privata sia maggiore di 0.

Immaginate che qualcuno cerchi di “hackerare” la rete Bitcoin. Trova un punto debole nella verifica delle chiavi private utilizzate per accedere alla criptovaluta.

Il problema è che il codice controlla solo se la chiave privata è troppo grande. Se la chiave è molto grande, viene respinta. Ma il codice dimentica di verificare se la chiave è troppo piccola (minore o uguale a zero).

La sezione di codice in cui ciò accade:

root@kitploit:~
...
...
if privkey >= N: # Controlla solo il limite superiore
raise Exception("Invalid privkey")

if privkey <= 0: #
Il limite inferiore non viene controllato correttamente
return True

...
...


A causa di questo bug, è possibile utilizzare chiavi private non valide (molto piccole). Questa vulnerabilità si trova nella funzione  has_invalid_privkey.

Affinché tutto ciò funzioni, è necessario installare la libreria  ecdsa (serve per lavorare con la crittografia): 


Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Script Python secp256k1_privkey_validator.py

root@kitploit:~
!pip install ecdsa 
import ecdsa

def has_invalid_privkey(privkey: int) -> bool:
"""
Checks if a private key is invalid, based on the absence of a lower bound check.

Args:
privkey: The private key to check.

Returns:
True if the private key is invalid (<= 0 or >= N), False otherwise.
"""
# Order of the secp256k1 elliptic curve used by Bitcoin
N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

if privkey >= N: # Check only the upper bound
raise Exception("Invalid privkey")

if privkey <= 0: # Lower bound check missing
return True

return False

# Example usage
privkey = 0 # Invalid private key
is_invalid = has_invalid_privkey(privkey)

if is_invalid:
print("Invalid private key!")
else:
print("Valid private key.")

Spiegazione del codice:

  1. Importazione della libreria ecdsa : sebbene non venga utilizzata direttamente in questo esempio, in scenari reali che coinvolgono Bitcoin ed ECDSA (Elliptic Curve Digital Signature Algorithm), questa libreria potrebbe essere necessaria per eseguire operazioni crittografiche.
  2. Funzione has_invalid_privkey(privkey: int) -> bool :
    • privkey accetta una chiave privata come intero in input.
    • Definisce una costante N che rappresenta l'ordine della curva ellittica secp256k1 utilizzata in Bitcoin.
    • Verifica se privkey è maggiore o uguale a N. In tal caso, genera un'eccezione indicando che la chiave privata non è valida.
    • Verifica se privkey è minore o uguale a 0. In tal caso, restituisce True, indicando che la chiave privata non è valida a causa della mancanza del controllo del limite inferiore.
    • Se entrambi i controlli falliscono, restituisce False.
  3. Esempio di utilizzo :
    • Imposta il valore privkey = 0, che è una chiave privata non valida.

Vulnerabilità :

Il codice contiene una vulnerabilità legata a una verifica insufficiente della chiave privata. In particolare, manca il controllo del limite inferiore (privkey <= 0). Ciò consente l'utilizzo di chiavi private non valide, il che può portare a conseguenze imprevedibili, inclusa la perdita di fondi.

Come risolverlo :

È necessario aggiungere un controllo del limite inferiore sulla chiave privata per garantire che sia maggiore di 0.


Vulnerabilità di contraffazione delle firme delle transazioni Bitcoin nella funzione electrum_sig_hash

La funzione  electrum_sig_hash in Electrum utilizza un metodo di hashing del messaggio non standard, rendendola vulnerabile ad attacchi di contraffazione delle firme a causa della sua incompatibilità con BIP-137.


Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetoothhttps://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L425

Un attaccante che prende di mira la rete Bitcoin può scoprire il metodo di hashing del messaggio non standard utilizzato da Electrum tramite la  electrum_sig_hash. Questa funzione crea un hash del messaggio in un modo che può portare ad attacchi di contraffazione delle firme a causa della sua incompatibilità con BIP-137. Lo script Python fornito dimostra come un attaccante possa generare l'hash del messaggio utilizzato da Electrum per sfruttare la vulnerabilità di incompatibilità con BIP-137. La funzione  electrum_sig_hash prepara il messaggio anteponendo un prefisso e codificandone la lunghezza prima di applicare il doppio hash SHA256.

Uno script Python che dimostra come un attaccante possa trovare un hash del messaggio non standard utilizzato da Electrum per eseguire attacchi di contraffazione delle firme a causa dell'incompatibilità con BIP-137.


Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Script Python bitcoin_sign_hash.py

root@kitploit:~
!pip install ecdsa 
import hashlib

def num_to_var_int(i):
if i < 0xfd:
return i.to_bytes(1, 'little')
elif i <= 0xffff:
return b'\xfd' + i.to_bytes(2, 'little')
elif i <= 0xffffffff:
return b'\xfe' + i.to_bytes(4, 'little')
else:
return b'\xff' + i.to_bytes(8, 'little')

def from_string_to_bytes(s):
return s.encode('utf-8')

def bin_dbl_sha256(s):
hash1 = hashlib.sha256(s).digest()
hash2 = hashlib.sha256(hash1).digest()
return hash2

def electrum_sig_hash(message):
padded = b"\x18Bitcoin Signed Message:\n" + num_to_var_int(len(message)) + from_string_to_bytes(message)
return bin_dbl_sha256(padded)

# Usage example
message = "Example message for signing"
message_hash = electrum_sig_hash(message)
print(f"Electrum message hash: {message_hash.hex()}")

In questo script:

  • num_to_var_int(i): converte un intero nel formato a lunghezza variabile utilizzato in Bitcoin.
  • from_string_to_bytes(s): codifica una stringa in byte utilizzando la codifica UTF-8.
  • bin_dbl_sha256(s): esegue un doppio hashing SHA256 sull'input.
  • electrum_sig_hash(message): simula il metodo non standard di hashing dei messaggi di Electrum, soggetto all'incompatibilità con BIP-137.

Vulnerabilità nella funzione  random_key con PRNG debole nella generazione delle chiavi (PRNG non deterministico)

Il problema sorge quando Bitcoin utilizza una funzione  random_key che si basa sul modulo  random per creare le chiavi. Il modulo  random non è destinato a scopi crittografici perché non genera numeri sufficientemente casuali, rendendo le chiavi private prevedibili per gli attaccanti. Ciò lascia la rete Bitcoin vulnerabile.


Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetoothhttps://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L432

Uno script Python che rende vulnerabile la rete Bitcoin utilizzando random invece di secrets o os.urandom, rendendo le chiavi private prevedibili per un attaccante Bitcoin:

Script Python privkey_generate.py

root@kitploit:~
import random
import time
from hashlib import sha256

def random_string(length):
    return ''.join(random.choice('0123456789abcdef') for i in range(length))

def random_key():
    # Gotta be secure after that java.SecureRandom fiasco...
    entropy = random_string(32) \
        + str(random.randrange(2**256)) \
        + str(int(time.time() * 1000000))
    return sha256(entropy.encode('utf-8')).hexdigest()

# Example usage: generate a private key
private_key = random_key()
print("Generated Private Key:", private_key)

Questo script utilizza il modulo random per generare le chiavi, il che lo rende vulnerabile. L'utilizzo del modulo random non è adatto a scopi crittografici perché non genera numeri sufficientemente casuali.


Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Per creare una chiave più sicura, puoi utilizzare il modulo secrets o os.urandom. Ecco un esempio di utilizzo del modulo secrets:

root@kitploit:~
import secrets
import hashlib

def secure_random_key():
    # Generate a random number with enough entropy
    random_bytes = secrets.token_bytes(32)  # 32 bytes = 256 bits
    
    # Hash the random bytes to create a private key
    private_key = hashlib.sha256(random_bytes).hexdigest()
    return private_key

# Example usage: generate a secure private key
secure_private_key = secure_random_key()
print("Generated Secure Private Key:", secure_private_key)

In questo esempio, il modulo secrets viene utilizzato per generare un numero casuale con entropia sufficiente. Il numero casuale viene poi sottoposto a hash per creare una chiave privata personale. Questo metodo è molto più sicuro rispetto all'utilizzo del modulo random.


Vulnerabilità nella funzione ecdsa_raw_sign

Una vulnerabilità nella funzione ecdsa_raw_sign durante il ripristino della coordinata Y può portare alla sostituzione di una chiave pubblica nella rete Bitcoin. Esiste un alto rischio che un attaccante possa sfruttare la peculiarità del ripristino della coordinata Y quando lavora con una curva ellittica. Questa ambiguità può portare al fatto che la chiave pubblica venga ripristinata in modo errato .


Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetoothhttps://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L543

L'esempio di codice, fornito utilizzando la libreria  pycryptodome, dimostra come questa situazione possa essere simulata sostituendo la coordinata Y per ottenere una chiave pubblica diversa e non valida. È importante notare che l'esempio di codice è semplificato e non è un'implementazione completa dell'attacco , ma ne mostra solo il principio.

Un attaccante può sfruttare l'ambiguità del recupero della coordinata Y nella rete Bitcoin, il che può portare a errori nel recupero della chiave pubblica. Ecco un esempio di come ciò possa essere fatto utilizzando l'operazione XOR bit a bit.


Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Script Python weak_key_recovery.py

root@kitploit:~
!pip install pycryptodome 
from hashlib import sha256
from Crypto.PublicKey import ECC
from Crypto.Signature import DSS
from Crypto.Hash import SHA256
import secrets

# Elliptic curve parameters secp256k1
# PyCryptodome does not provide a convenient way to directly specify the parameters of the secp256k1 curve.
# Therefore, we will use the standard ECC curve.
# For production code, be careful when choosing the curve and its parameters.

def hash_to_int(msghash):
return int(sha256(msghash.encode('utf-8')).hexdigest(), 16)

def deterministic_generate_k(msghash, priv_key_int):
k = 0
while k == 0:
v = b'\x01' * 32
k = b'\x00' * 32
k = sha256(v + k + priv_key_int.to_bytes(32, 'big') + msghash.encode('utf-8')).digest()
v = sha256(v + k + priv_key_int.to_bytes(32, 'big') + msghash.encode('utf-8')).digest()
k = sha256(v + k + priv_key_int.to_bytes(32, 'big') + msghash.encode('utf-8')).digest()
v = sha256(v + k + priv_key_int.to_bytes(32, 'big') + msghash.encode('utf-8')).digest()
k = int.from_bytes(sha256(v + k).digest(), 'big') # % N # Removed % N, since N is no longer a defined constant
return k

def ecdsa_raw_sign(msghash, priv_key_int):
z = hash_to_int(msghash)
k = deterministic_generate_k(msghash, priv_key_int)

# Generate private key object
key = ECC.construct(curve='P-256', d=priv_key_int)

# Calculate point R = kG
# PyCryptodome does not provide direct access to the coordinates of point R
# Therefore, the signature will be calculated in a different way, using DSS

# s = pow(k, -1, N) * (z + r * private_key_int) % N # N is no longer defined
# v = 27 + ((y % 2) ^ (0 if s * 2 < N else 1)) # y is not available

return key, z, k # Return the key, hash, and k for further use in signing

def recover_pubkey(msghash, signature, key):
# WARNING: This is a VERY SIMPLIFIED example of public key recovery.
# In real life, ECDSA public key recovery is a complex process.
# This code is intended only to demonstrate the principle.

# PyCryptodome does not have a simple way to recover PublicKey from r and s directly.
# This code does not perform real recovery, but creates a new PublicKey from the private key.
# In a real attack scenario, you need to try to guess the y-coordinate to get a valid PublicKey.
# But this requires a more complex logic to work with the elliptic curve. return key.public_key()def emulate_attack(msghash, priv): # 1. Sign the message priv_key_int = int(priv, 16) key, z, k = ecdsa_raw_sign(msghash, priv_key_int) signer = DSS.new(key, 'fips-186-3') hash_obj = SHA256.new(msghash.encode('utf-8')) signature = signer.sign(hash_obj) # 2. Attempt to recover the public key (incorrectly) Q = recover_pubkey(msghash, signature, key) # 3. Simulate a situation where the Y coordinate is recovered incorrectly # In a real attack scenario, an attacker will try to iterate through different y-coordinates. # In this example, we simply change the x-coordinate slightly tampered_key = ECC.construct(curve='P-256', d=priv_key_int + 1) # EXAMPLE! DO NOT DO THIS IN REAL CODE! Q_tampered = tampered_key.public_key() return Q, Q_tampered # Example usage msghash = "Message example" # Generate a random private key private_key = ECC.generate(curve='P-256') priv = hex(private_key.d) # Store private key as a hex string # Example usage Q, Q_tampered = emulate_attack(msghash, priv) print("Original Public Key:", Q) print("Tampered Public Key:", Q_tampered) print("Are the keys equal?", Q == Q_tampered)

Questo script dimostra come la coordinata Y possa essere modificata per produrre una chiave pubblica non valida.

Tieni presente che questo è solo un esempio e un attacco reale potrebbe essere molto più complesso.

Oltre allo script di cui sopra, ecco alcuni punti aggiuntivi da considerare:

  • Attacco Frey-Rück: Questo attacco sfrutta le vulnerabilità della firma ECDSA per estrarre la chiave privata “K” (nonce), il che può in ultima analisi portare al recupero del portafoglio Bitcoin.
  • Operazioni bit a bit: XOR è uno strumento prezioso per la crittografia dei dati e può essere utilizzato in combinazione con altre operazioni per migliorare la sicurezza.
  • Attacco del 51%: Sebbene non sia direttamente correlato al recupero della coordinata Y, è importante capire che un attaccante che controlla più del 50% della potenza di calcolo della rete può potenzialmente manipolare la blockchain.
  • Manipolazione delle coordinate della curva jacobiana: Gli attaccanti possono manipolare le proprietà matematiche delle coordinate jacobiane per creare firme digitali false.
  • Aggiornamento del software: È estremamente importante aggiornare sempre il proprio software e utilizzare solo dispositivi affidabili per prevenire la potenziale perdita di monete BTC a causa di vulnerabilità critiche.

Vulnerabilità nella funzione bin_ripemd160

Le API di hashing legacy sulla rete Bitcoin, soprattutto in assenza di RIPEMD-160, possono essere vulnerabili. Gli attaccanti possono identificare e sfruttare implementazioni deboli, evidenziando l'importanza di utilizzare librerie crittografiche aggiornate e aggiornamenti di sicurezza regolari.


Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetoothhttps://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L378

Un attaccante sulla rete Bitcoin potrebbe trovare una vulnerabilità nell'API di hashing legacy, soprattutto se alcuni sistemi non dispongono di un'implementazione di RIPEMD-160. Il problema è in una funzione  bin_ripemd160 che tenta di utilizzare  hashlib per l'hashing, ma se ciò fallisce, passa alla propria implementazione, potenzialmente più debole.

Lo script Python fornito dimostra come un attaccante possa testare un nodo Bitcoin per verificare la presenza di un'implementazione API debole. Se  hashlib non supporta RIPEMD-160, viene utilizzata un'implementazione semplificata, che può portare a collisioni di hash e ad altre vulnerabilità. Lo script simula l'attacco eseguendo l'hashing dei dati e stampando un avviso se viene utilizzata un'implementazione debole.

I rischi includono la possibilità di falsificazione delle transazioni e lo sfruttamento di vulnerabilità note nelle API legacy. Per proteggerti, si consiglia di utilizzare librerie crittografiche aggiornate e testate, aggiornare regolarmente il software Bitcoin e verificare l'output delle operazioni crittografiche.


Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Uno script Python in cui un attaccante Bitcoin trova un'API di hashing deprecata e discute il rischio di non implementare RIPEMD-160 in determinati ambienti:

Script Python ripemd160_vulnerability.py

root@kitploit:~

Spiegazione dettagliata:

  1. Implementazione RIPEMD160 (se non presente in hashlib):
    • La classe RIPEMD160 simula un'implementazione di RIPEMD160. In realtà, dovrebbe implementare l'algoritmo di hashing RIPEMD160. A scopo dimostrativo, restituisce un hash fittizio.
  2. Funzione bin_ripemd160(string):
    • Tenta di eseguire l'hashing della stringa di input utilizzando RIPEMD160.
    • Prima tenta di utilizzare l'implementazione hashlib e, se necessario, ripiega sull'implementazione personalizzata.
    • Se hashlib non supporta RIPEMD160, cattura l'eccezione ValueError e utilizza un'implementazione personalizzata.
  3. Funzione check_for_weak_api(data):
    • Questa funzione simula un attaccante che testa un nodo della rete Bitcoin per implementazioni API deboli.
    • Indica che l'attaccante sta testando il nodo per un'API debole.
    • Codifica i dati in formato utf-8.
    • Chiama bin_ripemd160 per l'hashing dei dati.
    • Indica che i dati sono stati sottoposti a hash e mostra il valore hash.
    • Se l'hash è un hash fittizio (20 byte di zeri), stampa un avviso che il nodo sta utilizzando un'implementazione debole o personalizzata di RIPEMD160, il che può portare a collisioni di hash o ad altre vulnerabilità.
  4. Esempio di utilizzo:
    • Nel blocco if __name__ == "__main__":, specifica dati di esempio e chiama check_for_weak_api con quei dati.

Come funziona:

  1. Simulazione dell'attacco:
    • Lo script simula un attaccante che cerca di identificare i nodi nella rete Bitcoin che utilizzano API di hashing RIPEMD160 obsolete o deboli.
  2. Controllo dell'implementazione RIPEMD160:
    • Tenta di utilizzare la libreria standard hashlib per l'hashing RIPEMD160. Se questo fallisce (perché hashlib nell'ambiente particolare non supporta RIPEMD160), ripiega su un'implementazione personalizzata (che in questo esempio è una versione semplificata).
  3. Identificazione delle debolezze:
    • L'implementazione personalizzata (in questo esempio) è intenzionalmente debole. Un attaccante può sfruttare questa debolezza se un nodo utilizza questa implementazione.
  4. Possibili rischi:
    • Collisioni di hash: Un'implementazione debole dell'hash RIPEMD160 può essere suscettibile a collisioni di hash. Un attaccante può usarle per manomettere transazioni o dati.
    • Vulnerabilità di sicurezza: Le API obsolete possono contenere vulnerabilità note che un attaccante potrebbe sfruttare.

Come mitigare:

  1. Utilizzo di librerie aggiornate:
    • Assicurati di utilizzare librerie aggiornate e testate per le operazioni crittografiche.
    • Se è necessario RIPEMD160, utilizza un'implementazione affidabile e aggiornata.
  2. Aggiornamenti regolari:
    • Mantieni aggiornato il tuo software Bitcoin per beneficiare delle correzioni di sicurezza e dei miglioramenti.
  3. Validazione:
    • Controlla sempre l'output delle operazioni crittografiche per assicurarti che soddisfino gli standard previsti.

Vulnerabilità nella funzione  multiply: nessun controllo di un punto sulla curva ECC

Bitcoin presenta una potenziale vulnerabilità nella sua funzione  multiply a causa di una validazione insufficiente dei punti sulla curva ECC. Questo potrebbe consentire a un attaccante di eseguire attacchi con curva non valida, sebbene le moderne librerie crittografiche come  pycryptodome rendano difficile tale sfruttamento. L'attacco è possibile tramite manipolazione della curva jacobiana, che potrebbe portare a firme contraffatte e alla manipolazione della rete.


Criptoanalisi di Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi e Bluetoothhttps://github.com/primal100/pybitcointools/blob/e7c96bfe1f4be08a9f3c540e598a73dc20ca2462/cryptos/main.py#L275

Nella rete Bitcoin, un attaccante può trovare una vulnerabilità nella funzione  multiply, che non esegue un controllo completo che un punto sia su una curva ellittica (ECC). Nel codice, il controllo viene eseguito solo per i punti non nulli, il che apre la possibilità di attacchi che utilizzano curve non valide (invalid curve attacks).

Il codice di esempio dell'attaccante mostra come questa vulnerabilità possa essere sfruttata. Dimostra una funzione  multiply che non esegue un controllo affidabile che un punto si trovi su una curva, e una funzione  invalid_curve_attack che tenta di sfruttare questa debolezza. Il codice utilizza anche le librerie  pycryptodome per le operazioni crittografiche.

Con  pycryptodome è più difficile eseguire direttamente tali attacchi a causa dei meccanismi di sicurezza integrati. Il codice mostra come si possa creare una curva “errata” e tentare di eseguire una moltiplicazione, ma viene sottolineato che questo è insicuro e richiede una profonda comprensione della crittografia.


Sfruttando una vulnerabilità nella funzione multiply, un attaccante può eseguire un attacco con curva non valida per compromettere le chiavi private sulla rete Bitcoin. Di seguito è riportato uno script Python di esempio che dimostra questo attacco.


Criptoanalisi di Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi e Bluetooth

Script Python ecdsa_curve_attack.py

root@kitploit:~
!pip install pycryptodome 
from Crypto.Hash import SHA256
from Crypto.Signature import DSS
from Crypto.PublicKey import ECC
from Crypto.Math import *

class Exploit:
def __init__(self):
self.msg = "ATTACK!"
self.hash = hash_msg(self.msg)

def sign_message(self, private_key):
signer = DSS.new(private_key, 'fips-186-3')
signature = signer.sign(self.hash)
return signature

def verify_signature(self, public_key, signature):
verifier = DSS.new(public_key, 'fips-186-3')
try:
verifier.verify(self.hash, signature)
return True
except ValueError:
return False

def hash_msg(msg):
hasher = SHA256.new(msg.encode('utf-8'))
return hasher.digest()

# Elliptic curve parameters (example, must be replaced with the parameters of the curve being used)
# WARNING: IN REAL CODE, YOU MUST USE SECURE CURVES AND THEIR PARAMETERS!
# EXAMPLE FOR DEMONSTRATION, DO NOT USE IN PRODUCTION!
curve = 'secp256r1' # Or another curve

# Vulnerable function (EXAMPLE! PyCryptodome HAS NO DIRECT EQUIVALENT to fast_multiply)
# This function is here to demonstrate the vulnerability, but requires adaptation to specific needs and cryptographic primitives.
def multiply(pubkey, privkey):
# WARNING: THIS IS A VERY SIMPLIFIED EXAMPLE, NOT SAFE!
# IN REAL CODE, YOU NEED TO USE CRYPTOGRAPHICALLY SECURE METHODS!
# Checking if the point is on the curve. In PyCryptodome, this is done automatically.

#Performing multiplication
result = privkey.d * pubkey.pointQ

return result

# Example of invalid curve attack (adapted for pycryptodome)
def invalid_curve_attack(public_key, malformed_curve_parameters):
# Creating a "wrong" curve (example!)
#malformed_curve = ECC.CurveObj(malformed_curve_parameters['name'],
# malformed_curve_parameters['oid'],
# malformed_curve_parameters['field'],
# malformed_curve_parameters['a'],
# malformed_curve_parameters['b'],
# malformed_curve_parameters['generator'],
# malformed_curve_parameters['order'])

# Creating a public key on the "wrong" curve (example!)
#attacker_key = ECC.EccPoint(malformed_curve_parameters['generator'].x, malformed_curve_parameters['generator'].y, malformed_curve)

# Creating a fake private key (example!) #attacker_private_key = ECC.construct(curve=malformed_curve, pointQ=attacker_key) # WARNING: In PyCryptodome, it is more difficult to directly manipulate curves and points # to demonstrate invalid curve attack. This code is left commented out, # because correct operation requires a deep understanding of ECC and unsafe operations. # It is recommended to use standard curves and avoid creating your own. # Performing multiplication using the vulnerable function (EXAMPLE! NOT SAFE!) # result = multiply(attacker_key, attacker_private_key) # return result return None # Returning None to avoid an error # Example of "wrong" curve parameters (NEVER USE IN PRODUCTION!) # This is just an example showing the data structure. Real parameters should be carefully selected. # These parameters are commented out to avoid an error when creating EccPoint with curve=None malformed_curve_parameters = { #'name': "MalformedCurve", #'oid': "1.2.3.4", #'field': 17, #'a': 2, #'b': 3, #'generator': ECC.EccPoint(5, 1), # Removed None because it causes an error #'order': 19 } # Creating a private key (for example) private_key = ECC.generate(curve=curve) public_key = private_key.public_key() # Example of using invalid curve attack attack_result = invalid_curve_attack(public_key, malformed_curve_parameters) print(attack_result)

Spiegazione del codice:

  • Vulnerabilità: La funzione multiply controlla che un punto sia sulla curva ECC solo se non è un punto all'infinito. Questo consente di utilizzare punti che non sono sulla curva principale, ma sono sulla curva twist.
  • Attacco con curva non valida: L'attacco consiste nell'utilizzare un punto su un'altra curva (curva malformata) per ottenere informazioni sulla chiave segreta. Poiché il controllo della curva non viene eseguito per tutti i punti, è possibile passare un punto da un'altra curva e usare il risultato per recuperare parte della chiave segreta.
  • Funzione invalid_curve_attack: Questa funzione prende una chiave pubblica e parametri di curva malformata. Crea un punto sulla curva malformata e utilizza la funzione vulnerabile multiply per eseguire la moltiplicazione.

Come funziona l'attacco al piccolo sottogruppo:

  1. Selezione di un punto di ordine basso: L'attaccante seleziona un punto Q di ordine basso sulla curva o sulla twist della curva.
  2. Invio di un punto: L'attaccante invia questo punto Q alla vittima, spacciandolo per la sua chiave pubblica.
  3. Calcolo del segreto condiviso: La vittima calcola nQ, dove n è la chiave segreta della vittima.
  4. Forza bruta: Poiché Q ha un ordine piccolo, esiste un numero limitato di valori possibili per nQ. Un attaccante può forzare a forza bruta tutti questi valori e verificare quale corrisponde ai dati crittografati espandendo n modulo l'ordine di Q.

Raccomandazioni:

  • Controlla sempre che i punti di input siano effettivamente sulla curva ECC.
  • Utilizza librerie che forniscano un controllo robusto della curva e protezione dagli attacchi con curva non valida.

Attacco al piccolo sottogruppo

Criptoanalisi di Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi e Bluetooth

Decodifica una transazione RawTX vulnerabile utilizzando la funzione di servizio SMALL SUBGROUP ATTACK


Criptoanalisi di Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi e Bluetooth

Il risultato è il valore K della chiave segreta Nonce in formato HEX

root@kitploit:~
K = 6bd261bd25ac54807552dfeec6454d6719ec8a05cb11ad5171e1ad68abb0acb2

Per ottenere tutti gli altri valori dalla transazione RawTX vulnerabile, utilizzeremo il servizio RSZ Signature Decoder.

Criptoanalisi di Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi e Bluetooth

Valori risultanti per R, S, Z in formato HEX

root@kitploit:~
R = 5013dbed340fed00b6cb9778a713e1456b8138d00c3bcf6e7ff117be723335d0
S = 5018ddd352a6bc61b86afee5001a3e25d26a328a833c8f3812a15465f542c1c9
Z = 396ebf23dbcccce2a389ccb26198e25118bf7f72c38d2a4ab8d9e4648f2385f8

Per ottenere il valore X della chiave privata dalla formula: priv_key = ((((S * K) - Z) * modinv(R, N)) % N) utilizzeremo il software Dockeyhunt Private Key Calculator

Criptoanalisi di Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi & Bluetooth

Di conseguenza, otteniamo il valore X della chiave privata in formato HEX

root@kitploit:~
X = 0x12d3428123e4262d6890e0ef149ce3c1335229b3f44ed6026bdec2921e796d34

Verifichiamo il risultato della chiave privata ottenuta utilizzando il machine learning

Avviamo BitcoinChatGPT

root@kitploit:~
%run BitcoinChatGPT
root@kitploit:~
Apply the SMALL SUBGROUP ATTACK function to extract the private key from a vulnerable RawTX transaction in the Bitcoin cryptocurrency

Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Infine, il modulo BitcoinChatGPT restituisce la risposta nel file: KEYFOUND.privkey memorizzando la chiave privata nei due formati più utilizzati HEX & WIF

https://github.com/demining/CryptoDeepTools/blob/main/39BluetoothAttacks/KEYFOUND.privkey


root@kitploit:~
============================= KEYFOUND.privkey =============================

Private Key HEX: 0x12d3428123e4262d6890e0ef149ce3c1335229b3f44ed6026bdec2921e796d34

Private Key WIF: 5HxaSsQFK9TDeNfTnNyXAzHXZe3hq3UzZ977GzdjSwEVVeEcDmZ

Bitcoin Address: 1GSrCrtjZ6nk3Yn2wuY2qyXo8qPLGgAMqQ

Balance: 10.00000000 BTC

============================= KEYFOUND.privkey =============================

Per implementare il codice, installeremo il pacchetto Bitcoin . Questa libreria consente di creare wallet, interagire con la blockchain, creare e firmare transazioni e lavorare con vari formati di indirizzo e chiavi private della criptovaluta Bitcoin.

root@kitploit:~
!pip3 install bitcoin

Eseguiamo  il codice  per verificare la corrispondenza dell'indirizzo Bitcoin:

Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth
root@kitploit:~
__________________________________________________

Private Key WIF: 12d3428123e4262d6890e0ef149ce3c1335229b3f44ed6026bdec2921e796d34
Bitcoin Address: 1GSrCrtjZ6nk3Yn2wuY2qyXo8qPLGgAMqQ
total_received 	= 10.00000000 Bitcoin
__________________________________________________

Esatto! La chiave privata corrisponde al Bitcoin Wallet.


Apriamo  bitaddress  e verifichiamo:

root@kitploit:~
ADDR: 1GSrCrtjZ6nk3Yn2wuY2qyXo8qPLGgAMqQ
WIF:  5HxaSsQFK9TDeNfTnNyXAzHXZe3hq3UzZ977GzdjSwEVVeEcDmZ
HEX:  12d3428123e4262d6890e0ef149ce3c1335229b3f44ed6026bdec2921e796d34
Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Risultati e passi per ridurre la minaccia

Nell'ambiente digitale odierno, proteggere dispositivi e reti è fondamentale. Questo articolo analizza una serie di vulnerabilità riscontrate in vari componenti, inclusi i dispositivi ESP32 e il software per lavorare con criptovalute come Bitcoin. Esaminiamo i difetti nel codice di verifica delle chiavi private, nei metodi di hashing delle transazioni, nella generazione casuale delle chiavi, nella verifica dei punti della curva ECC, nel recupero della coordinata Y e nelle API di hashing obsolete. Particolare attenzione è rivolta alla vulnerabilità CVE-2025-27840 nei microcontrollori ESP32, che consente agli attaccanti di iniettare aggiornamenti falsi e ottenere accesso a basso livello al sistema. Vengono discusse le potenziali implicazioni di queste vulnerabilità, tra cui la possibilità di bypassare i controlli di audit del codice, ottenere accesso alle chiavi private e condurre attacchi alla supply chain. L'articolo si conclude con raccomandazioni per rafforzare la sicurezza e prevenire potenziali attacchi.

Rilevanza

Miliardi di dispositivi potrebbero ora essere vulnerabili a difetti di progettazione nascosti in un singolo componente, identificato come CVE-2025-27840. Le vulnerabilità potrebbero consentire agli attaccanti di falsificare gli indirizzi MAC, ottenere accesso non autorizzato alla memoria del dispositivo e condurre attacchi tramite Bluetooth.

Vulnerabilità e loro analisi

  • Vulnerabilità nella derivazione della chiave privata inhas_invalid_privkey : La mancanza di controllo del limite inferiore per le chiavi private Bitcoin consente l'uso di chiavi non valide (minori o uguali a 0), il che può portare alla perdita di fondi.
  • Vulnerabilità di falsificazione della firma delle transazioni Bitcoin nella funzioneelectrum_sig_hash : L'uso da parte di Electrum di un metodo di hashing dei messaggi non standard lo rende vulnerabile ad attacchi di falsificazione delle firme a causa della sua incompatibilità con BIP-137.
  • Vulnerabilità della funzione random_key(PRNG debole nella generazione delle chiavi) : L'uso del modulo randomper la generazione delle chiavi nella rete Bitcoin rende le chiavi private prevedibili per gli attaccanti, poiché questo modulo non è destinato a scopi crittografici.
  • Vulnerabilità nella funzione multiply(Mancanza di validazione dei punti della curva ECC) : Una validazione insufficiente dei punti sulla curva ECC può consentire a un attaccante di condurre attacchi con curve non valide, il che può portare a firme contraffatte e manipolazione della rete.
  • Vulnerabilità nella funzioneecdsa_raw_sign : Il ripristino errato della coordinata Y può portare alla sostituzione di una chiave pubblica nella rete Bitcoin.
  • Vulnerabilità della funzionebin_ripemd160 : Le API di hashing legacy, specialmente quelle prive di RIPEMD-160, possono essere vulnerabili ad attacchi, evidenziando l'importanza di utilizzare librerie crittografiche aggiornate e aggiornamenti di sicurezza regolari.

Criptoanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT tramite Wi-Fi e Bluetooth

Vantaggi dell'identificazione e della correzione delle vulnerabilità

  1. Prevenzione delle perdite finanziarie : La correzione delle vulnerabilità relative alle chiavi private e alla falsificazione delle firme aiuta a prevenire la perdita di fondi per gli utenti di criptovalute.
  2. Protezione dei dati riservati : La correzione delle vulnerabilità nei dispositivi ESP32 previene l'accesso non autorizzato alla memoria e lo spoofing degli indirizzi MAC, proteggendo così i dati riservati degli utenti.
  3. Miglioramento della sicurezza della rete : La correzione delle vulnerabilità in funzioni crittografiche come random_keye ecdsa_raw_signmigliora la sicurezza complessiva della rete Bitcoin e previene potenziali attacchi a transazioni e firme.
  4. Costruzione della fiducia degli utenti : L'identificazione tempestiva e la correzione delle vulnerabilità aiutano a costruire la fiducia degli utenti nei dispositivi e nel software, il che è particolarmente importante nel settore delle criptovalute e dell'IoT.
  5. Mantenimento degli standard di sicurezza : Mantenere aggiornate le librerie crittografiche e le API e seguire gli standard di sicurezza moderni aiuta a prevenire l'uso di componenti obsoleti e vulnerabili.

Conclusione

L'identificazione e l'analisi delle vulnerabilità presentate in questo articolo evidenziano la necessità di un monitoraggio continuo e di un miglioramento della sicurezza di dispositivi e software. Affrontare queste vulnerabilità non solo previene potenziali attacchi e perdite finanziarie, ma aiuta anche a costruire la fiducia degli utenti e a rispettare gli standard di sicurezza. L'implementazione di robusti meccanismi di protezione e aggiornamenti di sicurezza regolari sono elementi chiave per garantire un funzionamento sicuro e affidabile dei sistemi digitali. La necessità di migliorare la sicurezza in dispositivi e reti come l'ESP32 sta diventando sempre più urgente.


Riferimenti:

  1. Raccomandazioni per l'eliminazione delle vulnerabilità nel codice Bitcoin e nei dispositivi ESP32
  2. Debolezze nell'implementazione di Bitcoin: Come le vulnerabilità in random_key e ecdsa_raw_sign compromettono la sicurezza
  3. Analisi della vulnerabilità della funzione has_invalid_privkey: Problemi con la verifica delle chiavi private Bitcoin e raccomandazioni per la correzione
  4. Sostituzione della chiave pubblica: Vulnerabilità della funzione ecdsa_raw_sign, rischi associati al recupero della coordinata Y, esempi di codice per dimostrare la vulnerabilità
  5. Sicurezza di Bitcoin: Esame dei rischi associati alla verifica ECC errata e alle API di hashing obsolete
  6. Analisi del rischio di sicurezza: Vulnerabilità nei dispositivi ESP32 e nella rete Bitcoin
  7. API di hashing obsolete in Bitcoin: Vulnerabilità della funzione bin_ripemd160
  8. Aggiornamenti falsi e accesso alle chiavi private: Vulnerabilità ESP32 e loro conseguenze
  9. Rischi per la sicurezza di Bitcoin: Vulnerabilità nelle funzioni di verifica delle chiavi e generazione delle transazioni
  10. Problemi con la generazione delle chiavi: Vulnerabilità della funzione random_key, generatore di numeri pseudo-casuali debole e sue conseguenze
  11. Carenze delle funzioni crittografiche in Bitcoin e potenziali minacce alla rete
  12. Attacchi alla curva ellittica: Vulnerabilità della funzione multiply, verifica insufficiente dei punti sulla curva ECC, possibili vettori di attacco
  • Rischi dell'uso di PRNG inaffidabili in Bitcoin Verifica insufficiente dei punti ECC: Vulnerabilità della funzione multiply
  • Panoramica delle vulnerabilità in Bitcoin: Rischi potenziali per chiavi private e transazioni
  • Analisi critica della sicurezza di ESP32 e Bitcoin: Vulnerabilità e metodi di protezione
  • API di hashing obsolete: Vulnerabilità della funzione bin_ripemd160 Problemi con l'implementazione di RIPEMD-160 Importanza delle librerie crittografiche attuali
  • Vulnerabilità della funzione electrum_sig_hash: Falsificazione della firma delle transazioni Bitcoin Metodo di hashing non standard e sue conseguenze Esempi di attacchi basati sull'incompatibilità con BIP-137
  • Analisi delle vulnerabilità nell'implementazione di Bitcoin: Dalla generazione delle chiavi alla falsificazione delle firme
  • CVE-2025-27840: Vulnerabilità in ESP32, che consente aggiornamenti firmware non autorizzati e accesso alle chiavi private
  • Vulnerabilità nella verifica delle chiavi private di Bitcoin: Bypass del controllo del limite inferiore

  • Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi e Bluetooth


    Questo materiale è stato creato per il  CRYPTO DEEP TECH portale  per garantire la sicurezza dei dati finanziari e la crittografia sulle curve ellittiche  secp256k1  contro le deboli  ECDSA firme  nella  BITCOIN criptovaluta . I creatori del software non sono responsabili dell'uso dei materiali.


    Codice sorgente

    Google Colab

    BitcoinChatGPT

    Small Subgroup Attack

    Dockeyhunt Deep Learning

    Telegram: https://t.me/cryptodeeptech

    Materiale video: https://youtu.be/nBeZWm2z5o4

    Tutorial video: https://dzen.ru/video/watch/6784be61b09e46422395c236

    Sorgente: https://cryptodeeptech.ru/bitcoin-bluetooth-attacks


    Crittanalisi Bitcoin: la vulnerabilità CVE-2025-27840 nei microcontrollori ESP32 mette a rischio miliardi di dispositivi IoT via Wi-Fi e Bluetooth

    Scarica lo strumento
  • Chiama la funzione has_invalid_privkey per verificare privkey.
  • A seconda del risultato, mostra un messaggio che indica se la chiave privata è valida o meno.



































  • import hashlib import binascii # RIPEMD160 implementation (if hashlib doesn't have it) class RIPEMD160: def __init__(self, data): self.data = data def digest(self): # This is a placeholder. In a real implementation, you would perform the RIPEMD160 hashing algorithm. # For demonstration purposes, we will return a dummy hash. return b'\x00' * 20 # Returns 20 bytes of zeros def bin_ripemd160(string): """ Hashes the input string using RIPEMD160. It attempts to use hashlib's implementation first and falls back to a custom implementation if necessary. """ try: digest = hashlib.new('ripemd160', string).digest() except ValueError: print("RIPEMD160 not supported in hashlib, falling back to custom implementation.") digest = RIPEMD160(string).digest() return digest def check_for_weak_api(data): """ Simulates an attacker probing a Bitcoin network node for weak API implementations. """ print("Attacker: Probing node for weak API...") # Simulate data that needs to be hashed (e.g., part of a transaction) data_to_hash = data.encode('utf-8') # Attempt to hash the data using RIPEMD160 hashed_data = bin_ripemd160(data_to_hash) print("Attacker: Data hashed (potentially using a weak or custom RIPEMD160 implementation).") print("Attacker: Hash value:", binascii.hexlify(hashed_data).decode('utf-8')) # Here, an attacker would potentially exploit the weak implementation. # For demonstration, we'll just print a warning. if hashed_data == b'\x00' * 20: # This is the dummy hash from our custom RIPEMD160 print("Attacker: WARNING: Node is using a weak or custom RIPEMD160 implementation!") print("Attacker: EXPLOITABLE: This could allow for hash collisions or other vulnerabilities.") else: print("Attacker: Node appears to be using a standard RIPEMD160 implementation.") # Example usage: if __name__ == "__main__": data = "Example Bitcoin transaction data" check_for_weak_api(data)



































  • L'importanza delle librerie crittografiche aggiornate e degli aggiornamenti regolari Conclusione: La necessità di migliorare la sicurezza in reti e dispositivi
  • Potenziali attacchi che utilizzano curve non valide Sostituzione della chiave pubblica: Vulnerabilità della funzione ecdsa_raw_sign
  • Raccomandazioni per l'eliminazione delle vulnerabilità e il miglioramento della protezione Ogni titolo riflette aspetti chiave dell'articolo e può essere utilizzato per strutturare la ricerca
  • PRNG debole nella generazione delle chiavi Bitcoin: Conseguenze dell'uso di una random_key non deterministica
  • Analisi della vulnerabilità CVE-2025-27840: Come i difetti architetturali possono minacciare miliardi di dispositivi Vulnerabilità della funzione has_invalid_privkey
  • Impatto delle vulnerabilità nei microcontrollori ESP32 sulla sicurezza dei dispositivi IoT
  • Metodi per sfruttare le vulnerabilità nei microcontrollori ESP32: Attacchi tramite Bluetooth e Wi-Fi
  • Vulnerabilità nascoste in ESP32 e loro impatto sulla sicurezza dei dispositivi IoT
  • Problemi di sicurezza nei dispositivi ESP32: Divulgazione della vulnerabilità CVE-2025-27840
  • Vulnerabilità architetturali ESP32: Rivelare i comandi nascosti e il loro impatto sulla sicurezza IoT
  • Vulnerabilità nel codice Bitcoin: Analisi tecnica e metodi di sfruttamento
  • Analisi delle vulnerabilità in Bitcoin: Dalle carenze crittografiche alle API obsolete
  • Vulnerabilità CVE-2025-27840 nei microcontrollori ESP32: Esporre miliardi di dispositivi IoT al rischio
  • Metodi di hashing non standard e loro vulnerabilità Problemi con la generazione delle chiavi: Vulnerabilità di random_key
  • Mancanza di verifica dei punti ECC come potenziale vulnerabilità nella funzione multiply di Bitcoin
  • Rischi del recupero della coordinata Y nella crittografia a curva ellittica API di hashing obsolete: Vulnerabilità della funzione bin_ripemd160
  • Vulnerabilità nella funzione ecdsa_raw_sign: Rischio di sostituzione della chiave pubblica durante il recupero della coordinata Y
  • Vulnerabilità nascoste: Una minaccia per le tecnologie moderne CVE-2025-27840: Panoramica delle vulnerabilità nell'architettura ESP32
  • Panoramica delle attuali minacce alla sicurezza Elenco nascosto di vulnerabilità: Rischi potenziali per ESP32 Implementazione di aggiornamenti falsi e accesso a basso livello
  • Problemi con la verifica delle chiavi private e loro conseguenze Falsificazione delle firme delle transazioni: Vulnerabilità di electrum_sig_hash
  • Vulnerabilità di falsificazione della firma delle transazioni Bitcoin a causa dell'hashing non standard in Electrum