Sunteți pe pagina 1din 8

CUPRIN

MANAGEMENTUL
SECURITATII INFORMAȚIEI

Profesor: Student:
POPESCU DANIELA-ELENA MOLNAR SERGIU-IONUȚ
S
1. Ce este CSRF...................................................................................................................................3
2. Exemple CSRF................................................................................................................................4
3. Metode de prevenire a atacurilor de tip CSRF.................................................................................5
4. Cum să prevenim atacurile CSRF....................................................................................................6
4.1. Folosind un token.........................................................................................................................6
4.2. Folosind Captcha..........................................................................................................................6
4.3. Folosind un system de atutentificare.............................................................................................7
4.4. Folosind token stocat local............................................................................................................7
Atacul Cross Site Request Forgery (CSRF)

1. Ce este CSRF
Cross site request forgery (CSRF), cunoscut și sub numele de CSRF, Sea Surf sau
Session Riding, este un atac care “păcălește’’ browser-ul să execute o acțiune involuntară în
cadrul unei aplicații în care utilizatorul este autentificat.[1]

Un atac CSRF executat cu succes poate fi cumplit atât pentru companii, cât și pentru
utilizatori. Acest lucru poate duce la deteriorarea relațiilor cu clienții, transferuri de fonduri
neautorizate, schimbarea involuntară a parolelor sau furturi de date – inclusiv cookie-uri de
sesiune furate.

[1]

CSRF-urile sunt în mod normal efectuate folosing inginerie socială malițioasă


(malicious social engineering), precum un email sau un link care păcălește victima să trimită o
solicitare malițioasă către server. În timp ce utilizatorul nesuspicios (nu are idee de ceea ce se
întâmplă) este autentificat în aplicație în momentul atacului, este imposibil să se facă distingerea
între o cerere legitimă și una falsă.

[2]
2. Exemple CSRF
Înainte de a executa un atac, un atacator studiază de obicei aplicația pentru a putea face o
cerere falsificată să pară cât mai legitimă posibil.

De exemplu, o cerere de tip GET pentru un transfer bancar de $100000 ar arăta astfel:

http://example.com/transfer?acct=Fred&amount=100000 [3]

Un hacker poate modifica acest script pentru a-și fi transferată respectiva sumă de bani în
contul său. Astfel, cererea va arăta în felul următor:

http://example.com/transfer?acct=Attacker&amount=100000 [3]

De asemenea, atacatorul poate masca acest lucru într-un link ce pare a fi inofensiv:

<img data-fr-src=”http://example.com/transfer?
acct=Attacker&amount=100000” />[3]

Apoi, el poate distribui link-ul prin e-mail la un număr mare de clienți ai băncii. Cei care
accesează link-ul respectiv (când sunt autentificați în aplicație), vor iniția un transfer de $100000
către contul atacatorului fără a-și da seama.

De reținut este faptul că, dacă site-ul băncii folosește doar solicitări de tip POST, este
imposibil să fie inclusă o cerere malițioasă folosind proprietatea src a tag-ului <img>. Cu toate
acestea, atacul poate fi trimis într-un tag <form> care va executa automat codul JavaScript.

Form-ul respectiv poate arăta astfel:

<body onload="document.csrf.submit()">
<form action="http://example.com/transfer" method="POST" name=”csrf”>
<input type="hidden" name="acct" value="Attacker"/>
<input type="hidden" name="amount" value="100000"/>
<input type="submit" value="Transfer"/>
</form>
</body>[3]
3. Metode de prevenire a atacurilor de tip CSRF
Există o serie de metode eficiente atât pentru prevenirea, cât și pentru atenuarea atacurilor
CSRF. Din perspectiva unui utilizator, prevenirea este o chestiune de protejare a credențialelor
de conectare și de restricționare a accesului persoanelor neautorizate la aplicații.

Aceste metode includ următoarele aspecte:


 Deconectarea de la aplicațiile web atunci când nu sunt utilizate
 Securizarea numelor de utilizator și a parolelor
 Împiedicarea browserelor să rețină parolele
 Evitarea navigării simultane în timp ce sunteți conectat într-o aplicație
Pentru aplicațiile web, există mai multe soluții pentru a bloca traficul rău intenționat și pentru
a preveni atacurile. Printre cele mai comune metode de prevenire este cea de a genera token-uri
unice aleatorii pentru fiecare solicitare din cadrul unei sesiuni sau pentru fiecare ID. Aceste
token-uri sunt verificate ulterior și validate de către server. Solicitările din cadrul unei sesiuni
care au, fie token-uri duplicate, fie valori lipsă, sunt blocate.

Dubla trimitere a cookie-urilor este o altă metodă bine-cunoscută de a bloca un atac de tip
CSRF. Similar cu utilizarea token-urilor unice, cele aleatorii sunt atribuite atât unui modul
cookie, cât și unui parametru de solicitare (request parameter). Serverul verifică apoi dacă token-
ul este valid înainte de a acorda acces la aplicație.

Deși sunt eficiente, token-urile pot fi găsite în mai multe locuri, precum istoricul browser-
ului, fișierele log ale transferurilor HTTP și anteturi de referință, în cazul în care site-ul se leagă
la un link extern. Din această cauză, token-urile devin o soluție mai puțin sigură.
4. Cum să prevenim atacurile CSRF
Câteva dintre metodele de prevenire împotriva atacurilor de tip CSRF sunt următoarele:
4.1. Folosind un token

Metoda clasică constă în crearea unei sesiuni și a unui token, care va fi verificat în
momentul în care este acționată pagina respectivă. Dacă respectivul token va fi valid, acțiunile
private vor fi executate, în caz contrar se va refuza accesul la acele acțiuni.[4]

exemplu de token

4.2. Folosind Captcha

Pentru a rezolva problema de mai sus, una dintre alternative este crearea unui sistem de
captcha ce va simula aceleași verificări ca mai sus.
4.3. Folosind un sistem de autentificare

Această metodă este una ce ar trebui implementată doar în situațiile în care informațiile la
care se face accesul sunt extrem de importante și nu trebuie să fie accesibile sub nici o formă,
având o importanță ridicată. În cazurile acestea este indicat crearea unui sistem de autentificare
ce funcționează pe același principiu ca și captcha, doar că în loc de verificarea pe sesiuni se va
face verificarea pe user și parolă.[4]

4.4. Folosind token stocat local

Una dintre cele mai bune metode de protejare împotriva atacurilor CSRF este cea a
stocării token-ului local, într-o zonă ce este protejată oarecum de accesul publicului.
Argumentele sunt evidente: hackerul nu poate avea acces la token sub nici o formă, noi creând
un fișier cu ajutorul unui algoritm ce generează un hash unic bazat pe ip+browser+time, în care
este precizat timpul cât este valid (câteva minute maxim). Această situație va rezolva majoritatea
problemelor de extragere a informațiilor de prima metodă de protecție. În această situație singura
problemă ce se ridică este protejarea eficientă a folder-ului respectiv (probabil cu htaccess).
BIBLIOGRAFIE
1. https://www.acunetix.com/websitesecurity/csrf-attacks/
2. https://www.imperva.com/learn/wp-content/uploads/sites/13/2019/01/csrf-cross-site-
request-forgery.png
3. https://www.acunetix.com/websitesecurity/csrf-attacks/
4. https://www.slideshare.net/europeancompanies/csrf

S-ar putea să vă placă și