Webprogrammeren

Kwetsbaarheden in racecondities in webapplicaties

Kwetsbaarheden in racecondities in webapplicaties
Wanneer een webtoepassing die is geconfigureerd om functies in een vaste volgorde te beheren, vereist is om twee of meer bewerkingen gelijktijdig uit te voeren, treedt er een race-conditie-aanval op. Deze techniek maakt gebruik van een tijdsvertraging tussen het moment waarop een dienst wordt geïntroduceerd en het moment waarop een veiligheidscontrole plaatsvindt. Deze aanval kan op twee manieren worden uitgevoerd, gebaseerd op multithreaded applicaties: inbraak door niet-vertrouwde processen en inbraak door een betrouwbaar proces dat dezelfde en gelijke rechten zou kunnen hebben.

Verschillende processen kunnen met elkaar interageren zonder adequate maatregelen. Deze aanvallen worden ook wel Time of Check-aanvallen, Time of Use-aanvallen of TOC/TOU-aanvallen genoemd. Kwetsbaarheden in racecondities zijn er in de eerste plaats vanwege basisprogrammeerfouten die ontwikkelaars gewoonlijk maken, en deze fouten zijn kostbaar gebleken. Kwaadwillende entiteiten hebben de race-omstandigheden voor tal van kwaadaardige doeleinden uitgebuit.e., van het krijgen van gratis vouchers om geld te stelen van online rekeningen en beleggingsondernemingen.

Laten we aannemen dat twee parallelle uitvoeringsthreads proberen de waarde van een globale variabele met 5 . te verhogen. Uiteindelijk zou de globale variabele dan een waarde hebben van 10. Als alle threads tegelijkertijd worden uitgevoerd, kan de uitvoering echter verkeerd zijn zonder resourcevergrendelingen of synchronisatie. Wanneer de eerste thread wat manipulaties aan het doen is met die globale variabele, leest de tweede thread het en begint een aantal andere manipulaties uit te voeren. In dit geval zou de uiteindelijke waarde niet zijn zoals verwacht.

Dit gebeurt omdat het effect van de ene threadbeëindiging afhangt van de uitkomst van de andere. Wanneer de twee threads gelijktijdig worden uitgevoerd, zijn er onbedoelde gevolgen.

Reikwijdte van aanvallen op racecondities:

Stel je voor dat iets belangrijkers wordt uitgevoerd door de twee threads van het bovenstaande voorbeeld, zoals geld wisselen tussen bankrekeningen bank. Om het geld correct te verzenden, moet het programma deze taken in deze volgorde uitvoeren; Controleer of er voldoende saldo op de rekening van de afzender staat, voeg geld toe aan de rekening van de ontvanger en trek vervolgens af van de rekening van de afzender. Maar als u tegelijkertijd twee verzoeken indient, kunt u mogelijk een voorwaarde activeren waarin de volgorde van de uitvoering van de thread verandert. In een dergelijke situatie kom je uit op een ander bedrag dan verwacht.

Egor Homakov heeft een kwetsbaarheid in raceconditie gevonden op de Starbucks-website. Hij ontdekte een manier om gratis oneindig veel tegoed te creëren op Starbucks-cadeaubonnen met verschillende browsers met verschillende cookies.

De prominente Meltdown-aanval is een voorbeeld van kwetsbaarheid voor racecondities. Bij de meltdown-aanval wordt de zwakte veroorzaakt door parallelle verwerking van het ophalen van gegevens uit het geheugen en authenticatie of een gebruiker al dan niet toegang heeft tot het geheugen. Deze fout maakt het voor een tool mogelijk om standaard privilegecontroles te vermijden die het aanvalsmechanisme scheiden van toegang tot OS-gegevens. Deze maas in de wet zorgt ervoor dat elk ongeoorloofd proces gegevens en informatie kan bekijken van elk ander adres dat is verbonden met de huidige voortgangsstatus in het geheugen. Tijdens een foutieve uitvoering wordt informatie van een niet-goedgekeurd adres vaak snel in de cache van de CPU gestapeld, van waaruit de informatie kan worden hersteld.

Real-life aanvalsscenario's:

Door continu talloze verzoeken naar de webserver te sturen, kunt u racevoorwaarden in webapplicaties zoeken en manipuleren. Als u wilt zien of u meer geld kunt opnemen dan u op uw bankrekening heeft staan, kunt u met behulp van de curl-functie tegelijkertijd meerdere opnameverzoeken naar de server sturen.

curl (50000 opnemen) & (50000 opnemen) & (50000 opnemen) & (50000 opnemen) & (50000 opnemen) & (50000 opnemen)

Hoe meer eisen je in een korte tijd indient, hoe groter de kans dat je aanval werkt.

Bovendien, als u asynchrone vervolgverzoeken verzendt, volgt u een gebruiker meerdere keren in plaats van een foutreactie te verzenden. ik.e., als je een nep-header toevoegt die %s bevat terwijl je verzoeken laat vallen met turbo-indringer en de volgende python-code plakt:

def followReqs(doel, woordenlijsten):
engine = RequestEngine(endpoint=target.eindpunt,
gelijktijdigeVerbindingen=40,
verzoekenPerVerbinding=100,
pijplijn=False
)
voor i binnen bereik (40):
motor.wachtrij(doel).req, str(i), gate='check')
motor.openGate('check')
motor.voltooid (time-out=60)
def responseHandle(req, interessant):
tafel.toevoegen (vereist)

Je ziet een aanvalsknop. Nadat je daarop hebt gedrukt, verzendt de Turbo Intruder 40 vragen en scant de statuscodes. Als je meerdere reacties ziet met de status 201 Gegenereerd, betekent dit dat je de persoon meerdere keren hebt gevolgd.

Er is een kwetsbaarheid in racecondities waarbij je toegang hebt tot meerdere consoles die worden aangeboden aan gratis accounts. De meeste websites die gratis consoles aanbieden, hebben gratis accounts, standaard- en premiumpakketten. Gratis accounts bieden slechts 2 of 3 consoles per gebruiker. Om deze limiet te doorbreken en onbeperkte consoles te gebruiken, moet u het GET-verzoek meerdere keren gebruiken met NULL-payloads, zoals 100 of 200. En verwijder vervolgens een van de consoles handmatig uit de gebruikersinterface terwijl threads actief zijn.

Conclusie:

Als middel om toegangscontroles te ondermijnen, zijn racevoorwaarden inbegrepen. Elk programma dat afhankelijk is van mechanismen voor toegangscontrole kan kwetsbaar zijn. Meestal maken hackers op de websites van financiële instellingen misbruik van racevoorwaarden. Omdat het kan leiden tot onbeperkte financiële voordelen voor de hacker als een race-conditie zou kunnen worden ontdekt op een essentieel kenmerk, zoals geldopname, geldoverdracht of creditcardbetaling. E-commerceplatforms, videogames en online stemdiensten zijn andere technologieën met een hoog risico. Het implementeren van veilige gelijktijdigheid is het geheim om raceomstandigheden te vermijden. En je kunt ook bronvergrendelingen gebruiken. Er zal ook een vergrendelingsfunctie zijn ingebouwd voor programmeertalen met gelijktijdigheidsfuncties die dergelijke omstandigheden helpen voorkomen. Bovendien, volgens veilige coderingsnormen, i.e., Het concept met de minste rechten en de controlecode zullen de kans op inbreuken op het programma verkleinen.

Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...