Document Details

FearlessSasquatch

Uploaded by FearlessSasquatch

Universitatea Tehnică Gheorghe Asachi din Iași

2024

Adrian Alexandrescu

Tags

web security csrf web attacks computer science

Summary

This document provides a presentation on web security attacks, particularly Cross-Site Request Forgery (CSRF). It covers various aspects of CSRF, including its implications, vulnerable contexts, examples of CSRF, and defense mechanisms like tokens and cookies.

Full Transcript

SECURITATE WEB CURSUL 05 ATACURI ASUPRA APLICAȚIILOR WEB CSRF ș.l. dr. ing. ADRIAN ALEXANDRESCU Facultatea de Automatică și Calculatoare Universitatea Tehnică “Gheorghe Asachi” din Iași 2023-2024 Cuprins I. CSRF Adrian Alexandrescu 2023-2024 2 Cross-Site Request Forgery 1. 2. 3. 4. 5. 6. 7....

SECURITATE WEB CURSUL 05 ATACURI ASUPRA APLICAȚIILOR WEB CSRF ș.l. dr. ing. ADRIAN ALEXANDRESCU Facultatea de Automatică și Calculatoare Universitatea Tehnică “Gheorghe Asachi” din Iași 2023-2024 Cuprins I. CSRF Adrian Alexandrescu 2023-2024 2 Cross-Site Request Forgery 1. 2. 3. 4. 5. 6. 7. CSRF XSS vs CSRF Implicațiile unui atac CSRF Condiții pentru realizarea unui atac CSRF Exemplu CSRF Contexte vulnerabile CSRF Metode de realizare a CSRF 8. Token CSRF 9. Synchronizer Token Pattern 10. I Double Submit Cookie Pattern Adrian Alexandrescu 2023-2024 3 1. Cross-Site Request Forgery     I CSRF (uneori numit și XSRF) Reprezintă o clasă de atac asociată Atacatorul face ca browser-ul utilizatorului să efectueze o cerere către serverul site-ului web fără consimțământul sau știrea utilizatorului Un atacator poate folosi un payload XSS pentru a lansa un atac CSRF Adrian Alexandrescu 2023-2024 4 1. Cross-Site Request Forgery Adrian Alexandrescu 2023-2024 https://portswigger.net/web-security/csrf I 5 2. XSS vs CSRF     I Cross-site scripting (XSS) permite unui atacator să execute JavaScript în browserul unui utilizator victimă Cross-site request forgery (CSRF) permite unui atacator să inducă un utilizator victimă să efectueze acțiuni (pe care nu intenționa în mod normal să le facă) pe un site web unde este autentificat CSRF este o vulnerabilitate "unidirecțională": deși un atacator poate determina victima să facă o cerere HTTP, acesta nu poate prelua răspunsul de la acea cerere XSS este "bidirecțional": scriptul injectat de atacator poate emite cereri arbitrare, poate citi răspunsurile și poate exfiltra datele într-un domeniu extern ales de atacator Adrian Alexandrescu 2023-2024 6 3. Implicațiile unui atac CRSF?   Atacatorul determină utilizatorul victimă să efectueze o acțiune neintenționată De exemplu aceasta ar putea fi pentru:      I a schimba adresa de e-mail din contul lor, a le schimba parola, a efectua un transfer de fonduri. Atacatorul ar putea obține controlul deplin asupra contului utilizatorului Dacă utilizatorul compromis are un rol privilegiat în cadrul aplicației, atunci atacatorul ar putea fi capabil să preia controlul deplin asupra tuturor datelor și funcționalității aplicației Adrian Alexandrescu 2023-2024 7 4. Condiții pentru realizarea unui atac CSRF  Există o acțiune relevantă pe care utilizatorul o poate efectua pe site de care ar putea profita atacatorul   E.g., schimbarea parolei, modificarea permisiunilor pentru alți utilizatori Gestionarea sesiunilor pe bază de cookie-uri    I efectuarea acțiunii implică emiterea uneia sau mai multor solicitări HTTP aplicația se bazează numai pe cookie-uri de sesiune pentru a identifica utilizatorul care a făcut solicitările Cererile care efectuează acțiunea nu conțin parametri ale căror valori nu le poate determina sau ghici atacatorul  E.g., o funcție de schimbare a parolei NU este vulnerabilă dacă atacatorul ar trebui să știe parola existentă Adrian Alexandrescu 2023-2024 8 5. Exemplu CRSF  I Aplicația web conține o funcție care permite utilizatorului să schimbe adresa de e-mail din contul său POST /email/change HTTP/1.1 Host: vulnerable-website.com Content-Type: application/x-www-form-urlencoded Content-Length: 30 Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE [email protected] Adrian Alexandrescu 2023-2024 https://portswigger.net/web-security/csrf 9 5. Exemplu CRSF  I Aplicația web conține o funcție care permite utilizatorului să schimbe adresa de e-mail din contul său POST /email/change HTTP/1.1 Host: vulnerable-website.com Content-Type: application/x-www-form-urlencoded Content-Length: 30 Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE [email protected] Adrian Alexandrescu 2023-2024 https://portswigger.net/web-security/csrf 10 5. Exemplu CRSF  I Atacatorul creează următoarea pagină web: <html> <body> <form action="https://vulnerable-website.com/email/change" method="POST"> <input type="hidden" name="email" value="[email protected]" /> </form> <script> document.forms[0].submit(); </script> </body> </html> Adrian Alexandrescu 2023-2024 11 5. Exemplu CRSF    I Accesarea paginii atacatorului va duce la redirectarea pe site-ul vulnerabil (se face o cerere HTTP prin submit-ul automat al formularului) Dacă utilizatorul este conectat la site-ul web vulnerabil, browserul său va include automat cookie-ul de sesiune în cerere Site-ul web vulnerabil va procesa cererea în mod normal, o va trata ca fiind făcută de utilizatorul victimă și va schimba adresa de e-mail Adrian Alexandrescu 2023-2024 12 6. Contexte vulnerabile CSRF    I Contexte în care browser-ul/aplicația adaugă automat anumite credențiale la cererile efectuate Gestionarea sesiunilor prin intermediul cookie-urilor HTTP Basic authentication  Autentificarea bazate pe certificate  Utilizarea HTTPS nu previne atacurile CSRF Adrian Alexandrescu 2023-2024 13 7. Metode de realizare a CSRF     I Atacurile CSRF au loc în manieră similară cu atacurile de tipul Reflected XSS Atacatorul plasează codul HTML malițios pe un site web pe care îl controlează și apoi va determina victimele să viziteze acel site web Victima poate primi link-ul spre site-ul atacatorului prin email, un mesaj pe rețelele sociale sau prin postarea link-ului în comentariul unui site popular Unele atacuri CSRF folosesc metoda HTTP GET și necesită doar o adresă URL spre site-ul țintă. Nu mai este nevoie ca atacatorul să realizeze o pagină web Adrian Alexandrescu 2023-2024 14 8. Token CSRF     I Este o valoare unică, secretă, imprevizibilă Este generată de aplicația server-side Este transmisă clientului în așa fel încât să fie inclusă într-o cerere HTTP ulterioară făcută de client Când se face cererea ulterioară, aplicația server-side validează faptul că cererea include token-ul așteptat și respinge cererea dacă simbolul lipsește sau este invalid Adrian Alexandrescu 2023-2024 15 8. Token CSRF    I Ar trebui generat într-un mod similar cu id-ul de sesiune Se poate folosi un Pseudo Random Number Generator (PRNG) care să aibă ca seed timestamp-ul curent și un secret static Eventual, rezultatul să fie combinat cu o entropie specifică utilizatorului, iar token-ul să fie un hash pe rezultatul combinat Adrian Alexandrescu 2023-2024 16 8. Token CSRF   Token-ul poate fi transmis la client ca răspuns la o cerere în HTML sau JSON Token-ul poate fi trimis la server:      I Inclus într-un formular și să fie trimis la submit-ul acestuia prin metoda POST <input type="hidden" name="csrf-token" value="Fterr454trtRtht23THeJoiUO45y5Ysd" /> Printr-o cerere AJAX ca header custom Printr-o cerere AJAX într-un payload JSON Token-ul nu ar trebui pus în parametri query ai URL-ului Token-ul nu ar trebui transmis prin cookie-uri Adrian Alexandrescu 2023-2024 17 9. Synchronizer Token Pattern  Token-ii CSRF trebuie generați la server:  O singură dată pe sesiune a utilizatorului    Token-ul este ținut la server în obiectul sesiune La fiecare cerere   I Apar probleme dacă utilizatorul folosește butonul Back a browser-ului Când serverul primește o cerere de la client, acesta verifică existența și validitatea token-ului (compară token-ul primit cu valoarea din sesiunea utilizatorului) Dacă nu corespund s-ar putea loga acest lucru la server Adrian Alexandrescu 2023-2024 18 9. Synchronizer Token Pattern Adrian Alexandrescu 2023-2024 I https://medium.com/@kalani.matheesha/synchronizer-token-pattern-4a4a8c36232e 19 10. Double Submit Cookie Pattern I  Metodă fără stare (en., stateless) – nu necesită salvarea tokenului CSRF la server  Când utilizatorul accesează site-ul se generează o valoare pseudo-aleatorie (token-ul) care este trimisă ca și cookie, pe lângă id-ul de sesiune  Fiecare cerere tranzacțională va conține acel token ca:   Valoare hidden în formular care să ajungă în corpul mesajului la submit  Parametru în cerere  Header custom La server se verifică dacă token-ul trimis în cookie coincide cu token-ul trimis prin una din metodele de mai sus Adrian Alexandrescu 2023-2024 20 10. Double Submit Cookie Pattern I Adrian Alexandrescu 2023-2024 https://medium.com/synchronizer-token-patterns/double-submit-cookie-pattern-e7556590fe0f 21 10. Double Submit Cookie Pattern   I Se poate ca să fie transmis token-ul într-un cookie criptat Sau să se aplice algoritmul HMAC (keyed-hash message authentication code) cu un secret cunoscut doar de server   Similar cu un cookie criptat, dar nu mai este necesară criptarea/decriptarea cookie-ului Atacatorul nu ar putea să recreeze valoarea cookie-ului din token-ul necriptat fără a cunoaște secretul serverului Adrian Alexandrescu 2023-2024 22 11. Alte tehnici de apărare împotriva CSRF I Atributul SameSite al unui cookie   https://datatracker.ietf.org/doc/html/draft-ietf-httpbisrfc6265bis-02#section-5.3.7 https://datatracker.ietf.org/doc/html/draft-ietf-httpbisrfc6265bis-02#section-8.8.2 Adrian Alexandrescu 2023-2024 23 11. Alte tehnici de apărare împotriva CSRF I Verificarea originii cu header-ele standard 1. Determinarea sursei de unde vine cererea  2. Determinarea destinației cererii   Prin header-ele Origin sau Referer Prin header-ele Host sau X-Forwarded-Host (în special dacă serverul se ocupă de mai multe domenii sau este în spatele unui proxy/gateway) Se pot folosi cookie-uri cu prefixul __Host- trebuie marcate ca "secure" (trebuie să fie dintr-o pagină securizată HTTPS), nu trebuie să aibă un domeniu specificat (și, prin urmare, nu sunt trimise la subdomenii), iar calea trebuie să fie /  Set-Cookie: __Host-token=RANDOM; path=/; Secure  Adrian Alexandrescu 2023-2024 24 11. Alte tehnici de apărare împotriva CSRF I Utilizarea header-ele custom la cerere    Sunt utile la cereri AJAX Doar JavaScript poate fi utilizat ca să fie adăugat un header custom, iar acel header poate fi setat doar în origin-ul curent La server se verifică dacă numele și valoarea header-ului coincid Adrian Alexandrescu 2023-2024 25 11. Alte tehnici de apărare împotriva CSRF I Implicarea utilizatorului în realizarea tranzacțiilor     Mecanism de re-autentificare/re-autorizare One-Time Token CAPTCHA Exemplu de filtru CSRF în Java https://github.com/righettod/poccsrf/blob/master/src/main/java/eu/righettod/poccsrf/filt er/CSRFValidationFilter.java Adrian Alexandrescu 2023-2024 26 Bibliografie  Wu, H., & Zhao, L. (2015). Web security: a whitehat perspective. CRC Press.  Cross Site Request Forgery (CSRF) https://owasp.org/www-community/attacks/csrf  XSS vs CSRF https://portswigger.net/web-security/csrf/xss-vs-csrf  Cross-Site Request Forgery Prevention Cheat Sheet¶ https://cheatsheetseries.owasp.org/cheatsheets/CrossSite_Request_Forgery_Prevention_Cheat_Sheet.html  Double Submit Cookie Pattern https://medium.com/@kaviru.mihisara/double-submit-cookiepattern-820fc97e51f2 Adrian Alexandrescu 2023-2024 27

Use Quizgecko on...
Browser
Browser