Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. In versions 0.3.10 and prior, using the slice
builtin can result in a double eval vulnerability when the buffer argument is either msg.data
, self.code
or <address>.code
and either the start
or length
arguments have side-effects. It can be easily triggered only with the versions <0.3.4
as 0.3.4
introduced the unique symbol fence. No vulnerable production contracts were found. Additionally, double evaluation of side-effects should be easily discoverable in client tests. As such, the impact is low. As of time of publication, no fixed versions are available.