Vyper — это язык смарт-контрактов Python для виртуальной машины Ethereum. До версии 0.3.8 из-за отсутствия проверки переполнения для переме…
Vyper — это язык смарт-контрактов Python для виртуальной машины Ethereum. До версии 0.3.8 из-за отсутствия проверки переполнения для переменных цикла, присваивая итератор цикла переменной, можно переполнить тип последней. Похоже, проблема возникает только в циклах типа `for i in range(a, a + N)`, поскольку в циклах типа `for i in range(start, stop)` и `for i in range(stop)` компилятор может вызвать `TypeMismatch` при попытке переполнить переменную. Проблема была исправлена в версии 0.3.8.
Продукт выполняет вычисление, которое может привести к переполнению или обратному переходу целого числа, когда логика предполагает, что результирующее значение всегда будет больше исходного. Это происходит, когда целочисленное значение увеличивается до величины, превышающей допустимый предел для используемого представления. В этом случае значение может стать очень маленьким или отрицательным.
https://cwe.mitre.org/data/definitions/190.html →Открыть в коллекции CWE →Данная атака приводит к выходу целочисленной переменной за допустимый диапазон значений. Целочисленная переменная нередко используется в качестве смещения, например при выделении памяти и т. п. Злоумышленник, как правило, контролирует значение такой переменной и стремится вывести его за допустимые границы. Например, если рассматриваемое целое число инкрементируется сверх максимально допустимого значения, оно может обернуться в очень маленькое или отрицательное число, что повлечёт некорректное поведение. В худшем случае злоумышленник может выполнить произвольный код.
https://capec.mitre.org/data/definitions/92.html →Открыть в коллекции CAPEC →