Popularne tematy
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
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,84K
Najlepsze
Ranking
Ulubione