Besu — это Ethereum-клиент на основе Java. В версиях новее 22.1.3 и до 22.7.1 Besu подвержен некорректному преобразованию между числовыми т…
Besu — это Ethereum-клиент на основе Java. В версиях новее 22.1.3 и до 22.7.1 Besu подвержен некорректному преобразованию между числовыми типами. Ошибка в 32-битных знаковых и беззнаковых типах при вычислении доступного газа в операциях CALL (включая DELEGATECALL) приводит к тому, что в вызываемые контракты передается неверный газ и неверный газ возвращается после выполнения вызова. Если количество газа влияет на успех или неудачу, или если газ имеет отрицательное 64-битное значение, выполнение приведет к другому ожидаемому корневому состоянию, что приведет к сбою консенсуса в сетях с несколькими реализациями EVM. В сетях с одной реализацией EVM это можно использовать для выполнения со значительно большим количеством газа, чем запрошено в транзакции, возможно, превышая ограничения газа. Эта проблема исправлена в версии 22.7.1. В качестве обходного пути возврат к версии 22.1.3 или более ранней предотвратит некорректное выполнение.
Продукт использует беззнаковый примитив и выполняет приведение к знаковому примитиву, что может дать непредвиденное значение, если значение беззнакового примитива не может быть представлено знаковым примитивом.
https://cwe.mitre.org/data/definitions/196.html →Открыть в коллекции CWE →Данная атака приводит к выходу целочисленной переменной за допустимый диапазон значений. Целочисленная переменная нередко используется в качестве смещения, например при выделении памяти и т. п. Злоумышленник, как правило, контролирует значение такой переменной и стремится вывести его за допустимые границы. Например, если рассматриваемое целое число инкрементируется сверх максимально допустимого значения, оно может обернуться в очень маленькое или отрицательное число, что повлечёт некорректное поведение. В худшем случае злоумышленник может выполнить произвольный код.
https://capec.mitre.org/data/definitions/92.html →Открыть в коллекции CAPEC →