Selv de mest upretensiøse aspekter av et program kan presentere sikkerhetstrusler . Grunnleggende brukerundersøkelser kan kortslutte et program interne koden på ulike måter. Inngangen kan bruke arbeidet i utskrift funksjoner for å få tilgang til programmets flyt av kontroll ved å overstyre grensene av funksjon . Eller , det kan overkjørt buffer grensene som er satt for det som programmereren å påvirke data utenfor sin programmerer - utpekte plass . Uansett , påvirker brukerens input hvordan programmet utfører , potensielt mot ondsinnede ender. Formatstrenger
Formatering strenger i C og C + + er en del av input og output funksjoner. Formatet strengen inneholder data til utdata til skjermen. Formatstrenger har to hovedkomponenter . Den første er den grunnleggende strengen til å skrive ut , inneholder tegn og tegnsetting . Den andre komponenten inneholder spesialtegn merket med prosentpoeng tegn som fungerer som plassholdere for variable data . Disse symbolene finnes i strengen , og erstattes i løpet av produksjonen av verdiene holdt i variabler . Følgende eksempel illustrerer en grunnleggende printf uttalelse med et format streng : en
røye x = " c "; int y = 10 ;
printf ( " Skrive ut tegn % c og desimalerelementer % d" , , x , y ) ;
strengformateringsangrep
usikkerhet av formatstrenger ligger i hvordan symbolene innebygd i strengreferanse andre deler av programmet . For eksempel kan en angriper inn data i en variabel som brukes i et format string injisere symboler som tillater henne å få tilgang til andre rammer for gjennomføring i programmet. Ved å gjøre det , kan angriperen endre verdiene i variablene utenfor omfanget av print funksjon . Videre kan den angriper muligens få tilgang verdier i hukommelsen som representerer plasseringen av funksjoner. Angriperen kan deretter endre denne verdien til å peke til en annen funksjon , og dermed endre flyten av gjennomføring og vesentlig kapre programmet.
Inngangsbuffere
Input buffere er mellomrom for datalagring opprettet av programmerer til å holde data oppgitt av brukeren . Oftest inngangsbuffere håndtere brukerens input for innlogging og passord. Spesielt for programmeringsspråket C , som ikke inkluderer innfødte streng håndtering , inngangsbuffere eksistere som matriser av karakterer med et sett størrelse. I dette tilfellet er det opp til programmereren å fordele data for brukerens input .
Buffer Overflow
En angriper kan dra nytte av begrensningene i disse buffere ved flom det med data . I den enkleste eksempelet , mente en rekke tegn til å holde en logg i navnet kan ha 20 plass tildelt, men en angriper gir det over tjue tegn til å behandle . I dette tilfellet , de ekstra tegnene overskrive minneplasser umiddelbart etter tabellen. Disse minneplasser muligens holde data som er relevante for programmet kjøres , slik som betingede variabler for flytkontroll uttalelser eller referanser til funksjoner på stakken . Som format string angrep, kan dette egentlig den angriper å kapre programmet.