Protokół zdecentralizowanych finansów (DeFi) Onyx został wykorzystany na kwotę 3,8 mln USD 26 września, zgodnie z raportem platformy bezpieczeństwa blockchain Peck Shield. Exploit wykorzystywał znany błąd w bazie kodu Compound Finance v2, a błąd ten został już wcześniej wykorzystany do wykorzystania Onyx 1 listopada. W raporcie stwierdzono również, że do exploita przyczyniła się luka w kontrakcie likwidacyjnym NFT.
W poście z 27 września zespół Onyx stwierdził, że przyczyną ataku był wadliwy kontrakt NFT.
Według raportu Peck Shield, z protokołu usunięto 4,1 miliona wirtualnych USD (VUSD), 7,35 miliona Onyxcoinów (XCN), 0,23 Wrapped Bitcoinów (WBTC), stablecoinów Dai (DAI) o wartości 5000 USD oraz stablecoinów Tether (USDT) o wartości 50 000 USD, co dało łączną kwotę ponad 3,8 miliona USD strat.
Źródło: Peck Shield.
Znana luka występuje w wersji 2 Compound Finance, która jest bazą kodu często rozwidlaną i używaną przez zdecentralizowane protokoły finansowe. Doprowadziła do ataku na Hundred Finance w kwietniu 2023 r. W listopadzie luka została po raz pierwszy wykorzystana przeciwko Onyx.
Tę lukę można wykorzystać jedynie wtedy, gdy istnieje „pusty rynek” lub rynek bez płynności, co zazwyczaj zdarza się jedynie w przypadku uruchomienia nowego rynku.
Zespół Onyx przyznał się do exploita w poście X. „Protokół Onyx był przedmiotem incydentu bezpieczeństwa, w którym nikczemny aktor wykorzystał protokół, aby opróżnić VUSD z protokołu” — stwierdził. Jednak twierdził, że znana wada nie była jego główną przyczyną. „Głównym problemem nie był pusty rynek, ale kontrakt NFTLiquidation” — stwierdził w wątku.
Peck Shield zgodził się, że kontrakt NFT był „[j]ednym z problemów, które ułatwiają włamanie”. Wadliwy kontrakt pozwolił atakującemu „zawyżyć kwotę nagrody za samolikwidację”, ponieważ nie „prawidłowo weryfikował (niezaufanych) danych wejściowych użytkownika”.
Podatność kontraktu Onyx NFT. Źródło: Peck Shield.
Exploity DeFi są częstym źródłem strat dla użytkowników Web3. 27 września protokół stakingu płynnego Bedrock stracił ponad 2 miliony dolarów z powodu luki w zabezpieczeniach swojego kontraktu uniBTC. 23 września Bankroll Network stracił 230 000 dolarów, gdy atakujący wykonał wiele samodzielnych przelewów, wykorzystując błędną funkcję „buyFor”, aby zawyżać swoje zyski.