Мы обнаружили две серьезные логические уязвимости в смарт-контрактах @AkuDreams. Первая уязвимость может привести к DoS-атаке, а вторая — к тому, что средства проекта (более 34 млн долларов США) окажутся заблокированы навсегда.
Уязвимость I

Первая уязвимость присутствует в функции processRefunds. Эта функция содержит цикл, который должен возвращать средства каждому пользователю, сделавшему ставку. Однако участник торгов может быть вредоносным контрактом, который вызывает отмену транзакции (revert). Это приведет к тому, что вызов processRefunds будет отклонен, и ни один из пользователей не сможет получить возврат средств. К счастью, эта уязвимость не была использована злоумышленниками.
Мы предлагаем использовать следующие меры для возврата средств пользователям:
- Убедиться, что ставки могут делать только EOA (внешние аккаунты).
- Использовать ERC20-токены, например WETH, вместо ETH.
- Добавить функцию, позволяющую пользователю самостоятельно запрашивать возврат средств.
Уязвимость II

Вторая уязвимость является программной ошибкой. В функции claimProjectFunds владелец проекта может забрать эфир, находящийся на контракте. Однако инструкция require(refundProgress >= totalBids, "Refunds not yet processed"); содержит ошибку: в ней следовало сравнивать refundProgress с _bidIndex, а не с totalBids. Из-за этой уязвимости условие никогда не будет выполнено, и эфир (11 539,5 ETH), хранящийся на контракте, может быть заблокирован навсегда.
Резюме
Мы вновь удивлены (после вчерашнего случая с NBA NFT), как столь заметный проект может пренебрегать базовыми правилами безопасности программного обеспечения. Как минимум, проект должен был написать достаточное количество тест-кейсов. К сожалению, мы подозреваем, что проекты бывают слишком заняты, чтобы писать тесты, и в итоге теряют 34 млн долларов США навсегда.
О компании BlockSec
BlockSec — передовая компания в сфере безопасности блокчейнов, основанная в 2021 году группой всемирно признанных экспертов по безопасности. Компания стремится повысить уровень безопасности и удобства использования развивающегося мира Web3, чтобы способствовать его массовому внедрению. С этой целью BlockSec предоставляет услуги по аудиту смарт-контрактов и EVM-сетей, платформу Phalcon для безопасности разработки и проактивного блокирования угроз, платформу MetaSleuth для отслеживания средств и расследований, а также расширение MetaDock для эффективной работы разработчиков Web3 в криптомире.
На сегодняшний день компания обслужила более 300 уважаемых клиентов, таких как MetaMask, Uniswap Foundation, Compound, Forta и PancakeSwap, и получила десятки миллионов долларов США в ходе двух раундов финансирования от выдающихся инвесторов, включая Matrix Partners, Vitalbridge Capital и Fenbushi Capital.
Официальный сайт: https://blocksec.com/
Официальный аккаунт в Twitter: https://twitter.com/BlockSecTeam



