Webbprogrammering

Sårbarheter i rasförhållanden i webbapplikationer

Sårbarheter i rasförhållanden i webbapplikationer
När en webbapplikation konfigurerad för att hantera funktioner i en fast sekvens krävs för att utföra två eller flera operationer samtidigt, inträffar en race-tillståndsattack. Denna teknik utnyttjar en tidsfördröjning mellan när en tjänst införs och när en säkerhetskontroll inträffar. Denna attack kan utföras på något av de två sätten, baserat på flertrådade applikationer: intrång som orsakas av opålitliga processer och intrång i en pålitlig process som kan ha samma och lika rättigheter.

Olika processer kan interagera med varandra utan adekvata åtgärder. Dessa attacker kallas också Time of Check attack, Time of Use attack eller TOC / TOU attacker. Sårbarheter i rasförhållanden råkar vara där i första hand på grund av grundläggande programmeringsfel som utvecklare brukar skapa, och dessa misslyckanden har visat sig vara dyra. Skadliga enheter har utnyttjat rasförhållandena för många skadliga ändamål, dvs.e., från att få gratis kuponger för att råna pengar från onlinekonton och värdepappersföretag.

Låt oss anta att två parallella exekveringstrådar försöker höja en global variabel med 5. I slutändan skulle den globala variabeln ha ett värde på 10. Men om alla trådar körs samtidigt kan körningen vara fel utan resurslås eller synkronisering. När den första tråden gör vissa manipuleringar av den globala variabeln, läser den andra tråden den och börjar göra några andra manipulationer. I det här fallet skulle det slutliga värdet inte vara som förväntat.

Detta inträffar eftersom effekten av en trådavslutning beror på resultatet av den andra. När de två trådarna körs samtidigt kommer det att få oavsiktliga konsekvenser.

Omfattning av angrepp på rasförhållanden:

Tänk dig att något lite mer kritiskt utförs av de två trådarna i exemplet ovan, som att växla pengar mellan bankkonton. För att skicka pengarna korrekt måste programmet utföra dessa uppgifter i den här sekvensen; Kontrollera om det finns tillräckligt med saldo på avsändarens konto, lägg till pengar på mottagarens konto och dra sedan från avsändarens konto. Men om du samtidigt skickar två begäranden kan du kanske utlösa ett tillstånd där sekvensen för trådkörning ändras. I en sådan situation kommer du att få ett annat belopp än väntat.

Sårbarhet i rasförhållanden hittades av Egor Homakov på Starbucks webbplats. Han upptäckte ett sätt att skapa en oändlig mängd kredit på Starbucks presentkort gratis med olika webbläsare med olika kakor.

Den framträdande Meltdown-attacken är ett exempel på sårbarhet i rasförhållanden. I smältanfallet utlöses svagheten genom parallell bearbetning av datahämtning från minnet och verifiering av huruvida en användare får åtkomst till minnet eller inte. Denna brist gör det möjligt för ett verktyg att undvika standardbehörighetskontroller som skiljer attackmekanismen från åtkomst till OS-data. Detta kryphål resulterar i att alla obehöriga processer kan se data och information från vilken annan adress som helst som är kopplad till det aktuella framstegets tillstånd i minnet. Under felaktig körning staplas information från en ej godkänd adress ofta snabbt i CPU: ns cache, från vilken informationen kan återställas.

Verkliga attackscenarier:

Genom att kontinuerligt skicka flera förfrågningar till webbservern kan du söka och manipulera rasförhållanden i webbapplikationer. Om du vill se om du kan ta ut mer pengar än du har på ditt bankkonto med hjälp av curl-funktionen kan du samtidigt skicka flera uttagsförfrågningar till servern.

curl (dra ut 50000) & (dra ut 50000) & (dra ut 50000) & (dra ut 50000) & (dra ut 50000) & (dra ut 50000)

Ju fler krav du lämnar in på kort tid, desto större är chansen att din attack kommer att fungera.

Dessutom, om du skickar asynkrona uppföljningsförfrågningar kommer du att följa en användare flera gånger istället för att skicka ett felsvar. Jag.e., om du lägger till en falsk rubrik som innehåller% s medan du släpper förfrågningar med turbo-inkräktare och klistrar in följande pythonkod:

def followReqs (mål, ordlistor):
engine = RequestEngine (slutpunkt = mål.slutpunkt,
concurrentConnections = 40,
requestsPerConnection = 100,
pipeline = False
)
för jag inom intervallet (40):
motor.kö (mål.req, str (i), gate = 'check')
motor.openGate ('check')
motor.komplett (timeout = 60)
def responseHandle (req, intressant):
tabell.lägg till (req)

Du kommer att se en Attack-knapp. Efter att ha tryckt på det skickar Turbo Intruder 40 frågor och skannar statuskoderna. Om du ser flera svar med statusen 201 genererat, indikerar det flera gånger att du har följt personen.

Det finns ett sårbarhetsproblem där du kan komma åt flera konsoler som erbjuds till gratis konton. De flesta webbplatser som erbjuder gratis konsoler har gratis konton, standardpaket och premiumpaket. Gratis konton ger endast 2 eller 3 konsoler per användare. För att bryta denna gräns och använda obegränsade konsoler, tränga in GET-förfrågan med NULL-nyttolaster flera gånger, som 100 eller 200. Och radera sedan någon av konsolerna manuellt från användargränssnittet medan trådarna körs.

Slutsats:

Som ett sätt att undergräva åtkomstkontrollerna ingår tävlingsvillkor. Alla program som är beroende av åtkomstkontrollmekanismer kan vara sårbara. På finansinstitutens webbplatser utnyttjar hackare oftast rasförhållandena. Eftersom det kan leda till obegränsade ekonomiska fördelar för hackaren om ett tävlingsvillkor skulle kunna upptäckas på en viktig funktion som kontantuttag, penningöverföring eller kreditkortsbetalning. E-handelsplattformar, videospel och omröstningstjänster online är andra högrisktekniker. Att implementera säker samtidighet är hemligheten för att undvika tävlingsförhållanden. Och du kan också använda resurslås. Det kommer också att finnas en låsfunktion inbyggd för programmeringsspråk med samtidiga förmågor som hjälper till att förhindra sådana förhållanden. Dessutom följer jag säkra kodningsstandarder, i.e., minst privilegium koncept och revisionskod kommer att minska programmets chans att bryta mot.

Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...