hackweb
appunti di hacking e tecnologia
IT EN
menĂ¹ principale
menĂ¹ utente
non sei loggato

Integer overflow: quando i numeri girano

5 ottobre 2025 · 1 min di lettura · #binary-exploitation #integer-overflow #memory

Gli interi hanno dimensione finita. uint32 a 0xFFFFFFFF + 1 torna 0. Se una dimensione o un indice va in overflow, i controlli saltano.

int len = a + b;          // a+b va in overflow -> len piccolo/negativo
char *p = malloc(len);    // buffer troppo piccolo
memcpy(p, src, a + b);    // ma la copia usa il valore reale -> overflow

Varianti: signed/unsigned confusion (un negativo diventa enorme in size_t), overflow in moltiplicazioni (count * size), truncation passando da 64 a 32 bit.

Difesa

Controlli con aritmetica sicura: verifica a > MAX - b prima di sommare, usa funzioni di allocazione che controllano l'overflow (calloc, reallocarray), tipi coerenti (size_t), e sanitizer (-fsanitize=integer) in test.


« torna alla home

ultimi post
 
il tuo indirizzo IP:
216.73.216.108
visitatore #0
MOTD:
Ogni astrazione perde da qualche parte.
Qui guardiamo dove.
argomenti