Introducere în revărsarea tampon

Depășirea bufferului este cunoscută și sub denumirea de depășire buffer, este o stare a computerului în care o aplicație încearcă să stocheze mai multe date în memoria tampon decât dimensiunea memoriei. Acest lucru duce la stocarea datelor în spațiul de stocare adiacent, care poate uneori suprascrie datele existente, cauzând pierderi potențiale de date și, uneori, și un bloc de sistem. Este o greșeală comună de programare pe care majoritatea dezvoltatorilor o comit în mod inconștient. Acest lucru este cel mai adesea exploatat de hackeri pentru a avea acces la date nesolicitate.

Ce este memoria memorie?

Întrebare excelentă. O memorie tampon, sau un buffer, este pur și simplu o porțiune secvențială a RAM-ului rezervată pentru a reține date temporar în timp ce acestea sunt transferate dintr-un loc în altul - locul de obicei fiind un dispozitiv de intrare sau de ieșire. Aceasta se face pentru a compensa diferența de viteze cu care operează dispozitivele.

De exemplu, când oferiți câteva documente pentru tipărire, cel mai recent procesor i7 este suficient de rapid pentru a executa comanda de imprimare în nanosecunde, în timp ce imprimanta veche săracă nu este echipată cu acel procesor rapid. Deci, documentele sunt păstrate în memoria tampon și transmise imprimantei la o viteză acceptată de imprimantă. Aceasta eliberează memoria RAM a procesorului pentru alte sarcini.

Atac de revărsare prin tampon

Acum că a fost identificată o vulnerabilitate cu computerele, hackerii sunt obligați să o exploateze și să încerce să atace diverse sisteme prin atacuri de revărsare a tamponului. Acum apare întrebarea: cum execută un hacker un astfel de atac și care sunt consecințele?

Într-un atac de revărsare a tamponului, datele suplimentare includ instrucțiuni destinate să declanșeze activități dăunătoare, cum ar fi corupția fișierelor, schimbarea datelor, trimiterea de informații private pe internet etc. Un atacator ar profita pur și simplu de orice program care așteaptă un anumit utilizator. introduceți și injectați surplusul de date în tampon.

Atacul de revărsare prin buffer poate fi clasificat în principal în două tipuri

  • Bazat pe stivă: Când atacul este pe alocare de memorie bazată pe stivă. Acest lucru este mai simplu de exploatat și este astfel mai predispus la atacuri.
  • Bazat pe heap : Când atacul se bazează pe alocarea de memorie bazată pe haldă. Acest lucru nu este atât de ușor de exploatat și, prin urmare, este mult mai puțin frecvent.

Limbile cele mai vulnerabile la atacurile de reaprovizionare tampon sunt C, C ++, Fortran și Asamblare, deoarece folosesc tehnici de alocare a memoriei bazate pe stivă.

Leacul

Odată ce datele sunt corupte, nu există pur și simplu nicio leac pentru restaurarea datelor originale. Mai mult, intensitatea atacului determină în mare parte cura. Dacă atacul este slab și afectează doar o parte din memoria unei mașini izolate, un format simplu al sistemului poate fi vindecarea. Întrucât, dacă atacul este răspândit și a compromis datele asupra mai multor mașini, formatarea întregii rețele nu ar ajuta decât dacă programul care injectează codul rău intenționat este fixat.

Prevenirea este mai bună decât vindecarea

În calitate de dezvoltatori, este responsabilitatea noastră să verificăm dacă există fluxuri de buffer în codul nostru. Dacă fluxurile de tampon sunt gestionate în codul în sine, securitatea sistemului nu este împiedicată prin atacuri de buffer-overflow.

Urmează câteva etape simple de precauție care pot ajuta la prevenirea revărsărilor de tampon.

  • Tratarea excepțiilor trebuie valorificată pentru a detecta revărsările de tampon și pentru a preveni executarea codului în cazul în care.
  • Alocați dimensiuni suficient de mari pentru a proteja memoria tampon, astfel încât volumele mari de date neintenționate să fie tratate într-un mod corect.
  • Evitați să utilizați funcții de bibliotecă sau metode ale unor terțe părți care nu sunt verificate în mod obligatoriu pentru revărsări tampon. Exemple obișnuite de astfel de funcții de evitat sunt: ​​(), scanf (), strcpy () Acestea sunt în principal în limbajul C / C ++.
  • Testarea codului ar trebui să țină seama de astfel de vulnerabilități și să testeze riguros codul și să remedieze erorile care pot duce la revărsare.
  • Limbile moderne de programare, sistemele de operare și compilatoarele de cod au evoluat pentru a opri execuția comenzii în caz de revărsare a tamponului. Aceasta a devenit cea mai fiabilă modalitate de a detecta automat preaplinurile de tampon.

Incearca-l tu insuti…

Ați înțeles atât de multe despre Buffer Overflow and Buffer Attacks, de ce să nu încercați să vă codificați ceva rău?

Renunțare la răspundere - Programul următor are caracter ilustrativ și nu trebuie utilizat pentru a provoca vătămări de orice fel. Orice asemănare cu codul rău intenționat este doar coincidență. În plus, sistemele de operare din zilele noastre sunt suficient de inteligente pentru a exista controale preventive împotriva atacurilor tampon.

Mai jos este programul C care poate provoca un potențial depășire a tamponului. De ce alegerea limbii C? Acest lucru se datorează faptului că limbajele de programare mai avansate au fost dezvoltate pentru a face față depășirilor tampon doar în timpul compilării. Deși, în prezent, compilatoarele C au, de asemenea, anumite verificări pentru a evita detectarea revărsării tamponului. Astfel, veți vedea doar un mesaj de eroare care indică faptul că a fost detectată o depășire a tamponului.

#include
#include
#include
int main(int argc, char *argv())
(
char mybuffer(8);
// copy the user input to mybuffer, without any bound checking
printf("Storing user input to mybuffer…\n");
strcpy(mybuffer, argv(1));
printf("mybuffer content= %s\n", mybuffer);
return 0;
)

Ce s-a întâmplat când 123456789 a fost dat ca argument al liniei de comandă pentru program? Programul a generat o eroare care este aruncată atunci când compilatorul detectează revărsarea tamponului. Compilatoarele și sistemele de operare au în prezent un strat de protecție adăugat. Acest strat nu este nimic, ci variabile numite Canare care sunt inițiate la anumite valori la momentul compilării. Aceste variabile sunt apoi stocate în unități de memorie adiacente tamponului. Deci, de fiecare dată când bufferul se revărsă, datele suplimentare se scurg în memoria adiacentă și strică valoarea Canarelor. Imediat ce este detectat orice canar corupt, sistemul anulează execuția.

Un alt exemplu în limbajul C ++:

#include
using namespace std;
int main()
(
char buf(8);
cin>>buf;
return 0;
)

Intrare - 123456789

Rezultat -

Concluzie - revărsare tampon

Deci, acum sunt sigur că ai fi înțeles importanța manipulării tamponului în programul tău. Includeți această practică pentru a verifica limitele tampon în timp ce scrieți, precum și pentru a vă testa codul. Acest lucru vă va ajuta să scrieți cod securizat.

Articole recomandate

Acesta a fost un ghid pentru Ce este revărsarea tamponului. Aici am discutat despre Definiție, prevenire, memorie, atac în buffer Overflow. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Ce este JavaScript?
  2. Ce este Django?
  3. Ce este SQL Developer?
  4. Ce este Azure?