Introducere în Integer Overflow și underflow
vulnerabilitățile Integer overflow și underflow sunt considerate a opta cea mai periculoasă vulnerabilitate din lista comună de slăbiciune (CWE) Top 25 din 2019. Aceste tipuri de vulnerabilități sunt create prin utilizarea abuzivă a tipurilor de variabile și pot fi exploatate pentru a ocoli protecțiile împotriva altor tipuri de vulnerabilități, cum ar fi revărsările de tampon.
tipuri și dimensiuni variabile
fiecare limbaj de programare are conceptul de diferite tipuri de variabile. Un caracter, care poate conține date text, este foarte diferit de un număr întreg sau de un flotor. Cu toate acestea, dincolo de aceste tipuri generale sunt distincții suplimentare între variabile, iar aceste distincții sunt cele care fac posibile vulnerabilitățile de revărsare și subflow întreg.
majoritatea limbajelor de programare au conceptul de numere întregi semnate și nesemnate. Un număr întreg semnat (așa cum sugerează și numele) are un semn, permițându-i să stocheze atât valori pozitive, cât și negative. O variabilă nesemnată, pe de altă parte, poate stoca doar numere pozitive.
așa cum se arată în imaginea de mai sus, variabilele semnate și nesemnate de o anumită dimensiune sunt scrise identic în memoria unui computer. Singura diferență este modul în care este interpretată valoarea. Într-o valoare semnată, una principală înseamnă un număr negativ, în timp ce într-o valoare nesemnată, una din primul loc înseamnă doar un număr mare.
cealaltă distincție principală între diferite tipuri de variabile „întregi” este dimensiunea valorii pe care o pot conține. Limbajele de programare au conceptele de scurt, întreg, lung și dincolo, fiecare definind dimensiunea spațiului de memorie alocat acelei variabile și gama de valori pe care le poate conține.
overflow-uri și underflow-uri întregi
vulnerabilitățile Overflow și underflow-uri întregi se reduc la conversia nesigură între variabilele semnate și nesemnate și tipurile de variabile întregi de dimensiuni diferite. În general, este permisă conversia între aceste tipuri diferite și, în multe cazuri, (Citește mai mult…)