Apare adesea din verificări de lungime lipsă sau incorecte în limbaje care permit acces direct la memorie. Rezultatele variază de la date corupte și căderi până la, în anumite condiții, execuție neautorizată de cod.
Bufferele pot rezida pe stivă, heap sau în alte regiuni de memorie, iar slăbiciunea poate implica o copiere nesigură, un calcul de dimensiune incorect sau o scriere în afara limitelor. Locația suprascrisă, controlul atacatorului, platforma și protecțiile la rulare modelează exploitabilitatea și consecințele.
Puncte esențiale
Reducerea cauzei de bazăPreferați limbaje și interfețe sigure pentru memorie acolo unde este fezabil, validați lungimile și calculele de numere întregi, evitați operațiile fără limite și revizuiți interacțiunile cu componente native sau nesigure pentru memorie.
VerificareFolosiți revizuire de cod concentrată, analiză statică, diagnostice de compilator, sanitizere, fuzzing și teste de regresie pentru a găsi defecte și a confirma că corecțiile acoperă clasa de bază.
Straturi la rulareProtecțiile de compilator și sistem de operare precum canary, memoria neexecutabilă și randomizarea adreselor pot îngreuna unele exploatări, iar izolarea și privilegiul minim pot constrânge consecințele.
Limitare importantăUn buffer overflow nu permite automat execuția de cod; poate doar corupe date sau termina un proces. Măsurile de atenuare la rulare sunt apărare în profunzime, nu substitut pentru eliminarea operației de memorie defecte.