Mikä on ASLR ja miten se pitää tietokoneen suojatuna?
Osoitetilan asettelu Randomization (ASLR) on käyttöjärjestelmissä käytetty tietoturvatekniikka, joka toteutettiin ensimmäisen kerran vuonna 2001. Kaikkien tärkeimpien käyttöjärjestelmien (iOS, Android, Windows, MacOS ja Linux) nykyiset versiot sisältävät ASLR-suojan. Mutta viime viikolla on löydetty uusi menetelmä ASLR: n ohittamiseksi. Joten, olisitko huolissasi?
Niille, joilla ei ole matalan tason ohjelmointitausta, ASLR voi olla hämmentävää. Sen ymmärtämiseksi sinun täytyy ensin ymmärtää virtuaalimuisti.
Mikä on virtuaalimuisti?
Virtual Memory on muistinhallintatekniikka, jolla on monia etuja, mutta se luotiin ensisijaisesti ohjelmoinnin helpottamiseksi. Kuvittele, että sinulla on Google Chrome, Microsoft Word ja useita muita ohjelmia, jotka ovat avoinna tietokoneessa, jossa on 4 Gt: n RAM-muistia. Kokonaisuutena tämän tietokoneen ohjelmat käyttävät paljon enemmän kuin 4 Gt RAM-muistia. Kaikki ohjelmat eivät kuitenkaan ole aina aktiivisia tai tarvitsevat samanaikaisesti pääsyä kyseiseen RAM-muistiin.
Käyttöjärjestelmä jakaa muistipaloja ohjelmiin, joita kutsutaan sivut. Jos RAM-muistia ei ole riittävästi kaikkien sivujen tallentamiseksi kerrallaan, vähiten todennäköisiä sivuja tallennetaan hitaampaan (mutta tilavampaan) kiintolevyyn. Kun tallennetut sivut tarvitaan, ne vaihtavat tilaa, jossa on vähemmän tarpeellisia sivuja tällä hetkellä RAM-muistissa. Tätä prosessia kutsutaan sivunvaihdoksi ja se antaa nimensä sivulle pagefile.sys Windowsissa.
Virtuaalimuisti helpottaa ohjelmien hallintaa omaa muistiaan ja tekee niistä myös turvallisempia. Ohjelmien ei tarvitse huolehtia siitä, missä muut ohjelmat tallentavat tietoja, tai kuinka paljon RAM-muistia on jäljellä. He voivat vain kysyä käyttöjärjestelmältä lisämuistia (tai palauttaa käyttämättömän muistin) tarpeen mukaan. Kaikki ohjelma näkee yhden ainoan jatkuvan muistiosoitteiden kappaleen sen yksinomaiseen käyttöön, jota kutsutaan virtuaalisiksi osoitteiksi. Ohjelma ei saa tarkastella toisen ohjelman muistia.
Kun ohjelma tarvitsee muistia, se antaa käyttöjärjestelmälle virtuaalisen osoitteen. Käyttöjärjestelmä ottaa yhteyttä CPU: n muistinhallintayksikköön (MMU). MMU kääntää virtuaalisten ja fyysisten osoitteiden välillä ja palauttaa nämä tiedot käyttöjärjestelmään. Ohjelma ei ole milloinkaan suoraan vuorovaikutuksessa RAM-muistin kanssa.
Mikä on ASLR?
Address Space Layout Randomization (ASLR) käytetään ensisijaisesti suojaamaan puskurin ylivuotohyökkäyksiä vastaan. Puskurin ylivuodossa hyökkääjät syöttävät funktion yhtä paljon roskapostia kuin se pystyy käsittelemään, minkä jälkeen seuraa haitallista hyötykuormaa. Hyötykuorma korvaa tiedot, jotka ohjelma aikoo käyttää. Ohjeita siirtyä toiseen koodipisteeseen ovat yleinen hyötykuorma. Kuuluisa JailbreakMe-menetelmä jailbreaking iOS 4 käytti esimerkiksi puskurin ylivuotohyökkäystä, joka kehotti Appleia lisäämään ASLR: n iOS 4.3: een.
Puskurin ylivuodot edellyttävät, että hyökkääjä tietää, missä kukin ohjelman osa sijaitsee muistissa. Tämän selvittäminen on tavallisesti vaikea prosessi ja virhe. Sen jälkeen, kun olet määrittänyt, että heidän on käsiteltävä hyötykuorma ja löydettävä sopiva paikka pistää se. Jos hyökkääjä ei tiedä, mihin kohde-koodi sijaitsee, sen hyödyntäminen voi olla vaikeaa tai mahdotonta.
ASLR toimii virtuaalimuistinhallinnan rinnalla satunnaistamalla muistin eri osien sijainnit. Joka kerta, kun ohjelmaa ajetaan, komponentit (mukaan lukien pino, kasa ja kirjastot) siirretään eri osoitteeseen virtuaalimuistissa. Hyökkääjät eivät voi enää oppia, missä niiden kohde on koettelemus ja virhe, koska osoite on erilainen joka kerta. Yleensä sovellukset on koottava ASLR-tuen avulla, mutta tämä on tulossa oletusarvoksi, ja sitä tarvitaan jopa Android 5.0: ssa ja uudemmissa versioissa.
Niinpä ASLR suojaa sinua edelleen?
Viime tiistaina SUNY Binghamtonin ja Kalifornian yliopiston tutkijat Riverside esittelivät Jump Over ASLR: n: hyökkäävän haaran ennakoijat ohittamaan ASLR: n. Paperi kuvaa tapaa hyökätä Branch Target -puskuriin (BTB). BTB on osa prosessoria, joka nopeuttaa lausuntoja ennustamalla tulosta. Tekijöiden menetelmää käyttäen on mahdollista määrittää tunnetun haaroitusohjeen sijainnit käynnissä olevassa ohjelmassa. Kyseinen hyökkäys tehtiin Linux-koneella, jossa oli Intel Haswell -prosessori (julkaistiin ensimmäisen kerran vuonna 2013), mutta jota voitaisiin todennäköisesti soveltaa kaikkiin nykyaikaisiin käyttöjärjestelmiin ja prosessoreihin..
Sitä vastoin sinun ei pitäisi välttämättä epätoivoa. Paperi tarjosi muutamia tapoja, joilla laitteisto- ja käyttöjärjestelmäkehittäjät voivat lieventää tätä uhkaa. Uudemmat, hienorakeiset ASLR-tekniikat vaatisivat hyökkääjältä enemmän vaivaa, ja entropian (satunnaisuus) määrän lisääminen voi tehdä hyppy-hyökkäyksen mahdottomaksi. Todennäköisemmin uudemmat käyttöjärjestelmät ja prosessorit ovat immuuneja tästä hyökkäyksestä.
Joten mitä on jäljellä sinä tehdä? Hyppää yli ohitus on uusi, eikä sitä ole vielä havaittu luonnossa. Kun hyökkääjät hyödyntävät sitä, virhe lisää mahdollisen vahingon, jonka hyökkääjä voi aiheuttaa laitteellesi. Tämä käyttöoikeustaso ei ole ennennäkemätön; Microsoft ja Apple toteuttivat vain ASLR: n niiden käyttöjärjestelmissä, jotka julkaistiin vuonna 2007 ja myöhemmin. Vaikka tämä hyökkäystyyli muuttuu tavalliseksi, et tule olemaan huonompi kuin olisit Windows XP: n päivinä.
Muista, että hyökkääjät joutuvat edelleen hankkimaan koodin laitteellasi tekevän vahingon. Tämä virhe ei anna heille mitään muita tapoja tartuttaa sinut. Kuten aina, sinun on noudatettava turvallisuuden parhaita käytäntöjä. Käytä virustorjuntaohjelmaa, pysy poissa luonnollisista sivustoista ja ohjelmista ja pidä ohjelmistosi ajan tasalla. Noudattamalla näitä ohjeita ja pitämällä haittaohjelmat pois tietokoneesta, olet yhtä turvallinen kuin olet koskaan ollut.
Kuvaluotto: Steve / Flickr