anchore_overrides,nvd
Matter-labs
Уязвимости
6
Эксплуатируемые
0
Критический
1
Высокий
0
Топ уязвимостей
CVE-2024-43366zkvyper - это компилятор Vyper. Начиная с версии 1.3.12 и до версии 1.5.3, поскольку LLL IR не имеет ограничений по Тьюринг-полноте, он компилируется в цикл с гораздо более поздним условием выхода. Это приводит к потере средств или другому нежелательному поведению, если тело цикла его содержит. Однако более реальные примеры использования, такие как итерация по массиву, не затрагиваются. Эта проблема не затронула ни один контракт и была исправлена в версии 1.5.3. Обновление и повторное развертывание затронутых контрактов - единственный способ избежать уязвимости.
CVE-2024-38533ZKsync Era — это накопительный пакет уровня 2, который использует доказательства с нулевым разглашением для масштабирования Ethereum. Возможен недопустимый доступ к стеку из-за того, что адреса, используемые для доступа к стеку, неправильно преобразуются в ячейки. Эта проблема была исправлена в версии 1.5.0.
CVE-2024-45056zksolc — это компилятор Solidity для ZKsync. Все версии LLVM с 2015 года сворачивают `(xor (shl 1, x), -1)` в `(rotl ~1, x)`, если запуск выполняется с включенной оптимизацией. Здесь `~1` генерируется как 64-битное число без знака (`2^64-1`). Это число расширяется до 256 бит на целевом объекте EraVM, в то время как оно должно было быть расширено знаком. Таким образом, вместо создания `roti 2^256 - 1, x` компилятор создает `rotl 2^64 - 1, x`. Анализ показал, что ни один контракт не был затронут на дату публикации этого предупреждения. Эта проблема была решена в версии 1.5.3. Пользователям рекомендуется обновиться и повторно развернуть все контракты. Известных обходных путей для этой уязвимости нет.
CVE-2024-34704era-compiler-solidity — это компилятор ZKsync для Solidity. Проблема возникла во время выбора инструкций на этапе `DAGCombine` при посещении операции XOR. Проблема возникает при попытке свернуть выражение `!(x cc y)` в `(x !cc y)`. Чтобы выполнить это преобразование, второй операнд XOR должен быть константой, представляющей истинное значение. Однако было ошибочно предположено, что -1 представляет истинное значение, когда на самом деле 1 является правильным представлением, поэтому это преобразование для этого случая следует пропустить. Эта уязвимость исправлена в версии 1.4.1.
CVE-2024-35229ZKsync Era — это свернутый слой 2, который использует доказательства с нулевым разглашением для масштабирования Ethereum. До версии 1.3.10 существует очень специфичный шаблон `f(a(),b()); check_if_a_executed_last()` в Yul, который выявляет ошибку в порядке вычисления аргументов функции Yul. Эта уязвимость была исправлена в версии 1.3.10. В качестве обходного пути обновите и повторно разверните затронутые контракты.
CVE-2023-46232era-compiler-vyper — это компилятор EraVM Vyper для zkSync Era, роллапа уровня 2, использующего доказательства с нулевым разглашением для масштабирования Ethereum. До версии era-compiler-vype 1.3.10 ошибка препятствовала инициализации первой неизменяемой переменной для контрактов Vyper, отвечающих определенным критериям. Проблема возникает, когда есть String или Array с большим количеством 256-битных слов, выделенных, чем инициализированных. Это приводит к тому, что индекс второго слова не установлен, то есть фактически установлен в 0, поэтому первое неизменяемое значение с фактическим индексом 0 перезаписывается в ImmutableSimulator. Версия 1.3.10 исправляет эту проблему, заранее устанавливая все индексы. Проблема исчезнет, но это станет дороже, если пользователь выделит много неинициализированного места, например, `String[4096]`. Обновление и повторное развертывание затронутых контрактов — единственный способ решения этой проблемы.