Интерпретация отчета об аудите Polygon zkEVM ROM Spearbit (устранение ошибок в данных вызовов в августе 2023 г.)

1. Введение

Предыдущие блоги включают:

Смотрите основной контент:

Содержание аудита см.:

Этот раунд аудита длился 2 дня, всего было обнаружено 6 проблем, в том числе 1 уязвимость с низким уровнем риска и 5 информационных запросов.
Вставьте сюда описание изображения

В данном аудиторском отчете классификация рисков следующая:

уровень риска Влияние: Высокое Влияние: умеренное Влияние: низкое
Вероятность: Высокая смертельный высокий середина
Вероятность: умеренная высокий середина Низкий
Вероятность: низкая середина Низкий Низкий

в:

  • 1) Влияние:
    • Высокий: приведет к потере >10% >10\% протокола.>10% активов могут нанести существенный вред большинству пользователей.
    • Средний: потеря < 10 % <10\%<10% активов или потеря только части активов пользователя по-прежнему неприемлемы.
    • Низкий: потеря раздражает, но приемлема. Подходит для сетевых атак, которые можно легко устранить даже при недостаточном количестве газа.
  • 2) Вероятность:
    • Высокая: почти наверняка произойдет, легко или не просто, но с привлекательными стимулами.
    • Умеренный: Единственная реальная возможность или мотивация, но вероятность того, что произойдет, относительно велика.
    • Низкий: требует совпадения звезд или имеет низкую мотивацию.
  • 3) Уровень риска:
    • Фатально: (если развернуто) Необходимо исправить как можно скорее.
    • Высокий: (если не развернут), необходимо исправить перед развертыванием.
    • Средний: Должно быть исправлено.
    • Низкий: подлежит ремонту.

2. Уязвимости с низким уровнем риска

2.1 Уязвимость низкой степени серьезности 1: CREATE2 устанавливает txCalldataLen после сохранения указателя данных вызова.

Контекст см.:

Семейство опкодов CALL* и CREATE имеют общий шаблон:

  • Сначала установите для txCalldataLen параметр argsLengthCall.
  • Затем вызовите saveCalldataPointer.

Эти два действия в CREATE2 противоположны и не влияют на выходные данные помощника, но из соображений единообразия их следует сохранять в том же порядке, что и другие коды операций.
предположение:

  • Сначала установите txCalldataLen, а затем вызовите saveCalldataPointer.

Для исправления PR см.:

3. Информационные подсказки

3.1 Информационный совет 1. Постоянная путаница в именах

Контекст см.:

Имя константы %CALLDATA_CTX сбивает с толку, поскольку существует также переменная calldataCTX.
предположение:

  • Переименуйте константу %CALLDATA_CTX в %CALLDATA_RESERVED_CTX.

Для исправления PR см.:

3.2 Информационный совет 2:

Контекст см.:

В комментарии говорится, что выходная переменная помощника readFromCalldataOffset — это readFromCalldataOffset, но на самом деле это readXFromCalldataResult.

A :MSTORE(readXFromCalldataOffset), CALL(readFromCalldataOffset); in: [readXFromCalldataOffset: offset value, readXFromCalldataLength: length value], out: [readXFromCalldataOffset: result value]

предположение:

  • Измените вывод в комментарии на readXFromCalldataResult.

Для исправления PR см.:

3.3 Информационный совет 3. Нет необходимости сохранять регистр D в помощнике readFromCalldataOffset.

Контекст см.:

Регистр D не изменяется в помощнике readFromCalldataOffset, поэтому нет необходимости сохранять его предыдущее значение и восстанавливать его в конце.
предположение:

  • Удалена переменная tmpVarDReadXFromOffset и код сохранения и восстановления для регистра D.

Для исправления PR см.:

3.4 Информационный совет 4: Срок действия комментариев истек

Контекст см.:

Комментарии в кодах операций CALL и CREATE описывают контекст, который не соответствует фиксированной реализации.

; copy calldata from origin CTX to current CTX

предположение:

  • Перепишите эти аннотации, чтобы отразить реализацию нового метода.

Для исправления PR см.:

3.5 Информационный совет 5. Ненужные теги

Контекст см.:

Тег addBatchHashByteByByteEnd, добавленный этим PR, на самом деле не используется и не имеет никакого отношения к этому исправлению.

предположение:

  • Удалите эту метку.

Для исправления PR см.:

Приложение: Блог серии Polygon Hermez 2.0 zkEVM

Supongo que te gusta

Origin blog.csdn.net/mutourend/article/details/135337746
Recomendado
Clasificación