Slik unngår buffer overflow angrep

Slik unngår buffer overflow angrep


Buffer overflow angrep er en vanlig form for angrep for en hacker å forårsake kaos i et system. Det er heap-basert overflow angrep, som er sjeldne, og stable-baserte angrep, som feilaktig har nullstilt minnegrensen for en stabel, forårsaker den til å renne over. Den overfylte data beveger seg inn i andre buffere, ødelegge eller overskrive gyldige data der, potensielt forårsake en kaskade av ødelagte buffere, mye som en kaskade av overfylte champagne glass. For å forhindre buffer overflow-angrep, må du ha spisskompetanse på programmering, tilgang til koden i spørsmålet, og tid og tålmodighet til å gre gjennom sider og sider med kode for å gjennomføre de endringene som er nødvendige for å beskytte dine systemer.

Bruksanvisning

1 Skriv sikkerhetskode for å forhindre overflow angrep. I C, er det en rekke sårbare funksjoner som hackere kan utnytte for å overfylle buffere. Minimer bruken av strcpy (), strcat (), sprintf () og vsprintf (), som ikke utfører grensekontroll. Hvis mulig, unngå å bruke gets (), som spesifiserer ikke hvor mange tegn som skal leses og dermed forlater koden din sårbar. Hvis du bruker scanf (), må du angi en bredde for% s format for å unngå overskridelser.

2 Sjekk om du kan bruke trampoliner for å forhindre buffer overflow. Siden buffer overflow oppstår i stabler av minne og ikke i kode, ville den enkleste løsningen synes å være å hindre stabler fra å kjøre kode ved å sette inn en liten bit av koden for å forby disse handlingene. Dette er mulig i Linux, men er meget vanskelig. Bare noen få kompilatorer bruke små biter av kode som heter trampoliner, som fungerer som en barriere mellom koden kalle en funksjon og selve funksjonen. Så hvis ondsinnet kode prøver å overstyre en buffer, kan trampoline fange opp og opphever hacker forsøk.

3 Implementere kompilatoren verktøy for å gi deg advarsler når du bruker kode som etterlater deg sårbar for angrep. Noen av disse verktøyene vil generere kode som forbyr utenforstående får tilgang ulovlige adresser og vil stenge kode som forsøker slik gjennomføring. Produkter som StackShield og StackGuard er en stor hjelp. StackSheild vil granske retur adressen til en funksjon og avsluttes i tilfelle av en uregelmessighet. StackGuard plasserer en kanarifugl ord på returadresse og sjekker om det ordet har blitt endret, avslutte en funksjon når den har.

4 Installer verktøy som libsafe å sjekke sikkerheten i en dynamisk, kjøretidsmiljø. Libsafe kjører i Linux og sjekker nærmeste returadresse fra en stabel ramme, deretter sørger for at adressen ikke er overskrevet. Libsafe vil også erstatte usikre funksjoner som får (), strcpy () og scanf ().