На днях был обнаружен контракт цифрового коллекционного проекта, который вызывает большое внимание, имеющий два серьезных уязвимости. Команда безопасности при проверке этого контракта обнаружила, что эти уязвимости могут привести к блокировке активов пользователей и невозможности команды проекта вывести средства более чем на 34 миллиона долларов.
Первый уязвимость касается функции возврата средств. Процедура возврата в контракте использует циклический метод для возврата средств всем пользователям. Однако, если адрес какого-либо пользователя является злонамеренным контрактом, он может отказать в получении возврата и привести к неудаче транзакции, что в свою очередь повлияет на операции возврата всех пользователей. К счастью, эта уязвимость не была фактически использована.
!
Чтобы избежать подобных проблем, рекомендуется, чтобы команда проекта учла следующие моменты при разработке механизма возврата средств:
Ограничение: только обычные пользовательские аккаунты могут участвовать в проекте.
Используйте такие ERC20 токены, как WETH, вместо нативных активов
Проект должен предусматривать возможность самостоятельного запроса возврата пользователями, а не пакетную обработку.
Второй уязвимость вызвана логической ошибкой в коде. В функции извлечения средств проекта имеется условное выражение, которое должно сравнивать две определенные переменные, но по ошибке использовалась другая переменная для сравнения. Это привело к тому, что условие никогда не могло быть выполнено, и команда проекта не смогла извлечь средства из контракта. В настоящее время около 34 миллионов долларов активов навсегда заблокированы в контракте.
!
Это событие вновь подчеркивает, что даже известные проекты могут допускать грубые ошибки. Команда проекта должна создавать достаточное количество тестовых случаев в процессе разработки проекта и развивать базовое понимание безопасности. Хотя в области децентрализованных финансов безопасность аудита стала обычной практикой, в проектах цифровых коллекционных предметов этот аспект часто игнорируется, что в конечном итоге приводит к огромным потерям.
Это событие напоминает нам о том, что в разработке блокчейн-проектов, независимо от масштаба проекта, следует уделять внимание работе по аудиту безопасности, чтобы предотвратить возможные уязвимости, которые могут привести к серьезным последствиям. В то же время это подчеркивает важность деталей в разработке смарт-контрактов: даже небольшая ошибка в коде может привести к потерям в миллионы долларов.
!
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
14 Лайков
Награда
14
5
Поделиться
комментарий
0/400
FlashLoanLord
· 07-16 09:13
Не знающий не боится.
Посмотреть ОригиналОтветить0
GateUser-9ad11037
· 07-15 18:54
Действительно, большой проект тоже может провалиться!
В проекте цифровых коллекционных предметов обнаружена серьезная уязвимость контракта, 34 миллиона долларов США были навсегда заблокированы.
На днях был обнаружен контракт цифрового коллекционного проекта, который вызывает большое внимание, имеющий два серьезных уязвимости. Команда безопасности при проверке этого контракта обнаружила, что эти уязвимости могут привести к блокировке активов пользователей и невозможности команды проекта вывести средства более чем на 34 миллиона долларов.
Первый уязвимость касается функции возврата средств. Процедура возврата в контракте использует циклический метод для возврата средств всем пользователям. Однако, если адрес какого-либо пользователя является злонамеренным контрактом, он может отказать в получении возврата и привести к неудаче транзакции, что в свою очередь повлияет на операции возврата всех пользователей. К счастью, эта уязвимость не была фактически использована.
!
Чтобы избежать подобных проблем, рекомендуется, чтобы команда проекта учла следующие моменты при разработке механизма возврата средств:
Второй уязвимость вызвана логической ошибкой в коде. В функции извлечения средств проекта имеется условное выражение, которое должно сравнивать две определенные переменные, но по ошибке использовалась другая переменная для сравнения. Это привело к тому, что условие никогда не могло быть выполнено, и команда проекта не смогла извлечь средства из контракта. В настоящее время около 34 миллионов долларов активов навсегда заблокированы в контракте.
!
Это событие вновь подчеркивает, что даже известные проекты могут допускать грубые ошибки. Команда проекта должна создавать достаточное количество тестовых случаев в процессе разработки проекта и развивать базовое понимание безопасности. Хотя в области децентрализованных финансов безопасность аудита стала обычной практикой, в проектах цифровых коллекционных предметов этот аспект часто игнорируется, что в конечном итоге приводит к огромным потерям.
Это событие напоминает нам о том, что в разработке блокчейн-проектов, независимо от масштаба проекта, следует уделять внимание работе по аудиту безопасности, чтобы предотвратить возможные уязвимости, которые могут привести к серьезным последствиям. В то же время это подчеркивает важность деталей в разработке смарт-контрактов: даже небольшая ошибка в коде может привести к потерям в миллионы долларов.
!