Programare web

Vulnerabilități ale stării cursei în aplicațiile web

Vulnerabilități ale stării cursei în aplicațiile web
Când o aplicație web configurată pentru a gestiona funcțiile într-o secvență fixă ​​este necesară pentru a executa simultan două sau mai multe operații, are loc un atac de stare. Această tehnică profită de o întârziere între momentul în care este introdus un serviciu și când are loc un control de siguranță. Acest atac poate fi efectuat în oricare dintre cele două moduri, bazate pe aplicații cu mai multe fire: intruziunea suportată de procese de încredere și intruziunea suportată de un proces de încredere care ar putea avea aceleași și egale drepturi.

Diferite procese pot interacționa între ele fără măsuri adecvate. Aceste atacuri sunt, de asemenea, cunoscute sub numele de atac Time of Check, Time of Use sau TOC / TOU. Vulnerabilitățile stării cursei se întâmplă în primul rând din cauza erorilor de programare de bază pe care dezvoltatorii le creează de obicei, iar aceste eșecuri s-au dovedit costisitoare. Entitățile rău intenționate au exploatat condițiile rasei pentru multe scopuri rău intenționate, i.e., de la obținerea de vouchere gratuite pentru a jefui bani din conturi online și firme de investiții.

Să presupunem că două fire de execuție paralele încearcă să crească valoarea unei variabile globale cu 5. În cele din urmă, atunci, variabila globală ar avea o valoare de 10. Cu toate acestea, dacă toate firele rulează simultan, execuția poate fi greșită fără blocarea resurselor sau sincronizare. Când primul fir face unele manipulări acelei variabile globale, al doilea fir îl citește și începe să facă alte manipulări. În acest caz, valoarea finală nu ar fi cea așteptată.

Acest lucru se întâmplă deoarece efectul terminării unui fir depinde de rezultatul celuilalt. Când cele două fire sunt executate simultan, vor exista consecințe neintenționate.

Domeniul de aplicare al atacurilor:

Imaginați-vă că ceva mai critic este executat de cele două fire ale exemplului de mai sus, cum ar fi schimbul de bani între conturi bancare. Pentru a trimite banii corect, programul va trebui să execute aceste sarcini în această succesiune; Verificați dacă există suficient sold în contul expeditorului, adăugați bani în contul destinatarului și apoi deduceți din contul expeditorului. Dar dacă trimiteți simultan două solicitări, este posibil să puteți declanșa o condiție în care se modifică secvența de execuție a firului. Într-o astfel de situație, veți ajunge cu o sumă diferită de cea așteptată.

Vulnerabilitatea stării rasei a fost găsită de Egor Homakov pe site-ul web Starbucks. El a descoperit o modalitate de a crea o sumă infinită de credit pe tichetele cadou Starbucks gratuit folosind diferite browsere cu diferite cookie-uri.

Atacul proeminent Meltdown este un exemplu de vulnerabilitate a stării rasei. În atacul de topire, slăbiciunea este declanșată de procesarea paralelă a recuperării datelor din memorie și autentificarea dacă un utilizator are sau nu permisiunea de a accesa memoria. Acest defect face posibil ca un instrument să evite verificările standard de privilegii care separă mecanismul de atac de accesarea datelor OS. Această lacună are ca rezultat permisiunea oricărui proces neautorizat de a vizualiza date și informații de la orice altă adresă conectată la starea de progres curentă din memorie. În procesul de execuție defectuoasă, informațiile de la o adresă neaprobată vor fi frecvent stivuite rapid în memoria cache a procesorului, din care informațiile pot fi recuperate.

Scenarii de atac din viața reală:

Trimitând numeroase cereri către serverul web în mod continuu, puteți căuta și manipula condițiile cursei în aplicațiile web. Dacă doriți să vedeți dacă puteți sau nu retrage mai mulți bani decât aveți în contul dvs. bancar, utilizând funcția curl, puteți trimite simultan mai multe cereri de retragere către server.

curl (retrage 50000) & (retrage 50000) & (retrage 50000) & (retrage 50000) & (retrage 50000) & (retrage 50000)

Cu cât depuneți mai multe cereri într-un timp scurt, cu atât sunt mai mari șansele ca atacul dvs. să funcționeze.

Mai mult, dacă trimiteți cereri de urmărire asincrone, veți urmări un utilizator de mai multe ori în loc să trimiteți un răspuns de eroare. Eu.e., dacă adăugați un antet fals care conține% s în timp ce renunțați la solicitări folosind turbo intrus și lipiți următorul cod python:

Def FollowReqs (target, liste de cuvinte):
motor = RequestEngine (punct final = țintă.punctul final,
concurrentConnections = 40,
requestsPerConnection = 100,
conductă = False
)
pentru i în intervalul (40):
motor.coadă (țintă.req, str (i), gate = 'check')
motor.openGate („verificați”)
motor.complet (timeout = 60)
def responseHandle (cerere, interesant):
masa.adaugă (cerere)

Veți vedea un buton de atac. După apăsare, Turbo Intruder trimite 40 de interogări și scanează codurile de stare. Dacă vedeți mai multe răspunsuri cu starea 201 Generat, aceasta indică de mai multe ori că ați urmărit persoana respectivă.

Există o vulnerabilitate a stării cursei în care puteți accesa mai multe console oferite conturilor gratuite. Majoritatea site-urilor web care oferă console gratuite au conturi gratuite, pachete standard și premium. Conturile gratuite oferă doar 2 sau 3 console pe utilizator. Pentru a depăși această limită și a utiliza console nelimitate, introduceți solicitarea GET folosind sarcini utile NULL de mai multe ori, cum ar fi 100 sau 200. Și apoi ștergeți manual oricare dintre console din interfața de utilizare în timp ce se execută fire.

Concluzie:

Ca mijloc de a submina controalele de acces, sunt incluse condițiile cursei. Orice program care depinde de mecanismele de control al accesului poate fi vulnerabil. De cele mai multe ori, pe site-urile instituțiilor financiare, hackerii exploatează condițiile rasei. Deoarece ar putea duce la beneficii financiare nelimitate pentru hacker dacă ar putea fi descoperită o condiție de cursă pe o caracteristică vitală, cum ar fi retragerea de numerar, transferul de bani sau plata cu cardul de credit. Platformele de comerț electronic, jocurile video și serviciile de vot online sunt alte tehnologii cu risc ridicat. Implementarea concurenței sigure este secretul evitării condițiilor de curse. Și puteți utiliza și blocări de resurse. De asemenea, va exista o caracteristică de blocare încorporată pentru limbaje de programare cu abilități simultane care ajută la prevenirea unor astfel de condiții. În plus, urmând standarde de codare sigure, i.e., conceptul de cel mai mic privilegiu și codul de audit vor reduce șansele de încălcare a programului.

Top 10 jocuri de jucat pe Ubuntu
Platforma Windows a fost una dintre platformele dominante pentru jocuri din cauza procentului imens de jocuri care se dezvoltă astăzi pentru a sprijin...
Cele mai bune 5 jocuri arcade pentru Linux
În zilele noastre, computerele sunt mașini serioase folosite pentru jocuri. Dacă nu puteți obține noul scor mare, veți ști la ce mă refer. În această ...
Battle For Wesnoth 1.13.6 Development Released
Battle For Wesnoth 1.13.6 released last month, is the sixth development release in the 1.13.x series and it delivers a number of improvements, most no...