Buffer Overflow a causa di un tipo di dati errato

5

Sto leggendo la pagina OWASP sull'overflow del buffer. Si menziona:

l'overflow del buffer può essere impedito utilizzando linguaggi di programmazione di livello superiore che sono strongmente tipizzati e

lo sviluppatore dovrebbe convalidare l'input per impedire l'elaborazione di dati imprevisti, ad esempio del tipo di dati errato

Qualcuno può dare un esempio quando un tipo di dati errato può portare a un overflow del buffer?

    
posta Jake 11.06.2015 - 22:39
fonte

1 risposta

4

Ecco alcuni esempi di C / C ++:

  • Lettura a lungo in uno spazio di memoria int (ad esempio con scanf).

    int i;
    scanf("%ld", &i);
    
  • Usare un float come indice in un ciclo for invece che in una struttura a punti fissi, risultante in una o più iterazioni del previsto.

    char *arr = new char[9];
    for(float j=1; j>0; j=j-0.1) { // will clobber 10 characters, not 9
        *arr++ = 'A';
    
  • copia tra array con diverse larghezze di caratteri

    float floatArr[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
    char charArr[10];
    memcpy(charArr, floatArr, sizeof(float));
    
risposta data 11.06.2015 - 23:01
fonte

Leggi altre domande sui tag