C ++ Funzioni che causano buffer overflow

August 8

C ++ Funzioni che causano buffer overflow


A differenza di altri linguaggi, C e C ++ non controllano le dimensioni di ingresso prima di scrivere in un buffer. Se l'ingresso è maggiore dello spazio allocato nel buffer, l'ingresso viene sovrascritto altri dati nello stack programma. Oltre a causare il vostro programma a comportarsi in modo irregolare, buffer overflow può consentire a un utente malintenzionato di crash del programma, accedere ai dati privati ​​o anche prendere il controllo di una macchina. Evitando funzioni non sicure C ++ è uno dei passi per prevenire i buffer overflow nel programma.

Funzioni stringa

le funzioni non sicure che gestiscono le stringhe sono strcpy (), strcat (), sprintf (), vsprintf (), e ottiene (). Queste funzioni eseguono operazioni su variabili stringa, memorizzati come array di caratteri in C ++. Le funzioni leggere una stringa da una fonte - come input dell'utente - copia, o concatenare una stringa per formare una nuova stringa. Se non si controlla la dimensione della nuova stringa prima di scrivere in memoria, può causare un buffer overflow.

Funzioni di scansione

le funzioni di scansione di file non sicuri includono scanf (), fscanf (), sscanf (), vscanf () vsscanf () e vfscanf (). le funzioni di scansione leggere i dati da input dell'utente, un file o da altre fonti e scrivono in una stringa formattata. Se i dati acquisiti è più grande lo spazio allocato per la stringa di formattazione, si verifica un overflow del buffer.

Funzioni di Microsoft

funzioni non sicure nelle librerie Microsoft includono wcscpy (), _tcscpy (), _mbscpy (), wcscat (), _tcscat (), _mbscat () e CopyMemory (). Queste funzioni sono principalmente di copia e concatenare le funzioni che utilizzano oggetti Microsoft-specifici, piuttosto che le stringhe o dati di file.

altre funzioni

Altre funzioni non sicuri C ++ includono realpath (), getopt (), getpass (), streadd (), strecpy () e strtrns ().