Hvordan Stopp C bufferoverløp

Hvordan Stopp C bufferoverløp


Buffer overflow føre til uventet program atferd som følge av feilaktig skrive minnet. En buffer er en sammenhengende blokk med minne av en fast størrelse som brukes til å lagre data, for eksempel en rekke tegn. C programmeringsspråket kan du skrive data til buffer, selv om det er for stort.

I tillegg til å gjøre programmet krasjer, kan angripere bruker buffer overflow å kjøre ondsinnet kode på systemer som kjører programmet. Til tross for alle forsøk på å beskytte mot buffer overflow utnytter, er det fortsatt en vanlig utnyttet angrepsvektor.

I C, kan buffer overflow reduseres ved å følge beste praksis for sikker koding.

Bruksanvisning

1 Unngå C bibliotekfunksjoner strcpy, strcat, sprtinf, vsprintf, får og scanf. Disse funksjonene er usikre og ikke utfører grensekontroll før du skriver inn til eller lese fra en buffer, noe som resulterer i buffer overflow. Grensekontroll er en metode for å bruke betinget utsagn - som hvis da - for å sjekke om en lese- eller skrive er innenfor grensen av buffer.

2 Ugyldig kode kjøres fra bunken. Stabelen er der minnet som buffere lagres mens søknaden utfører. Ondsinnet kode kjøres ved å skrive det inn i bunken, der det blir så utført. Selv om gjennomføring kan være vanskelig, noen versjon av Linux og Gnu C Compiler (GCC) er tilgjengelig som kan forhindre dette.

3 Bruk en compilar som vil se etter potensielle buffer overflow forhold. Utvidelser og oppdateringer er tilgjengelig for C-kompilatorer, for eksempel C, som varsler deg når du bruker usikre funksjon og forsøke å utføre grensekontroll i koden.

4 Bruk gratis programmer som Stack Shield og Stack Guard å oppdage og beskytte mot bufferoverløp. (Se Resources.)