Introduzione a overflow interi e underflow
Integer overflow e underflow vulnerabilità sono considerati l’ottava vulnerabilità più pericolosa nella lista CWE (Common Weakness Enumeration) Top 25 del 2019. Questi tipi di vulnerabilità sono creati da un uso improprio di tipi di variabili e possono essere sfruttati per bypassare le protezioni contro altri tipi di vulnerabilità, come buffer overflow.
Tipi e dimensioni variabili
Ogni linguaggio di programmazione ha il concetto di diversi tipi di variabili. Un carattere, che può contenere dati di testo, è molto diverso da un numero intero o un float. Tuttavia, al di là di questi tipi generali ci sono ulteriori distinzioni tra le variabili e queste distinzioni sono ciò che rende possibili le vulnerabilità di overflow intero e underflow.
La maggior parte dei linguaggi di programmazione ha il concetto di interi firmati e non firmati. Un intero con segno (come suggerisce il nome) ha un segno, che consente di memorizzare sia valori positivi che negativi. Una variabile senza segno, d’altra parte, può memorizzare solo numeri positivi.
Come mostrato nell’immagine sopra, le variabili firmate e non firmate di una determinata dimensione sono scritte in modo identico nella memoria di un computer. L’unica differenza è come viene interpretato il valore. In un valore firmato, uno iniziale significa un numero negativo, mentre in un valore non firmato, uno nel primo punto significa solo un numero elevato.
L’altra distinzione principale tra diversi tipi di variabili “integer” è la dimensione del valore che possono contenere. I linguaggi di programmazione hanno i concetti di short, integer, long e beyond, ognuno dei quali definisce la dimensione dello spazio di memoria allocato per quella variabile e l’intervallo di valori che può contenere.
Overflow e underflow interi
Le vulnerabilità di overflow e underflow interi si riducono alla conversione non sicura tra variabili firmate e non firmate e tipi di variabili intere di dimensioni diverse. E ‘ generalmente consentito di convertire tra questi diversi tipi e, in molti casi, (Per saperne di più…)