Puhvri ületäitumise rünnakud ja vastumeetmed: Difference between revisions
No edit summary |
|||
Line 20: | Line 20: | ||
Programmeerimiskeeltest seostatakse puhvri ületäitumisega just selliseid vaba süntaksiga keeli nagu C ja C++ , kuhu ei ole sisse ehitatud andmete ülekirjutamise või pöördumiste vastast kaitset ükskõik millistele mälu osadele. Üpris sageli tekib taoline olukord, kui programmeerija ei ole viitsinud teha sisendandmete kontrolli. | Programmeerimiskeeltest seostatakse puhvri ületäitumisega just selliseid vaba süntaksiga keeli nagu C ja C++ , kuhu ei ole sisse ehitatud andmete ülekirjutamise või pöördumiste vastast kaitset ükskõik millistele mälu osadele. Üpris sageli tekib taoline olukord, kui programmeerija ei ole viitsinud teha sisendandmete kontrolli. | ||
== Näide == | |||
Järgmises näites on programmis defineeritud 2 andmeühikut, mis on mälus kõrvuti. 8 baidine stringi puhver A ja 2-baidine integer väli B. Algselt ei sisalda A midagi ja B sisaldab numbrit 1979. Characterid on 1 bait laiad | Järgmises näites on programmis defineeritud 2 andmeühikut, mis on mälus kõrvuti. 8 baidine stringi puhver A ja 2-baidine integer väli B. Algselt ei sisalda A midagi ja B sisaldab numbrit 1979. Characterid on 1 bait laiad | ||
Revision as of 11:26, 30 April 2010
Autor
Heidi Olesk AK31
Kasutasin oma töös põhiliselt Wikipediast võetud ingliskeelset artiklit puhvri ületäitumise kohta.
Sissejuhatus
Puhvri ületäitumist (Buffer Overflow) peetakse Interneti üheks tõsisemaks rünnakuliigiks. Taolisi rünnakuid kasutavad häkkerid sageli kasutaja andmete varastamiseks ja kogu arvuti üle kontrolli saavutamiseks. Lühidalt öeldes tekib puhvri ületäitumine olukorras, kus pahalane saadab liiga palju andmeid puhvrisse ja programm ei kontrolli selle seisundit. Enamus rakendusprogrammidel on fikseeritud suurusega puhvrid andmete hoidmiseks.
Põhimõisted
Puhver mäluosa ajutiseks infosalvestuseks. Näiteks brauser kasutab veebilehekülgede ja nende osade (piltide) ajutiseks hoidmiseks.
Pinu (stack) on andmestruktuur, millest kõigepealt võetakse viimati salvestatud andmeelement. Piltlik võrdlus mündihoidjaga, mille põhjas on vedru ning millesse saab münte lisada vaid pealtpoolt ja et pealt münt kätte saada, tuleb kõigepealt välja võtta pealmine st viimati lisatud münt. [3]
big-endian - jämedaotsaline baitide järjekord andmestringis, kus kõige suurema kaaluga bait on salvestatud kõige esimesena ja selle aadressnumber on kõige väiksem ehk arvu hakatakse lugema kõige „jämedamast“ baidist. [4]
Tekkepõhjused
Arvutiturbes ja programmeerimises on puhvri ületäitumine või puhvri ülejooksmine anomaalia, kus protsess salvestab andmed puhvrisse väljapool seda mälu, mille programmeerija tegelikult on ette näinud. Lisaandmed kirjutavad üle lähedaloleva mälu, mis võib sisaldada teisi andmeid, sealhulgas programmi muutujaid ja programmi voo kontrolli andmeid. See võib põhjustada ebanormaalset programmi käitumist sisaldades mälu pöördumise vigu, vääraid tulemusi, programmi töö lõpetamist või turvasüsteemist läbumurdmist. Puhvri ületäitumine tekib siis, kui andmed on puhvrisse kirjutatud ja andmete kirjutamise piirid ei ole kontrollitud, nii rikutakse andmete väärtused külgnevates mäluosades ja põhiliselt juhtub see char stringide ühest puhvrist teise kopeerimisel. Puhvri ületäitumised võivad olla põhjustatud nendest sisenditest, mis on disainitud koodi täitma. Need on seepärast põhilised tarkvara nõrkused, mida võidakse pahatahtlikult ära kasutada. Piiride kontrollimine võib ära hoida puhvri ületäitumise. Programmeerimiskeeltest seostatakse puhvri ületäitumisega just selliseid vaba süntaksiga keeli nagu C ja C++ , kuhu ei ole sisse ehitatud andmete ülekirjutamise või pöördumiste vastast kaitset ükskõik millistele mälu osadele. Üpris sageli tekib taoline olukord, kui programmeerija ei ole viitsinud teha sisendandmete kontrolli.
Näide
Järgmises näites on programmis defineeritud 2 andmeühikut, mis on mälus kõrvuti. 8 baidine stringi puhver A ja 2-baidine integer väli B. Algselt ei sisalda A midagi ja B sisaldab numbrit 1979. Characterid on 1 bait laiad
Vastumeetmed
Memory Firewall Comodo Groupilt, mis pakub laiaulatuslikke turvalahendusi arvutitele. Comodo Memory Firewall on väike, aga tõhus programm, mis nii ennetab kui ka kaitseb puhvri ületäitumise probleemi. Sisaldub Comodo Internet Security paketis, kuid kes kasutavad teiste tootjate turvalahendusi, võivad Comodo Memory Firewalli arvutile täiendavaks kaitseks tirida. Comodo firma ei ole ainult omakasu peal väljas st praktiliselt iga tasulise versiooni kõrval pakutakse ka tasuta versiooni. Proovi siit: Media:http://personalfirewall.comodo.com/
Kasutatud kirjandus:
[1] http://www.arvutiturve.wordpress.com/2009/11/01/puhvri-uletaitumine-buffer-overflow/
[2] http://math.ut.ee/~mroos/turve/2001/prog_c_4.pdf
[3] http://www.vallaste.ee/index.htm?Type=UserId&otsing=2864
[4] http://vallaste.ee/index.htm?Type=UserId&otsing=6573