CVE-2023-34459 in Contractsinformazioni

Riassunto

di VulDB • 28/06/2026

OpenZeppelin Contracts è una libreria per lo sviluppo di smart contract. A partire dalla versione 4.7.0 e fino alla versione 4.9.2, quando vengono utilizzate le funzioni `verifyMultiProof`, `verifyMultiProofCalldata`, `procesprocessMultiProof` o `processMultiProofCalldat`, è possibile costruire alberi merkle che consentono di falsificare una multiproof valida per un insieme arbitrario di foglie (leaves).

Un contratto potrebbe essere vulnerabile se utilizza multiproofs per la verifica e l'albero merkle elaborato include un nodo con valore 0 alla profondità 1 (subito sotto la radice). Ciò può accadere involontariamente in alberi bilanciati con 3 o meno foglie, se le foglie non vengono hashate. Può verificarsi deliberatamente se un costruttore di alberi malintenzionato inserisce tale nodo nell'albero.

Un contratto non è vulnerabile se utilizza prove a foglia singola (`verify`, `verifyCalldata`, `processProof` o `processProofCalldata`) oppure se utilizza multiproofs con un albero noto che ha foglie hashate. Gli standard merkle tree prodotti o validati tramite la libreria @openzeppelin/merkle-tree sono sicuri.

Il problema è stato risolto nella versione 4.9.2.

Sono disponibili alcune contromisure (workaround). Per chi utilizza multiproofs: quando si costruiscono alberi merkle, hashare le foglie ed evitare di inserire nodi vuoti negli alberi. L'utilizzo del pacchetto @openzeppelin/merkle-tree elimina questo problema. Non accettare root merkle forniti dall'utente senza ricostruire almeno il primo livello dell'albero. Verificare la struttura dell'albero merkle ricostituendolo a partire dalle foglie.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

GitHub, Inc.

Prenotare

06/06/2023

Divulgazione

17/06/2023

Moderazione

accettato

CPE

pronto

EPSS

0.00371

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!