Уважаемые участники сообщества Conflux и партнеры экосистемы,
Недавно команда экосистемы Conflux, GraFun, сообщила об уязвимости в Conflux EVM. После исследования и устранения проблемы Conflux успешно завершил обновление безопасности версии V2.5 17 марта 2025 года. Теперь мы раскрываем подробности этого инцидента безопасности и процесс его устранения следующим образом.
Предыстория инцидента
13 февраля 2025 года команда GraFun сообщила о критической уязвимости, связанной с поведением кода операции CREATE2 в сети Conflux:
В стандартной виртуальной машине Ethereum (EVM) код операции CREATE2 не может развернуть контракт, если целевой адрес уже имеет развернутый контракт, возвращая нулевой адрес. Однако предыдущая реализация Conflux позволяла CREATE2 повторно развернуть контракты по адресу с существующим контрактом, сбрасывая состояние контракта до его первоначального состояния развертывания.
Получив отчет, мы немедленно воспроизвели и обнаружили уязвимость в коде.
Оценка воздействия на безопасность
В течение недели после подтверждения уязвимости мы провели углубленный анализ воздействия на безопасность:
- Большинство контрактов, использующих CREATE2 (например, Swappi), реализовали дополнительные проверки конфликта адресов, что сделало их неуязвимыми для этой уязвимости.
- Однако Gnosis Safe не реализовал такие проверки и был затронут. Злоумышленник мог воспользоваться этой уязвимостью, чтобы сбросить состояние контракта Gnosis Safe до его первоначального состояния развертывания. Хотя это не позволяло напрямую вмешиваться в разрешения подписи, это позволяло воспроизводить ранее подписанные транзакции.
- Для дальнейшей оценки рисков безопасности контрактов Gnosis Safe на Conflux мы использовали метод eth_getLogs для сбора всех контрактов Gnosis Safe и записей их выполнения (примерно 30 контрактов) и вручную проанализировали их последствия для безопасности. Анализ показал, что большинство переводов средств Gnosis Safe включали только доверенные адреса, и только небольшое количество средств потенциально подвергалось риску.
Процесс реагирования на безопасность
Чтобы защитить активы пользователей, мы оперативно уведомили партнеров по экосистеме, затронутых инцидентом, и помогли им безопасно перевести потенциально подверженные риску активы. В то же время мы инициировали запланированный процесс обновления безопасности:
- Исправление уязвимости и интеграционное тестирование (21 февраля): завершены исправления кода и пройдено интеграционное тестирование.
- Внутреннее обновление тестовой сети (24 февраля): проверено исправление на внутренней тестовой сети разработчиков.
- Обновление публичной тестовой сети (объявлено 25 февраля, вступает в силу 3 марта): проведено полное тестирование и проверка безопасности на публичной тестовой сети.
- Развертывание обновления основной сети (объявлено 3 марта, вступает в силу 17 марта): завершено обновление безопасности основной сети Conflux, полностью устранив уязвимость.
Анализ
После решения проблемы мы провели тщательный анализ основных причин. Реализация Conflux EVM изначально была перенесена из проекта OpenEthereum, который имел плохое качество кода и включал два вводящих в заблуждение аспекта:
-
Функция создания новых контрактов (new_contract) содержала вводящий в заблуждение комментарий, который неверно предлагал разрешить повторное развертывание на адресах с существующими контрактами. Этот комментарий был написан до введения EIP-684 (который запрещает повторное развертывание адресов) и не обновлялся до тех пор, пока OpenEthereum не был объявлен устаревшим. Ссылка на код
-
OpenEthereum не определил четкий тип ошибки, такой как «ConflictAddress», для конфликтов адресов, вместо этого возвращая ошибку «OutOfGas». Это затрудняло разработчикам распознавание существующей логики, которая препятствовала повторному развертыванию. Ссылка на код
Введенная в заблуждение этими факторами, команда Conflux ошибочно полагала, что Ethereum допускает перераспределение адресов CREATE2. Это недоразумение было отражено в Приложении A желтой книги Conflux и другой документации, в которой Ethereum неверно описывался как не запрещающий перераспределение. Следовательно, при внедрении Conflux eSpace мы удалили критическую проверку, чтобы соответствовать предполагаемому поведению Ethereum.
В ходе этого процесса команда Conflux не смогла полностью распознать потенциальное влияние поведения EVM на безопасность, и мы несем неоспоримую ответственность за эту уязвимость.
Вознаграждение за ошибку
Учитывая критическую важность CREATE2 в EVM и потенциальную серьезность этой уязвимости, мы оценили ее как «критическую» и наградили команду GraFun базовой премией в размере 50 000 CFX. Кроме того, учитывая, что их своевременный отчет помог предотвратить потенциальные потери, мы выдали дополнительную награду в размере 10 000 CFX, доведя общую сумму до 60 000 CFX.
Последующие действия и улучшения безопасности
Поскольку Conflux развивает свою стратегию PayFi, финансовые приложения требуют более высокой безопасности и зрелости для инструментов экосистемы. Чтобы усилить безопасность инструментов экосистемы Conflux и использовать зрелые продукты Ethereum, мы планируем синхронизировать большинство функций Ethereum EVM во время следующего обновления хард-форка (см. CIP-645). Кроме того, мы интегрируем официальные тестовые случаи спецификации EVM Ethereum в Conflux, чтобы улучшить совместимость с экосистемой Ethereum и предотвратить подобные проблемы безопасности в будущем.
Мы искренне благодарим сообщество и партнеров экосистемы за их постоянную поддержку и внимание. Команда Conflux по-прежнему привержена прозрачности, быстрому реагированию и защите безопасности экосистемы и интересов пользователей.
Команда Conflux
24 марта 2025 г.
Ссылка на оригинал: Review of the Conflux Network V2.5 Security Upgrade
Присоединяйся к сообществу Conflux Russia
Чат Telegram | Официальные новости Telegram | Twitter | Reddit | Discord | Forum | Medium | Официальный сайт