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 z powrotem w Sherlock’s Vulnerability Spotlight, gdzie podkreślamy istotną lukę wykrytą podczas audytu Sherlocka.
W tym tygodniu przyglądamy się atakowi typu denial-of-service, który został znaleziony w konkursie @GMX_IO przez @0xdeadbeef____ i @IllIllI000.
Podziękowania dla @int0x1catedCode za analizę.

Podsumowanie podatności:
Podatność pozwala atakującemu na manipulowanie przepływem wykonania zamówień poprzez podawanie fałszywych długości powodów wycofania, które nie odpowiadają rzeczywistym danym. Powoduje to, że obsługa błędów protokołu odczytuje nieprawidłowe obszary pamięci, co może zakłócać proces wykonania lub powodować nieoczekiwane zachowanie podczas przetwarzania nieudanych zamówień.
Kroki ataku:
1. Faza konfiguracji
Wdróż złośliwy kontrakt, który implementuje niestandardowe zachowanie przywracania.
Złośliwy kontrakt powinien być wywoływalny przez docelowy protokół (np. jako handler zwrotny).
2. Przygotuj złośliwe dane przywracania
Struktura danych przywracania z fałszywym parametrem długości.
3. Wykonaj zamówienie przez protokół
Utwórz zamówienie, które wywoła interakcję z złośliwym kontraktem.
Gdy protokół przetwarza zamówienie i wywołuje złośliwy kontrakt, przywraca z przygotowanymi danymi.
Obsługa błędów protokołu próbuje zdekodować powód przywracania, używając fałszywej długości.
4. Wywołaj przepełnienie odczytu pamięci
Protokół odczytuje pamięć na podstawie fałszywego parametru długości.
To powoduje, że odczytuje poza rzeczywiste granice danych przywracania.
Jaki jest wpływ?
Odmowa usługi: Zamówienia mogą nie być prawidłowo realizowane, blokując legalne operacje protokołu, takie jak likwidacja złych pozycji.
Zakłócenie realizacji zamówień: Przetwarzanie zamówień zbiorczych może zostać wstrzymane, co wpływa na wielu użytkowników.
Gas griefing: Przetwarzanie źle sformatowanych danych zwrotu może zużywać nadmierną ilość gazu.
Przyczyna główna:
1. Niezweryfikowane parametry długości: Protokół ufa wartości długości podanej w danych zwrotu bez walidacji
2. Brak kontroli granic: Brak weryfikacji, czy zadeklarowana długość odpowiada rzeczywistej wielkości danych
Łagodzenie:
1. Zawsze weryfikuj długość danych do przywrócenia
2. Wprowadź maksymalne limity długości
Jesteśmy dumni, że mogliśmy pomóc zabezpieczyć @GMX_IO dzięki temu odkryciu.
Kiedy bezpieczeństwo jest absolutnie konieczne, Sherlock to właściwy wybór.
2,32K
Najlepsze
Ranking
Ulubione