Протокол децентрализованных финансов (DeFi) Onyx потерял $3,8 млн в ходе эксплоита 26 сентября, согласно отчету платформы безопасности блокчейна PeckShield.
Эксплоит использовал известную ошибку в кодовой базе Compound Finance v2 — ту, которая уже использовалась для эксплоита Onyx ранее 1 ноября. Уязвимость в контракте ликвидации невзаимозаменяемых токенов (NFT) также способствовала использованию эксплоита, говорится в отчете.
В сообщении X от 27 сентября команда Onyx заявила, что неисправный контракт NFT был основной причиной эксплоита.
Согласно отчету PeckShield, из протокола были выведены 4,1 млн Virtual USD (VUSD), 7,35 млн Onyxcoin (XCN), 0,23 Wrapped Bitcoin (WBTC), стейблкоин Dai (DAI) на сумму 5000 долларов США и стейблкоин Tether (USDT) на сумму 50 000 долларов США, что в общей сложности составило более 3,8 млн долларов США.
Источник: PeckShield.
Известная уязвимость существует в Compound Finance v2, которая представляет собой кодовую базу, часто разветвляемую и используемую протоколами децентрализованных финансов. Она привела к эксплоиту против Hundred Finance (HND) в апреле 2023 года. В октябре 2023 года уязвимость была впервые использована против Onyx.
Уязвимость можно использовать только при наличии «пустого рынка» или рынка без ликвидности, что обычно происходит только при запуске нового рынка.
Команда Onyx признала наличие эксплоита в сообщении на X.
«Onyx Protocol подвергся инциденту безопасности, когда злоумышленник использовал протокол для вывода VUSD из протокола», — заявили в нем.
Однако разработчики заявили, что известная уязвимость не была его основной причиной.
«Основной проблемой был не пустой рынок, а контракт NFTLiquidation», — заявили в ветке.
Peck Shield согласился, что контракт NFT был «еще одной проблемой, которая облегчает взлом». Неисправный контракт позволил злоумышленнику «завысить сумму вознаграждения за самоликвидацию», поскольку он «не проверял должным образом (недоверенный) ввод пользователя».
Уязвимость контракта Onyx NFT. Источник: PeckShield
Эксплоиты DeFi являются распространенным источником потерь для пользователей Web3. 27 сентября протокол ликвидного стейкинга Bedrock потерял более 2 миллионов долларов из-за уязвимости в своем контракте uniBTC. 23 сентября Bankroll Network потеряла 230 000 долларов, когда злоумышленник совершил несколько самостоятельных переводов, используя неисправную функцию «buyFor» для увеличения прибыли.