ASLR (Address Space Layout Randomization) on käyttöjärjestelmissä käytetty suojaustekniikka, joka otettiin ensimmäisen kerran käyttöön vuonna 2001. Kaikkien tärkeimpien käyttöjärjestelmien (iOS, Android, Windows, macOS ja Linux) nykyisissä versioissa on ASLR-suojaus. Mutta viime viikolla uusi menetelmä ASLR: n ohittamiseksi on löydetty . Joten, sinun pitäisi olla huolissasi?
Niille, joilla ei ole matalan tason ohjelmointitausta, ASLR voi olla hämmentävä. Sen ymmärtämiseksi sinun on ensin ymmärrettävä virtuaalimuisti.
Mikä on virtuaalimuisti?
Virtuaalimuisti on muistinhallintatekniikka, jolla on monia etuja, mutta se luotiin ensisijaisesti ohjelmoinnin helpottamiseksi. Kuvittele, että Google Chrome, Microsoft Word ja monet muut ohjelmat ovat auki tietokoneessa, jossa on 4 Gt RAM-muistia. Kokonaisuudessaan 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 ne tarvitsevat samanaikaista pääsyä kyseiseen RAM-muistiin.
Käyttöjärjestelmä allokoi muistinpalat kutsutuille ohjelmille . Jos RAM-muistia ei ole tarpeeksi kaikkien sivujen tallentamiseen kerralla, sivut, joita todennäköisesti tarvitaan eniten, tallennetaan hitaammalle (mutta tilavammalle) kiintolevylle. Kun tallennettuja sivuja tarvitaan, ne vaihtavat tilaa, jolloin RAM-muistissa on vähemmän tarpeellisia sivuja. Tätä prosessia kutsutaan kutsumiseksi, ja se antaa nimensä pagefile.sys-tiedosto Windowsissa .
Virtuaalimuisti helpottaa ohjelmien hallita omaa muistiaan ja myös parantaa niiden turvallisuutta. Ohjelmien ei tarvitse huolehtia siitä, mihin muut ohjelmat tallentavat tietoja tai kuinka paljon RAM-muistia on jäljellä. He voivat vain pyytää käyttöjärjestelmältä lisämuistia (tai palauttaa käyttämättömän muistin) tarpeen mukaan. Ohjelma näkee vain yhden jatkuvan muistiosoitteen yksinomaiseen käyttöönsä, nimeltään virtuaaliset osoitteet. Ohjelma ei saa etsiä toisen ohjelman muistia.
Kun ohjelman on käytettävä muistia, se antaa käyttöjärjestelmälle virtuaalisen osoitteen. Käyttöjärjestelmä ottaa yhteyttä keskusyksikön muistinhallintayksikköön (MMU). MMU kääntää virtuaalisten ja fyysisten osoitteiden välillä palauttamalla nämä tiedot käyttöjärjestelmään. Missään vaiheessa ohjelma ei ole suoraan vuorovaikutuksessa RAM-muistin kanssa.
Mikä on ASLR?
ASLR (Address Space Layout Randomization) -sovellusta käytetään ensisijaisesti suojaamaan puskurin ylivuotohyökkäyksiltä. Puskurin ylivuotossa hyökkääjät syöttävät toiminnolle niin paljon roskapostitietoja kuin se pystyy käsittelemään, mitä seuraa haitallinen hyötykuorma. Hyötykuorma korvaa tiedot, joita ohjelma aikoo käyttää. Ohjeet siirtyä toiseen kohtaan koodissa ovat yleinen hyötykuorma. Kuuluisa JailbreakMe-menetelmä jailbreaking iOS 4: lle esimerkiksi käytti puskurin ylivuotohyökkäystä, joka kehotti Applea lisäämään ASLR: n iOS 4.3: een.
Puskurin ylivuoto edellyttää, että hyökkääjä tietää, missä ohjelman kukin osa on muistissa. Tämän selvittäminen on yleensä vaikea yritys ja virhe. Kun tämä on todettu, heidän on luotava hyötykuorma ja löydettävä sopiva paikka sen syöttämiseen. Jos hyökkääjä ei tiedä kohdekoodin sijaintia, sen hyödyntäminen voi olla vaikeaa tai mahdotonta.
ASLR toimii virtuaalisen muistinhallinnan rinnalla satunnaistamaan muistissa olevan ohjelman eri osien sijainnit. Aina kun ohjelma suoritetaan, komponentit (mukaan lukien pino, kasa ja kirjastot) siirretään eri osoitteeseen virtuaalimuistissa. Hyökkääjät eivät voi enää kokeilla erehdyksellä oppia kohteensa, koska osoite on erilainen joka kerta. Yleensä sovellukset on käännettävä ASLR-tuella, mutta tästä on tulossa oletusarvo, ja sitä vaaditaan jopa Android 5.0: lla ja uudemmilla.
Joten suojaako ASLR edelleen sinua?
Viime tiistaina SUNY Binghamtonin ja Kalifornian yliopiston Riversiden tutkijat esittivät paperin nimeltä Hyppää yli ASLR: Hyökkää haaran ennustajia ohittamaan ASLR . Asiakirjassa kuvataan tapa hyökätä haaran kohdepuskuriin (BTB). BTB on osa prosessoria, joka nopeuttaa lausuntoja ennustamalla lopputuloksen. Kirjoittajien menetelmää käyttämällä on mahdollista määrittää tunnettujen haaraohjeiden sijainnit käynnissä olevassa ohjelmassa. Kyseinen hyökkäys tehtiin Linux-koneessa, jossa oli Intel Haswell -prosessori (julkaistiin ensimmäisen kerran vuonna 2013), mutta sitä voidaan todennäköisesti soveltaa mihin tahansa nykyaikaiseen käyttöjärjestelmään ja prosessoriin.
Sinun ei kuitenkaan tarvitse 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 vaativat hyökkääjältä enemmän ponnisteluja, ja entropian (satunnaisuuden) määrän lisääminen voi tehdä Jump Over -hyökkäyksestä mahdotonta. Todennäköisesti uudemmat käyttöjärjestelmät ja prosessorit ovat immuuneja tälle hyökkäykselle.
Joten mitä on jäljellä tehdä? Jump Over bypass on uusi, eikä sitä ole vielä havaittu luonnossa. Kun hyökkääjät hyödyntävät sitä, virhe lisää hyökkääjän mahdollisesti aiheuttamia vahinkoja laitteellesi. Tämä käyttöoikeustaso ei ole ennennäkemätön; Microsoft ja Apple toteuttivat ASLR: n vain käyttöjärjestelmissään, jotka julkaistiin vuonna 2007 ja sitä uudemmissa. Vaikka tästä hyökkäystyylistä tulee yleistä, et ole pahempi kuin olit Windows XP: n aikoina.
Muista, että hyökkääjien on edelleen hankittava koodinsa laitteellesi vahingon tekemiseksi. Tämä virhe ei tarjoa heille muita tapoja tartuttaa sinua. Kuten aina, sinun pitäisi noudattaa turvallisuuden parhaita käytäntöjä . Käytä virustorjuntaohjelmia, pysy poissa luonnosverkkosivustoista ja ohjelmista ja pidä ohjelmistosi ajan tasalla. Noudattamalla näitä vaiheita ja pitämällä haitalliset toimijat poissa tietokoneeltasi, olet yhtä turvallinen kuin koskaan aiemmin.
Kuvahyvitys: Steve / Flickr