Puhvri ületäitumise rünnakud ja vastumeetmed

From ICO wiki
Jump to navigationJump to search

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.

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