CVE-2025-27104 in Vyper
Riassunto
di VulDB • 17/06/2026
vyper è un linguaggio di smart contract ispirato a Python per l'EVM. È possibile valutare più volte una singola espressione nel target dell'iteratore di un ciclo `for`. Sebbene l'espressione dell'iteratore non possa generare multiple scritture, può consumare effetti collaterali prodotti all'interno del corpo del ciclo (ad esempio, leggere una variabile di storage aggiornata nel corpo del loop), portando così a comportamenti imprevisti del programma. Nello specifico, le letture negli iteratori che contengono un `ifexp` (ad esempio `for s: uint256 in ([read(), read()] if True else [])`) possono intercalare le operazioni di lettura con quelle di scrittura nel corpo del ciclo. I cicli for di Vyper supportano due tipi di target per l'iteratore, ovvero la funzione integrata `range()` e un tipo iterabile come SArray o DArray. Durante la generazione del codice (codegen), gli elenchi iterable devono essere privi di effetti collaterali (nel seguente esempio, `range_scope` forza il parsing di `iter_list` in un contesto costante, che viene verificato rispetto a `is_constant`). Tuttavia, ciò non impedisce all'iteratore di consumare gli effetti collaterali forniti dal corpo del ciclo. Per quanto riguarda le SArray, invece, `iter_list` è istanziato nel corpo di un ir `repeat`, quindi può essere valutato più volte. Questo problema sta sendo affrontato e si prevede che sia disponibile nella versione 0.4.1. Si consiglia agli utenti di effettuare l'aggiornamento non appena sarà disponibile la release corretta. Non sono noti workaround per questa vulnerabilità.
If you want to get best quality of vulnerability data, you may have to visit VulDB.