Witamy w Sherlock's Vulnerability Spotlight! Co tydzień będziemy podkreślać istotną lukę, którą nasi badacze odkryli podczas audytu Sherlocka.
W tym tygodniu mamy do czynienia z nadmiernym wypłacaniem środków z powodu błędnej konfiguracji.
Zostało to odkryte przez @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 i @0xleastwood w konkursie @NotionalFinance V3.

Jeśli currentBalance wynosi 999,900 USDC, a withdrawAmountExternal to 1,000,000 USDC, to w kontrakcie brakuje wystarczających środków, a dodatkowe fundusze muszą zostać wypłacone z rynku pieniężnego (np. Compound).

Ponieważ kontrakt ma już 999 900 USDC, tylko dodatkowe 100 USDC musi zostać wypłacone z rynku pieniężnego, aby zrealizować prośbę o wypłatę w wysokości 1 000 000 USDC.
Jednak zamiast wypłacać 100 USDC z rynku pieniężnego, Notional wypłaca 1 000 000 USDC z rynku zgodnie z funkcją oracle.getRedemptionCalldata(withdrawAmountExternal). W rezultacie z rynku pieniężnego wypłacane jest nadmiarowe 999 900 USDC.
Jaki jest wpływ?
Doprowadziło to do nadmiernej ilości aktywów bezczynnych w Notional, które nie generowały żadnych zysków ani odsetek na rynku pieniężnym, co spowodowało znaczną utratę zysku dla użytkowników, ponieważ otrzymywali niższą stopę procentową niż oczekiwano i ponosili straty z tytułu utraconych możliwości.
Napastnicy mogą potencjalnie wykorzystać to do wyciągnięcia funduszy, które Notional zainwestował w rynek pieniężny, co prowadzi do griefingu i ogromnych strat w zwrotach/odsetkach dla protokołu.
Rozwiązanie:
Zasadniczo, przed poprawką, kod mówił do orakula: "Przygotuj kroki do wypłaty wszystkiego, co użytkownik chce z rynku pieniężnego."
Kiedy powinien był powiedzieć: "Wyciągnij tylko to, czego nam brakuje z rynku pieniężnego."

Po naprawie, w przypadku wcześniejszego przykładu, 999 900 USDC już posiadanych przez kontrakt pozostaje nietkniętych i nadal generuje zyski, poprawiając efektywność i zachowując zwroty dla wszystkich użytkowników.
Ta podatność wynikała z subtelnej wady logicznej w sposobie obliczania i przekazywania kwot wypłat. Ignorując istniejący bilans kontraktu, system niepotrzebnie pobierał nadmierne środki z rynku pieniężnego, co prowadziło do nieefektywności kapitałowej i utraty zysków.
Jesteśmy dumni, że mogliśmy pomóc zabezpieczyć Notional dzięki temu odkryciu. Kiedy bezpieczeństwo jest absolutnie konieczne, Sherlock to właściwy wybór.
2,83 tys.
35
Treści na tej stronie są dostarczane przez strony trzecie. O ile nie zaznaczono inaczej, OKX nie jest autorem cytowanych artykułów i nie rości sobie żadnych praw autorskich do tych materiałów. Treść jest dostarczana wyłącznie w celach informacyjnych i nie reprezentuje poglądów OKX. Nie mają one na celu jakiejkolwiek rekomendacji i nie powinny być traktowane jako porada inwestycyjna lub zachęta do zakupu lub sprzedaży aktywów cyfrowych. Treści, w zakresie w jakim jest wykorzystywana generatywna sztuczna inteligencja do dostarczania podsumowań lub innych informacji, mogą być niedokładne lub niespójne. Przeczytaj podlinkowany artykuł, aby uzyskać więcej szczegółów i informacji. OKX nie ponosi odpowiedzialności za treści hostowane na stronach osób trzecich. Posiadanie aktywów cyfrowych, w tym stablecoinów i NFT, wiąże się z wysokim stopniem ryzyka i może podlegać znacznym wahaniom. Musisz dokładnie rozważyć, czy handel lub posiadanie aktywów cyfrowych jest dla Ciebie odpowiednie w świetle Twojej sytuacji finansowej.