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.