C ++ funksjoner som forårsaker buffer overflow

C ++ funksjoner som forårsaker buffer overflow


I motsetning til andre språk, trenger C og C ++ ikke sjekke størrelsen på innspill før du skriver det inn i en buffer. Hvis inngangen er større enn den plass avsatt i bufferen, blir inngangs skrevet over andre data i programmet stabelen. I tillegg til å forårsake at programmet skal oppføre seg uberegnelig, kan buffer overflow mulig for en angriper å krasje programmet, få tilgang til private data eller selv ta kontroll over en maskin. Unngå usikre C ++ funksjoner er ett av trinnene til å hindre buffer overflow i programmet.

string Funksjoner

Usikre funksjoner som håndterer strenger inkluderer strcpy (), strcat (), sprintf (), vsprintf (), og får (). Disse funksjonene utføre operasjoner på strengvariabler, lagret som matriser av tegn i C ++. Funksjonene lese en streng fra en kilde - for eksempel brukerundersøkelser - kopiere, eller sette sammen en streng for å danne en ny streng. Hvis du ikke sjekke størrelsen på den nye strengen før du skriver den inn i minnet, kan det føre til en buffer overflow.

skanne~~POS=TRUNC

Usikre fil skannefunksjoner inkluderer scanf (), fscanf (), sscanf (), vscanf () vsscanf () og vfscanf (). Skannefunksjoner lese data fra brukerundersøkelser, en fil eller andre kilder og skrive det til en formatert streng. Hvis det skannede dataene er større enn plassen avsatt til formateringsstreng, vil en buffer overflow oppstår.

Microsoft Funksjoner

Usikre funksjoner i Microsoft bibliotekene inkluderer wcscpy (), _tcscpy (), _mbscpy (), wcscat (), _tcscat (), _mbscat () og CopyMemory (). Disse funksjonene er i hovedsak kopiere og sette sammen funksjoner som bruker Microsoft-spesifikke objekter, heller enn strenger eller fildata.

andre funksjoner

Andre usikre C ++ funksjoner inkluderer realpath (), getopt (), getpass (), streadd (), strecpy () og strtrns ().