Cookie-uri SYN

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Utilizarea cookie-urilor SYN pentru apărarea împotriva atacului de inundații SYN.

SYN Cookie este o tehnica pentru a rezista unui atac de inundații SYN (SYN avalanșă / atac de inundații) și este definit de inventator Daniel J. Bernstein ca „alegere particulară a TCP secvențelor inițiale de servere TCP“. [1]

În special, utilizarea cookie-urilor SYN permite unui server să evite căderea conexiunii atunci când coada SYN este plină, comportându-se ca și cum coada SYN ar fi fost extinsă.

Serverul trimite apoi răspunsul respectiv SYN + ACK clientului, dar renunță la intrarea în coada SYN. Dacă serverul primește un răspuns ACK consecvent de la client, este capabil să reconstruiască intrarea în coada SYN, grație informațiilor codificate în secvența TCP.

Definiție

Cookie-urile SYN sunt o alegere specială a secvenței TCP inițiale de către servere. Diferența dintre serverul inițial și secvența client este:

  • primii 5 biți: t mod 32, unde t este un contor de 32 de biți care este incrementat la fiecare 64 de secunde;
  • 3 biți succesivi: m , adică codificarea unui MSS selectat de server ca răspuns la MSS-ul clientului;
  • ultimii 24 de biți: s , adică un „secret” selectat de server în funcție de adresa IP și numărul de port al clientului, adresa IP și numărul de port al serverului și valoarea t .

Această alegere a secvenței inițiale este în conformitate cu cerința de bază TCP conform căreia succesiunea numerelor crește încet. Alegerea serverului crește puțin mai repede decât alegerea inițială a clientului.

Falsificare conexiune oarbă

Dacă un atacator ghicește o secvență validă trimisă la gazda altcuiva, el poate crea o conexiune cu gazda respectivă.

Atacatorii pot încerca să decripteze funcția secretă a serverului inspectând o serie de cookie-uri valide și încercând să prezică unul nou valid. Pentru a defini o funcție „sigură”, șansa de succes a atacatorului nu trebuie să fie prea diferită de probabilitatea de a ghici aleatoriu. Autenticatorii de mesaje cheie secrete sunt concepute pentru a oferi acest tip de securitate.

Folosind SYN ACK-uri pentru a verifica conexiunea.

De exemplu, funcția care codifică intrarea în 16 octeți, criptează rezultatul prin AES (Rijndael) cu o cheie secretă și extrage primii 24 de biți ai rezultatului este extrem de rapidă și pare a fi sigură.

Indiferent de funcția utilizată, atacatorul în câteva milioane de încercări aleatoare de pachete ACK va putea crea o conexiune. Serverele pot scumpi aceste atacuri în două moduri:

  • urmărirea timpilor de revărsare a celor mai recente cozi SYN (nu o variabilă globală, dar una pentru fiecare coadă) nu trebuie să reconstruiască intrările SYN lipsă dacă nu au existat revărsări recente.
  • adăugarea unui alt număr la cookie: o funcție secretă aleasă (partea serverului) pe 32 de biți a adresei clientului. Acest lucru îl obligă pe atacator să ghicească 32 de biți în loc de 24.

Introducerea unui nou protocol pe 128 de biți ar putea face practic imposibilă crearea conexiunii oarbe.

Critici

Utilizarea cookie-urilor SYN nu încalcă niciun protocol specific și, prin urmare, este compatibilă cu orice implementare TCP.

Cu toate acestea, există câteva precauții de care trebuie să țineți cont atunci când utilizați cookie-urile SYN ca:

  • serverul este limitat la doar 8 valori MSS și este tot ce poate fi codat în 3 biți;
  • serverul trebuie să respingă toate opțiunile TCP (cum ar fi timestamp-urile), deoarece serverul renunță la coada SYN unde altfel ar fi stocate aceste informații.

În timp ce aceste limitări fac ca experiența să nu fie optimă, ele sunt rareori observate din partea clientului, deoarece sunt aplicate numai atunci când sunt atacate. În acest caz, pierderea opțiunilor TCP pentru salvarea conexiunii este considerată un cost acceptabil.

O problemă apare atunci când pachetul cu ACK care vizează conectarea (trimis de client) este pierdut și protocolul stratului de aplicație necesită ca serverul să comunice mai întâi. În acest caz, clientul presupune că conexiunea a fost stabilită corect și așteaptă semnalul așteptat de la server sau returnează pachetul SYN + ACK. În caz contrar, serverul nu este notificat cu privire la sesiune și nu trimite SYN + ACK deoarece intrarea cozii care l-ar fi activat este eliminată.

În cele din urmă, clientul poate închide conexiunea pe baza unui cronometru la nivel de aplicație, dar acest lucru poate fi relativ lung.

În 2008, versiunea 2.6.26 a kernel-ului Linux a adăugat un suport limitat pentru opțiunile TCP, codificându-le în timbre.

Noul standard TCP Cookie Transactions (TCPCT) este conceput pentru a depăși aceste dezavantaje și pentru a îmbunătăți unele aspecte. Spre deosebire de cookie-urile SYN, TCPTC este o extensie a protocolului TCP și necesită compatibilitate de la ambele capete (client și server).

Considerații de securitate

Cele mai simple firewall-uri care sunt configurate pentru a permite toate conexiunile de ieșire, dar pentru a putea restricționa conexiunile primite (de exemplu, permițând conexiuni pe portul 80, dar blocând pe toate celelalte), funcționează blocând numai cererile SYN pe porturile nedorite. Dacă cookie-urile SYN sunt activate, trebuie să aveți grijă să vă asigurați că atacatorul nu este capabil să ocolească firewall-ul prin crearea ACK, încercând prin încercare și eroare până când unul este acceptat. Cookie-urile SYN ar trebui activate sau dezactivate pe bază de port, astfel încât cookie-urile SYN activate pe un port public să nu provoace o confirmare falsă pe un port non-public.

Notă

  1. ^ DJ Bernstein, SYN COOKIES .

Elemente conexe