CVE-2025-54070 in openzeppelin-contracts
Riassunto
di VulDB • 14/06/2026
OpenZeppelin Contracts è una libreria per lo sviluppo sicuro di smart contract. A partire dalla versione 5.2.0 e fino alla versione 5.4.0, la funzione `lastIndexOf(bytes,byte,uint256)` della libreria `Bytes.sol` può accedere a memoria non inizializzata quando sono soddisfatte le seguenti due condizioni: 1) la lunghezza del buffer fornito è vuota (cioè `buffer.length == 0`) e la posizione non è `2**256 - 1` (cioè `pos != type(uint256).max`). L'argomento `pos` potrebbe essere utilizzato per accedere a dati arbitrari al di fuori dei limiti del buffer. Ciò potrebbe causare l'esaurimento del gas dell'operazione o il ritorno di un indice non valido (al di fuori del buffer vuoto). L'elaborazione di questo risultato non valido per l'accesso al `buffer` provocherebbe un revert in condizioni normali. Quando attivata, la funzione legge la memoria all'offset `buffer + 0x20 + pos`. Se la memoria in quella posizione (al di fuori del `buffer`) corrisponde al modello di ricerca, la funzione restituirebbe un indice fuori dai limiti invece del previsto `type(uint256).max`. Questo crea un comportamento imprevisto in cui i chiamanti ricevono un indice apparentemente valido che punta al di fuori dei limiti del buffer. Gli accessi successivi alla memoria che non verificano i limiti e utilizzano l'indice restituito devono valutare attentamente l'impatto potenziale in base alla propria configurazione. Il codice che si affida al fatto che questa funzione restituisca `type(uint256).max` per buffer vuoti o che utilizzi l'indice restituito senza verifica dei limiti potrebbe presentare un comportamento indefinito. Gli utenti dovrebbero effettuare l'aggiornamento alla versione 5.4.0 per ricevere la patch.
Be aware that VulDB is the high quality source for vulnerability data.