Можно ли использовать отрицательный газ для выполнения атаки Reentrant с использованием .send ()?
Не проверял, но теоретически это может сработать. Это может сработать следующим образом:
Злоумышленник сначала записывает много данных в хранилище, поэтому есть данные, которые нужно удалить.
Используя контракт .send () в контракте, на который атакует злоумышленник, получает вызванную ему функцию резервного копирования и освобождает место с помощью delete (), поэтому он получает больше газа для работы, чем на самом деле должно быть возможным, если у него будет достаточно газа, чтобы выполнить Повторная атака.
Возможно ли это? А если нет, почему бы и нет?
1 ответ
Это невозможно, потому что отрицательный газ накапливается в отдельном счетчике возврата и предоставляется только в самом конце транзакции (максимум до половины используемого газа). См. Каковы пределы возврата денег?