Vyper — это язык программирования для Ethereum Virtual Machine. В версиях до 0.4.2rc1 включительно встроенная функция `slice()` может пропу…
Vyper — это язык программирования для Ethereum Virtual Machine. В версиях до 0.4.2rc1 включительно встроенная функция `slice()` может пропускать побочные эффекты, когда длина вывода равна 0, а исходная байтовая строка является встроенной (`msg.data` или `<address>.code`). Причина заключается в том, что для этих исходных местоположений проверка `length >= 1` пропускается. В результате байтовая строка длиной 0, созданная с помощью `slice`, может быть передана в `make_byte_array_copier`, который пропускает выполнение своего исходного аргумента, когда максимальная длина равна 0. Последствием является то, что побочные эффекты в аргументе `start` могут быть пропущены, когда аргумент `length` равен 0, например, `slice(msg.data, self.do_side_effect(), 0)`. Исправление в pull request 4645 запрещает любое использование `slice()` с длиной 0, включая для обсуждаемых в этом уведомлении ad hoc местоположений. Исправление ожидается в версии 0.4.2 [1]. Источники: - [1] https://github.com/vyperlang/vyper/security/advisories/GHSA-3vcg-j39x-cwfm - [2] https://github.com/vyperlang/vyper/pull/4645 - [3] https://github.com/vyperlang/vyper/blob/68b68c4b30c5ef2f312b4674676170b8a6eaa316/vyper/builtins/functions.py#L315-L319 - [4] https://github.com/vyperlang/vyper/blob/68b68c4b30c5ef2f312b4674676170b8a6eaa316/vyper/codegen/core.py#L189-L191
Код не обеспечивает достаточного контроля над потоком управления во время выполнения, создавая условия для его непредвиденного изменения.
https://cwe.mitre.org/data/definitions/691.html →Открыть в коллекции CWE →Данная атака нацелена на состояние гонки, возникающее между моментом проверки (состояния) ресурса и моментом его использования. Типичный пример — обращение к файлу. Злоумышленник может эксплуатировать состояние гонки при обращении к файлу, «участвуя в гонке»: изменяя ресурс между первым обращением целевой программы к файлу и фактическим его использованием. В этом промежутке злоумышленник может заменить или изменить файл, вызвав неожиданное поведение приложения.
https://capec.mitre.org/data/definitions/29.html →Открыть в коллекции CAPEC →