Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuMarja Keskinen Muutettu yli 9 vuotta sitten
1
Pinon ylivuodon estäminen Mikko Toivonen & Antti Mattila
2
Menetelmät: - Rautapohjainen - Ohjelmistopohjainen
3
Rautapohjainen: - Muistialuiden määrittely - StackGhost
4
Muistialueiden määrittely - Määritellään muistialueet sen mukaan onko siellä suoritettavaa koodia vai pelkkää dataa. - Data-alueiksi merkityiltä alueilta ei sallita koodin suorittamista. - Näin voidaan estää hakkerin koodin suorittaminen vaikka hän saisikin pinon ylivuodon avulla omaa koodiaan järjestelmään
5
StackGhost - Löytyy ainostaan Sunin Sparc ja Sparc64-prosessoreista - Käyttää hyväkseen prosessoriin rakennettua pinon paluu- osoitteiden tarkistusta.
6
Ohjelmistopohjainen: - IDS - Stack-smashing protection - Executable space protection - Safe libraries - Ohjelmointikielen valinta
7
IDS (Intrusion Detection System) - Menetelmä tunnistaa mahdolliset yritykset aiheuttaa pinon ylivuoto. - Estää paketit, jotka sisältävät suuren määrän NoP (No Operation) dataa
8
Stack Smashing Protection - Tunnistaa muistin ylivuodot tarkkailemalla pinon paluuosoitetta. Jos pinossa on tapahtunut muutos tietyn tapahtuman yhteydessä, lopetetaan ohjelman toiminta. - Tarkkailu suoritetaan tallentamalla pinoon paluuosoitteen eteen sattunnainen muuttuja (“canary”), joka tallennetaan myös erilliseen muistipaikkaan. Haettaessa paluuosoitetta verrataan sen yhteydessä ollutta muuttujaa erilleen tallennettuun muuttujaan.
9
- Jos pinossa on tapahtunut ylivuoto ja paluuosoite on muuttunut on myös sen yhteydessä ollut satunnaismuuttujakin muuttunut. Tällöin ohjelma keskeytetään.
10
Executable Space Protection - Estetään pinon ylivuoto satunnaistamalla käytetty muistialue. - Varmistetaan, että muistialueeseen ei ole kirjoitus- ja suoritusoikeuksia. - Linuxissa tämän hoitaa: - PaX - Exec-Shield
11
- Windowsissa (2003 Server) hoidetaan MS:n oman DEP-tekniikan avulla. Tässä asetetaan muistialuieta suoritus-kielto tilaan, eli ks. muistialueelta ei voida suorittaa komentoja. - Toteutusta varten tarvitaan yhteensopivaa rautaa, joka osaa merkita muistialueita DEP:n ohjeiden mukaan, erityisellä merkki-bitillä. - Prosessori tarkistaa NX-bitin tilan ja suhtautuu pinossa olevaan dataan sen mukaisesti, bitin ollessa aktiivinen pinossa olevia käskyä ei suoriteta. (AMD NX No- Execute, Intel XD Execute-Disable)
12
Ohjelmointikielen oikea valinta - C ja C++ -kielillä ei tehdä datatarkistusta, mikä estäisi puskurin ylivuodon. - Esim. Java ja Pascal tarkastavat datan, jotta puskurin ylivuotoja ei pääse syntymään
13
Lähteet: http://en.wikipedia.org/wiki/Buffer_overflow
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.