Race Condition -sårbarheter i webapplikasjoner

Race Condition -sårbarheter i webapplikasjoner
Når en webapplikasjon konfigurert til å administrere funksjoner i en fast sekvens er nødvendig for å utføre to eller flere operasjoner samtidig, oppstår et løpsbetingelsesangrep. Denne teknikken utnytter en tidsforsinkelse mellom når en tjeneste blir introdusert og når en sikkerhetskontroll oppstår. Dette angrepet kan utføres en av de to måtene, basert på multithreaded -applikasjoner: inntrenging pådratt seg av upålitte prosesser og inntrenging pådratt seg av en pålitelig prosess som kan ha samme og like rettigheter.

Ulike prosesser kan samhandle med hverandre uten tilstrekkelige tiltak. Disse angrepene er også kjent som tid for sjekkangrep, angrepstidspunkt eller TOC/TOU -angrep. Sårbarheter i rasetilstanden er tilfeldigvis der i utgangspunktet på grunn av grunnleggende programmeringsfeil som utviklere vanligvis oppretter, og disse feilene har vist seg å være kostbare. Ondsinnede enheter har utnyttet raseforhold for mange ondsinnede formål, jeg.e., Fra å få gratis bilag til å plyndre penger fra online kontoer og investeringsfirmaer.

La oss anta at to parallelle utførelsestråder prøver å heve en global variabels verdi med 5. Til syvende og sist ville den globale variabelen ha en verdi på 10. Imidlertid, hvis alle trådene kjøres samtidig, kan utførelsen være feil uten ressurslåser eller synkronisering. Når den første tråden gjør noen manipulasjoner til den globale variabelen, leser den andre tråden den og begynner å gjøre noen andre manipulasjoner. I dette tilfellet ville ikke den endelige verdien være som forventet.

Dette skjer siden effekten av en trådavslutning avhenger av utfallet av den andre. Når de to trådene utføres samtidig, vil det få utilsiktede konsekvenser.

Omfang av race tilstandsangrep:

Se for deg at noe som er litt mer kritisk utføres av de to trådene i eksemplet ovenfor, som å utveksle penger mellom bankkontoer. For å sende pengene riktig, må programmet utføre disse oppgavene i denne sekvensen; Sjekk om det er nok saldo på avsenderens konto, legg penger til mottakerens konto, og trekk deretter fra avsenderens konto. Men hvis du samtidig sender inn to forespørsler, kan det hende du kan utløse en tilstand der sekvensen av trådutførelsesendringer endres. I en situasjon som dette vil du ende opp med et annet beløp enn forventet.

Race Condition Sårbarhet ble funnet av Egor Homakov på nettstedet Starbucks. Han oppdaget en måte å skape en uendelig mengde kreditt på Starbucks gavekort gratis ved hjelp av forskjellige nettlesere med forskjellige informasjonskapsler.

Det fremtredende meltdown -angrepet er et eksempel på sårbarhet for rasetilstand. I meltdown -angrepet utløses svakheten ved parallell behandling av datainnhenting fra minnet og autentiseringen av om en bruker har lov til å få tilgang til minnet eller ikke. Denne feilen gjør det mulig for et verktøy å unngå standard privilegiumkontroller som skiller angrepsmekanismen fra å få tilgang til OS -data. Dette smutthullet resulterer i å tillate enhver uautorisert prosess å se data og informasjon fra enhver annen adresse koblet til den nåværende fremdriftens tilstand i minnet. I prosessen med feil utførelse vil informasjon fra en ikke godkjent adresse ofte raskt stables inn i hurtigbufferen til CPU, hvorfra informasjonen kan gjenopprettes.

Det virkelige angrepsscenarier:

Ved å sende inn mange forespørsler til webserveren kontinuerlig, kan du søke og manipulere løpsbetingelser i webapplikasjoner. Hvis du vil se om du kan ta ut mer penger enn du har på bankkontoen din, ved å bruke krøllfunksjonen, kan du samtidig sende flere tilbaketrekningsforespørsler til serveren.

Curl (trekke 50000) & (trekke 50000) & (trekke 50000) & (trekke 50000) & (trekke 50000) & (trekke 50000)

Jo mer krav du arkiverer på en kort tid, jo høyere er sjansene for at angrepet ditt vil fungere.

Dessuten, hvis du sender asynkrone oppfølgingsforespørsler, vil du følge en bruker flere ganger i stedet for å sende et feilrespons. Jeg.e., Hvis du legger til en falsk topptekst som inneholder %S mens du slipper forespørsler ved hjelp av Turbo -inntrenger og lim inn følgende Python -kode:

Def Followreqs (Target, Wordlists):
Motor = RequestEngine (endepunkt = mål.endepunkt,
Samtidig sammenkoblinger = 40,
RequestsPerConnection = 100,
rørledning = falsk
)
for jeg i rekkevidde (40):
motor.Kø (mål.req, str (i), gate = 'sjekk')
motor.OpenGate ('sjekk')
motor.Komplett (timeout = 60)
Def ResponseHandle (Req, interessant):
bord.Legg til (req)

Du vil se en angrepsknapp. Etter å ha trykket på det, sender Turbo -inntrengeren 40 spørsmål og skanner statuskodene. Hvis du ser flere svar med 201 generert status, indikerer det flere ganger du har fulgt personen.

Det er en sårbarhet for løpstilstand der du kan få tilgang til flere konsoller som tilbys til gratis kontoer. De fleste nettsteder som gir gratis konsoller har gratis kontoer, standard- og premium -pakker. Gratis kontoer gir bare 2 eller 3 konsoller per bruker. For å bryte denne grensen og bruke ubegrensede konsoller, inntrer Get -forespørselen ved å bruke null nyttelast flere ganger, som 100 eller 200. Og slett deretter en av konsollene manuelt fra brukergrensesnittet mens tråder kjører.

Konklusjon:

Som et middel til å undergrave tilgangskontroller, er rase forhold inkludert. Ethvert program som er avhengig av mekanismer for tilgangskontroll, kan være sårbar. Det meste av tiden, på finansinstitusjoners nettsteder, utnytter hackere raseforhold. Siden det kan føre til ubegrensede økonomiske fordeler for hackeren hvis en løpsbetingelse kan oppdages på en viktig funksjon som kontantuttak, pengeoverføring eller kredittkortbetaling. E-handelsplattformer, videospill og online stemmegjenester er andre høyrisikoteknologier. Å implementere sikker samtidighet er hemmeligheten bak å unngå racingforhold. Og du kan også bruke ressurslåser. Det vil også være en låsefunksjon innebygd for programmeringsspråk med samtidighetsevner som hjelper til med å forhindre slike forhold. I tillegg, etter sikre kodingsstandarder, i.e., Minst privilegium konsept og revisjonskode vil redusere programmets sjanse for brudd.