Välkommen tillbaka till Sherlocks Vulnerability Spotlight, där vi lyfter fram en effektfull sårbarhet som upptäcktes under en Sherlock-granskning. Den här veckan undersöker vi en överbelastningsattack som hittades i @GMX_IO-tävlingen av @0xdeadbeef____ och @IllIllI000. Tacka @int0x1catedCode för uppdelningen.
Sammanfattning av sårbarheten: Sårbarheten gör det möjligt för en angripare att manipulera orderexekveringsflödet genom att tillhandahålla falska återställningsorsakslängder som inte matchar faktiska data. Detta gör att protokollets felhantering läser felaktiga minnesregioner, vilket kan störa körningsprocessen eller orsaka oväntat beteende vid bearbetning av misslyckade order.
Attacksteg: 1. Installationsfas Distribuera ett skadligt kontrakt som implementerar anpassat återställningsbeteende Det skadliga kontraktet ska kunna anropas av målprotokollet (t.ex. som återanropshanterare). 2. Skapa skadliga återställningsdata Strukturera återställ data med en förfalskad längdparameter. 3. Utför order genom protokoll Skapa en order som utlöser interaktion med det skadliga kontraktet När protokollet bearbetar ordern och anropar det skadliga kontraktet återgår det med de skapade data. Protokollets felhantering försöker avkoda återställningsorsaken med hjälp av den falska längden. 4. Lässpill för utlösarminne Protokollet läser minne baserat på parametern för falsk längd Detta gör att den läser utanför de faktiska återställningsdatagränserna.
Vad är effekten? Denial of Service: Order kan misslyckas med att utföras korrekt, vilket blockerar legitima protokolloperationer som likvidation av dåliga positioner Avbrott i orderutförandet: Batchorderbearbetning kan stoppas, vilket påverkar flera användare Gasgriefing: Bearbetning av felaktiga återställningsdata kan förbruka för mycket gas
Grundorsaken: 1. Omarkerade längdparametrar: Protokollet litar på längdvärdet som anges i återställningsdata utan validering 2. Gränskontroller saknas: Ingen verifiering av att den påstådda längden matchar den faktiska datastorleken
Åtgärden: 1. Validera alltid Återställ datalängd 2. Implementera gränser för maximal längd
Vi är stolta över att ha hjälpt till att säkra @GMX_IO genom denna upptäckt. När det absolut måste vara säkert är Sherlock det rätta valet.
2,32K