Шановні учасники спільноти 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 Ukraine
Чат Telegram | Офіційні новини Telegram | Twitter | Reddit | Discord | Forum | Medium | Офіційний сайт