Neowin - Raziskovalca Mark Dowd iz IBM-a in Alexander Sotirov in podjetja VMware sta na letošnji konferenci BlackHat v Washingtonu predstavila predavanje z naslovom How To Impress Girls With Browser Memory Protection Bypasses.
V predavanju sta predstavila povsem nov način onesposobljenja vseh mehanizmov za zaščito pomnilnika RAM, ki jih uporablja Vista. Pokazala sta kako je mogoče zaobiti Vistin Address Space Layout Randomization, Data Execution Prevention ter ostale mehanizme s katerimi se Vista skuša zaščititi pred zlonamerno kodo, ki se skuša naložiti preko spletnega brskalnika.
V predstavitvi sta tako pokazala kako je mogoče z različnimi jeziki (Java, ActiveX, .NET) preko okužene spletne strani naložiti kakršnokoli vsebino na katerokoli lokacijo v pomnilniku RAM.
Po mnenju nekaterih uglednih varnostnih raziskovalcev, npr. Dina Dai Zovija, pa pri tem ne gre samo za še eno varnostno ranljivost, pač pa sta raziskovalca predstavila kako zaobiti temeljne varnostne mehanizme Viste, hkrati pa odkrila povsem novo vrsto napada, ki ga bo mogoče aplicirati tudi na druge sisteme.
Se igra končuje - ali šele začenja?
Novice » Varnost » Varnost v Visti: igra končana?
darkolord ::
Nič novega. Večino tega so že vseskozi znana dejstva - če želiš, da slabo napisan software (recimo FF ali ActiveX zadeve) laufa na novejši varnejši različici OSa, mu moraš pač znižati security.
Pa mimogrede, nič od tega (ActiveX, Java, .NET) niso skriptni jeziki.
Pa mimogrede, nič od tega (ActiveX, Java, .NET) niso skriptni jeziki.
Zgodovina sprememb…
- spremenilo: darkolord ()
poweroff ::
Moja napaka: namesto "skriptni jeziki" sem hotel napisati "spletni jeziki". Zdaj sem pridevnik dal kar ven, saj vsaj Java ni zgolj spletni jezik.
sudo poweroff
Spc ::
Ne, niti ni tega nihče nikoli trdil.
Seveda so trdili .. na microsoftu so trdili da je vista 100% varna zaradi novih zaščit, ki so jih vgradili v visto.
poweroff ::
Ja, OK. .NET je framework, ActiveX je pa MSIE injection tool. :-)
Ampak novica je o nečem drugem. Ne bodimo tako pikolovski, ko so pravi problemi drugje. :-)))
Ampak novica je o nečem drugem. Ne bodimo tako pikolovski, ko so pravi problemi drugje. :-)))
sudo poweroff
Utk ::
Kolk sigurno je, da se podobne stvari ne da naredit z javo tudi v linuxu? Seveda če laufaš browser kot root, in morda še kak pogoj.
Mavrik ::
Ja, OK. .NET je framework, ActiveX je pa MSIE injection tool. :-)
Ampak novica je o nečem drugem. Ne bodimo tako pikolovski, ko so pravi problemi drugje. :-)))
Mal težko je verjeti novici, ki širi napačne informacije ;)
The truth is rarely pure and never simple.
poweroff ::
Imaš linke in lahko prebereš prosojnice, downloadaš primere kode, itd.
Mislim, da ni večjih težav - če je seveda volja. :-))
Mislim, da ni večjih težav - če je seveda volja. :-))
sudo poweroff
PaX_MaN ::
/flame on
Ja, ja, Linux je Jošt, Vista pa Ementaler.
/flame off
Kot bi rekel nekdo, nekoč, sedeč na nizkem zidku:
"Nič ni tako varno, kot pravijo da je."
Ja, ja, Linux je Jošt, Vista pa Ementaler.
/flame off
Kot bi rekel nekdo, nekoč, sedeč na nizkem zidku:
"Nič ni tako varno, kot pravijo da je."
Brane2 ::
Ne gre za Linux vs Winsi vojno.
Gre za IZDELEK MONOPOLISTA, ki ga je z mogočno reklamno in drugo mašinerijo turil vsepovsod.
Absolutna varnost je bila pridigana kot ena od stvari, ki da je že sama vredna nakupa.
Druga je bil povsem oh in sploh novi datotečni sistem, ki bo obenem podatkovna baza.
Tretja so bile optimizacije kernela za DX10, brez katerega DX10 baje ne bi bil možen.
Vse troje se je izkazalo kot bull.
Gre za IZDELEK MONOPOLISTA, ki ga je z mogočno reklamno in drugo mašinerijo turil vsepovsod.
Absolutna varnost je bila pridigana kot ena od stvari, ki da je že sama vredna nakupa.
Druga je bil povsem oh in sploh novi datotečni sistem, ki bo obenem podatkovna baza.
Tretja so bile optimizacije kernela za DX10, brez katerega DX10 baje ne bi bil možen.
Vse troje se je izkazalo kot bull.
On the journey of life, I chose the psycho path.
Tr0n ::
Pokazi mi, kjer so trdili, da bo Vista absolutno varna?
Ne govorit neumnosti. Saj ste ze v IT in racunalniskem svetu dovolj dolgo, da veste, da je ze sam racunalnik na hardware levelu ne-varen, kaj sele software.
Ne govorit neumnosti. Saj ste ze v IT in racunalniskem svetu dovolj dolgo, da veste, da je ze sam racunalnik na hardware levelu ne-varen, kaj sele software.
Zgodovina sprememb…
- spremenilo: Tr0n ()
ender ::
Kolk sigurno je, da se podobne stvari ne da naredit z javo tudi v linuxu? Seveda če laufaš browser kot root, in morda še kak pogoj.Poanta je, da na Visti browser v vsakem primeru teče z minimalnimi privilegiji (z manjšimi, kot običajen uporabnik - mimogrede, če na Visti nisi izklopil UAC, potem privzeto tudi administratorji delajo z omejenimi pravicami, in morajo posebej dovoliti zvišanje privilegijev).
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
cache invalidation, naming things and off-by-one errors.
MrStein ::
neowin je tudi pisal "scripting languages, such as Java, ActiveX".
PDF pa omenja Win2008 SP0, ki ne obstaja (obstaja samo SP1 verzija)
PDF pa omenja Win2008 SP0, ki ne obstaja (obstaja samo SP1 verzija)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Brane2 ::
Pokazi mi, kjer so trdili, da bo Vista absolutno varna?
Ne govorit neumnosti. Saj ste ze v IT in racunalniskem svetu dovolj dolgo, da veste, da je ze sam racunalnik na hardware levelu ne-varen, kaj sele software.
Sedaj linka ne bom iskal, spomnim se pa interviewa z MS gurujem, ki je govoril o detajlih nove zasnov ein je rekel natanko to - da zadevo pozna do obisti in da lahko trdi da gre za produkt, ki ga bo lahko pustil brez posebnega AVja na mašini svojega sina.
On the journey of life, I chose the psycho path.
Matrin ::
Hm, če ti pusti prosto šariti po RAM-u, kaj te potem ustavi, da bi dostopal do mest na katerih se nahaja nek del OS-a? Takšnemu napadu bi bil dovzeten vsak OS, tudi linux-ov root ne bi pomagal, mar ne?
Zgodovina sprememb…
- spremenil: Matrin ()
Utk ::
Sej, zakaj pa ne. Če laufaš pomemben strežnik na visti, boš malo bolj pazil (oz. ne boš izbral viste), za večino ljudi je pa brez veze paničarit. Absolutne varnosti pa pač ni.
Brane2 ::
NE vem, če je to ravno res. Demoja nisem sprobal ( itak pa nikjer nimam Viste in ga ne bi imel kje ) ampak tista NET luknja je videti kot zelo velik deal celo za kako babico, ne samo za upravljalca strežnika.
On the journey of life, I chose the psycho path.
Utk ::
Ja če bo babica iskala kreke za photoshop po .ru straneh, bo najbrž kaj fasala ja.
No, zdej lahko samo čakamo popravke, ki bojo te stvari enostavno po defaultu izklople, potem si jih pa naj vklaplja kdor želi ko želi :)
No, zdej lahko samo čakamo popravke, ki bojo te stvari enostavno po defaultu izklople, potem si jih pa naj vklaplja kdor želi ko želi :)
Zgodovina sprememb…
- spremenil: Utk ()
poweroff ::
Ni čisto tako. Sem že naletel na povsem legitimno spletno stran, ki pa jo pohekali in te skušali okužiti.
Tako da teorije o ruskih piratskih straneh - padejo v vodo.
Tako da teorije o ruskih piratskih straneh - padejo v vodo.
sudo poweroff
Azrael ::
Malo off topic
Kaj lahko storiš, če naletiš na "čudno" spletno stran, kjer različni AV (testirano z AVG in Avira) glasno protestirajo? Stran je na videz samo (gnila in dolgočasna) predstavitev (z nekaj za lase privlečenimi dejstvi) nekega SLO s.p, ki o računalnikih baje nima pojma in so mu stran postavili mojstri, ki se niti podpisati ne upajo.
Gogle ne sporoča, da "stran lahko škoduje vašemu računalniku".
Whois vrže ven za ime in ostale podatke o domeni zbirko znakov, kot bi nekdo samo kresnil po tipkovnici. Linka ne bom dal, da ne bom kriv, da je kdo moral nalagati sistem.
Kaj lahko storiš, če naletiš na "čudno" spletno stran, kjer različni AV (testirano z AVG in Avira) glasno protestirajo? Stran je na videz samo (gnila in dolgočasna) predstavitev (z nekaj za lase privlečenimi dejstvi) nekega SLO s.p, ki o računalnikih baje nima pojma in so mu stran postavili mojstri, ki se niti podpisati ne upajo.
Gogle ne sporoča, da "stran lahko škoduje vašemu računalniku".
Whois vrže ven za ime in ostale podatke o domeni zbirko znakov, kot bi nekdo samo kresnil po tipkovnici. Linka ne bom dal, da ne bom kriv, da je kdo moral nalagati sistem.
Nekoč je bil Slo-tech.
poweroff ::
Poglej si zgornji PDF, če se ti da hecati z analizo. Lahko pa mi UL pošlješ preko ZS. Ali pa obvestiš SI-CERT.
sudo poweroff
denial ::
Really impressive. And I'm not a girl :)
SELECT finger FROM hand WHERE id=3;
Zgodovina sprememb…
- spremenil: denial ()
destroyer2k ::
Brane2
Vem kaj misliš in tudi niso se zmotili. Varnost je recimo skoraj nemogoče odkleniti, ampak kot tudi v pentagonu, kjer je varnost nemogoče vdreti, še vedno obstajajo stranska vdretja. Drugače trdili so pravilno, ampak kot z vsem zaščitam na celem svetu, še vedno obstaja stransko vdretje.
Vem kaj misliš in tudi niso se zmotili. Varnost je recimo skoraj nemogoče odkleniti, ampak kot tudi v pentagonu, kjer je varnost nemogoče vdreti, še vedno obstajajo stranska vdretja. Drugače trdili so pravilno, ampak kot z vsem zaščitam na celem svetu, še vedno obstaja stransko vdretje.
Pyr0Beast ::
Ahh, dandanes sploh vdirati ne rabiš, vrata so že odprta ! [:D]
Some nanoparticles are more equal than others
Good work: Any notion of sanity and critical thought is off-topic in this place
Good work: Any notion of sanity and critical thought is off-topic in this place
gruntfürmich ::
Važn da se za una dva zdej babe tepejo! :D
daleč najboljši komentar^^
"Namreč, da gre ta družba počasi v norost in da je vse, kar mi gledamo,
visoko organizirana bebavost, do podrobnosti izdelana idiotija."
Psiholog HUBERT POŽARNIK, v Oni, o smiselnosti moderne družbe...
visoko organizirana bebavost, do podrobnosti izdelana idiotija."
Psiholog HUBERT POŽARNIK, v Oni, o smiselnosti moderne družbe...
carot ::
Ma dej, sploh nismo vec varni, zmeraj manj je zasebnosti. Aja, pa notebookobv z brezzicno povezavo sploh ni za kupovati, ker tako ti lahko vdrejo na razdaljo, ne hvala res.
Utk ::
Dobro, pa kaj si res želite imet računalnik, s katerim ne bo možno nič delat, da bo ja vse varno?
Kaj je narobe s tem, da greš na neko stran, na kateri laufa nek applet, ki lahko dela na tvojem računalniku kar si zaželi. Kako pa vemo, da firefox ne sporoča naša gesla nekam. Pač zaupaš. Če ne, ne uporabljaj te stvari. Samo moraš bit tolk previden, da moraš posebej dovolit na vsaki strani, da se zaganjajo appleti, flashi itd. Datoteke, ki jih res nočeš delit z drugimi, imaš pa itak lahko zaščitene že s filesystemom.
Kdor noče tveganja in hoče res varnost, si naj uštima konzolo z wordom in internetom na kateri ne bo nobenih pomembnih podatkov. Računalnik pa mora imet "moč", da naredi karkoli, tudi če kaj neumnega, če ne, to ni računalnik :)
Kaj je narobe s tem, da greš na neko stran, na kateri laufa nek applet, ki lahko dela na tvojem računalniku kar si zaželi. Kako pa vemo, da firefox ne sporoča naša gesla nekam. Pač zaupaš. Če ne, ne uporabljaj te stvari. Samo moraš bit tolk previden, da moraš posebej dovolit na vsaki strani, da se zaganjajo appleti, flashi itd. Datoteke, ki jih res nočeš delit z drugimi, imaš pa itak lahko zaščitene že s filesystemom.
Kdor noče tveganja in hoče res varnost, si naj uštima konzolo z wordom in internetom na kateri ne bo nobenih pomembnih podatkov. Računalnik pa mora imet "moč", da naredi karkoli, tudi če kaj neumnega, če ne, to ni računalnik :)
fiction ::
Za to kar bi lahko povedala na 5 straneh sta porabila 53 strani. I am sure the girls are impressed about their size. ;)
In ne, ne gre za to, da se, kot pise v novici, lahko pise kamorkoli v pomnilnik. To je bedarija - ce bi se to
dalo bi bil operacijski sistem zelo slabo nacrtovan.
Fora je v tem, da lahko npr. s pomocjo Java appleta v pomnilnski prostor od procesa brskalnika nalozis pomnilniske strani, ki so izvrsljive. Dejansko pa so notri podatki, ki jih ti nadzorjues. Tako lahko pretihotapis noter shellcodo (zlonamerno strojno kodo) in enostavno prelisicis DEP.
Z zadosti veliko kolicino tega ti tudi neka nakljucna razporeditev v pomnilniku (address space layout randomization) ne pomaga kaj dosti, saj je verjetnost da bos skocil na svojo kodo zelo velika.
Drugace te zascitni mehanizmi v Visti niso nic kaj pretirano novega. Ekvivalent GS je ProPolice gcc popravek, ASLR pozna ze Linux jedro, ne-izvrslijiv sklad pri PaX / OpenWall popravku za jedro (ki je tudi v grsecurity) temelji na NX bitu - kar je ubistvu enako DEP. Doug Lea alokator pomnilnika v novejsih verzijah glibc-ja preverja stvari in prepreci izkoriscanje prekoracitev na kopici kar je podobno kot heap cookie.
Edino SEH je bolj Windows specificna stvar.
Vse skupaj je dalec od tega da bi bilo neuporabno, samo nic od tega pa seveda ne nudi 100% zascite.
Prekoracitve izravnalnika ("buffer overflow") na skladu se sedaj ne da izkorstiti vec na najbolj enostaven nacin s pomocjo prepisa povratnega naslova, ampak se zmeraj pa gre za problem, ce pride do tega. Bolj kot da bi se zanasali za razna zdravila, ki preprecijo zlorabo, bi se bilo treba skoncentrirati na to, da bi bila koda varna.
Izgleda da so brskalniki zelo priljubljena tarca hekerjev, saj so najbolj izpostavljeni ter zadosti kompleksni da se vedno najde kaksna nova luknja.
In ne, ne gre za to, da se, kot pise v novici, lahko pise kamorkoli v pomnilnik. To je bedarija - ce bi se to
dalo bi bil operacijski sistem zelo slabo nacrtovan.
Fora je v tem, da lahko npr. s pomocjo Java appleta v pomnilnski prostor od procesa brskalnika nalozis pomnilniske strani, ki so izvrsljive. Dejansko pa so notri podatki, ki jih ti nadzorjues. Tako lahko pretihotapis noter shellcodo (zlonamerno strojno kodo) in enostavno prelisicis DEP.
Z zadosti veliko kolicino tega ti tudi neka nakljucna razporeditev v pomnilniku (address space layout randomization) ne pomaga kaj dosti, saj je verjetnost da bos skocil na svojo kodo zelo velika.
Drugace te zascitni mehanizmi v Visti niso nic kaj pretirano novega. Ekvivalent GS je ProPolice gcc popravek, ASLR pozna ze Linux jedro, ne-izvrslijiv sklad pri PaX / OpenWall popravku za jedro (ki je tudi v grsecurity) temelji na NX bitu - kar je ubistvu enako DEP. Doug Lea alokator pomnilnika v novejsih verzijah glibc-ja preverja stvari in prepreci izkoriscanje prekoracitev na kopici kar je podobno kot heap cookie.
Edino SEH je bolj Windows specificna stvar.
Vse skupaj je dalec od tega da bi bilo neuporabno, samo nic od tega pa seveda ne nudi 100% zascite.
Prekoracitve izravnalnika ("buffer overflow") na skladu se sedaj ne da izkorstiti vec na najbolj enostaven nacin s pomocjo prepisa povratnega naslova, ampak se zmeraj pa gre za problem, ce pride do tega. Bolj kot da bi se zanasali za razna zdravila, ki preprecijo zlorabo, bi se bilo treba skoncentrirati na to, da bi bila koda varna.
Izgleda da so brskalniki zelo priljubljena tarca hekerjev, saj so najbolj izpostavljeni ter zadosti kompleksni da se vedno najde kaksna nova luknja.
denial ::
Prekoracitve izravnalnika ("buffer overflow") na skladu se sedaj ne da izkorstiti vec na najbolj enostaven nacin s pomocjo prepisa povratnega naslova, ...
V primeru ko program ni preveden z /GS stikalom je to še vedno mogoče: KLIK. Vsi ombrambni mehanizmi so povsem brezpredmetni, če jih razvijalci ignorirajo. Dowd/Sotirov sta nedvomno impesionirala veliko deklet, vendar malo programerjev. Poteklo bo namreč še nekaj vode preden bodo razvijalci sploh začeli svoje aplikacije prevajati na ustrezen način. Kaj šele, da bi razmišljali o "varnem programiranju".
Mimogrede, more bugs in Windows (incl. Vista).
Off-topic: Da je ASLR implementiran v Linux jedro gre zasluga predvsem Brad Spenderju (PaX Team). Kakšna ironija.
SELECT finger FROM hand WHERE id=3;
Zgodovina sprememb…
- spremenil: denial ()
fiction ::
denial: Seveda, ce to stikalo izklopis v prevedenem programu ni vec "canary" vrednosti in preverjanja le-teh.
Problem pri /GS je, da vse skupaj zelo vpliva na performanse. Zato ima tudi prevajalnik, kolikor sem to razumel, neko hevristiko in preverjanje doda samo funkcijam kjer misli da se kaj dela s stringi (kar je lahko
vcasih tudi izvor problemov). Strict-GS po drugi strani omogoca, da reces naj bo zascita povsod.
Samo se zmeraj je fino, ce glede tega trade-offa med varnostnjo in hitrostjo, lahko odloca programer - ne pa
da se mu nekaj vsili in v njegovo kodo doda preverjanje, ki ga mogoce sploh ni hotel. Tudi najboljsi feature mora imeti neko moznost, da se ga izklopi.
V tem kontekstu me zanima kako recimo na NetBSD-ju izklopis neizvrsljiv sklad ali pa W^X na OpenBSD-ju.
Ne mi rect da se tega ne da.
Matthai: Kmalu ne bo vec dovolj varno malwara analizirati znotraj navideznega stroja (Klik).
Problem pri /GS je, da vse skupaj zelo vpliva na performanse. Zato ima tudi prevajalnik, kolikor sem to razumel, neko hevristiko in preverjanje doda samo funkcijam kjer misli da se kaj dela s stringi (kar je lahko
vcasih tudi izvor problemov). Strict-GS po drugi strani omogoca, da reces naj bo zascita povsod.
Samo se zmeraj je fino, ce glede tega trade-offa med varnostnjo in hitrostjo, lahko odloca programer - ne pa
da se mu nekaj vsili in v njegovo kodo doda preverjanje, ki ga mogoce sploh ni hotel. Tudi najboljsi feature mora imeti neko moznost, da se ga izklopi.
V tem kontekstu me zanima kako recimo na NetBSD-ju izklopis neizvrsljiv sklad ali pa W^X na OpenBSD-ju.
Ne mi rect da se tega ne da.
Matthai: Kmalu ne bo vec dovolj varno malwara analizirati znotraj navideznega stroja (Klik).
denial ::
@fiction:
#pragma strict_gs_check je relativno nova zadeva. Če sem prav iskren sedaj prvič slišim zanjo.
IMHO, pa bi morala tudi Okna preko kernela enforcat varnostne mehanizme kakor je to v praksi v Linuxu ter *BSD-jih.
Tudi mene zanima kako se izklopi non-exec stack/heap (NetBSD) in W^X (openBSD) :)
#pragma strict_gs_check je relativno nova zadeva. Če sem prav iskren sedaj prvič slišim zanjo.
IMHO, pa bi morala tudi Okna preko kernela enforcat varnostne mehanizme kakor je to v praksi v Linuxu ter *BSD-jih.
Tudi mene zanima kako se izklopi non-exec stack/heap (NetBSD) in W^X (openBSD) :)
SELECT finger FROM hand WHERE id=3;
ender ::
IMHO, pa bi morala tudi Okna preko kernela enforcat varnostne mehanizme kakor je to v praksi v Linuxu ter *BSD-jih.A misliš, da jih ne (tu ne govorimo o Win9x/ME, pač pa o NT-jih).
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
cache invalidation, naming things and off-by-one errors.
MrStein ::
Problem pri /GS je, da vse skupaj zelo vpliva na performanse.
Aaaa. zato Vista rabi 5 sekund za prikaz najosnovnejšega dialoga, ki se na XP pojavi v trenutku ?
(ja ja, off topic tule ... ampak žal za veliko folka zelo on topic)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
denial ::
@ender:
Varnostni mehanizmi v Oknih so implementirani v kernel, vendar ne tudi enforcani. ASLR, DEP, SEH protection in stack cookie dobijo svojo vrednost le v primeru, ko je aplikacija ustrezno prevedena. Vse sistemske aplikacije in knjižnice seveda izpolnjujejo ta pogoj. Problem pa nastane pri 3rd party aplikacijah.
MrStein:
To ni krivda /GS switcha, sicer bi morala zadeva delovati enako počasi tudi na XP-jih.
Varnostni mehanizmi v Oknih so implementirani v kernel, vendar ne tudi enforcani. ASLR, DEP, SEH protection in stack cookie dobijo svojo vrednost le v primeru, ko je aplikacija ustrezno prevedena. Vse sistemske aplikacije in knjižnice seveda izpolnjujejo ta pogoj. Problem pa nastane pri 3rd party aplikacijah.
MrStein:
To ni krivda /GS switcha, sicer bi morala zadeva delovati enako počasi tudi na XP-jih.
SELECT finger FROM hand WHERE id=3;
Zgodovina sprememb…
- spremenil: denial ()
fiction ::
Za "stack cookie" se zgenerira dodatna koda znotraj programa ob prevajanju kar nima veze z jedrom.
Safe SEH je opcija pri povezovanju. Tega tudi ne more kernel enostavno "enforcati".
Z DEP so doloceni problemi (nekateri programi recimo potrebujejo izvrsljiv sklad) zato obstaja vec moznosti delovanja (OptIn, OptOut, AlwaysOff, AlwaysOn). Da ne govorimo o tem da mora imeti procesor podporo za NX bit. V XP-jih in Visti je po defaultu OptIn nacin. /NXcompat pri prevajanju ni pogoj za to - to je samo neke vrste bliznjica kateri programi sigurno delujejo z neizvrsljivim skladom. Tako administratorju teh ni treba dodati med "zascitene" programe.
Edino ASLR je stvar kernela in ta to tudi dosledno izvaja.
Vse te stvari niso neki mehanizmi za zascito pomnilnika ali pa varnostne lastnosti Viste kot si nekateri predstavljajo. Tukaj gre za gasenje pozara, ki bi lahko izbruhnil zaradi napake v nekem programu, ki najverjetneje nima veze z OS.
Safe SEH je opcija pri povezovanju. Tega tudi ne more kernel enostavno "enforcati".
Z DEP so doloceni problemi (nekateri programi recimo potrebujejo izvrsljiv sklad) zato obstaja vec moznosti delovanja (OptIn, OptOut, AlwaysOff, AlwaysOn). Da ne govorimo o tem da mora imeti procesor podporo za NX bit. V XP-jih in Visti je po defaultu OptIn nacin. /NXcompat pri prevajanju ni pogoj za to - to je samo neke vrste bliznjica kateri programi sigurno delujejo z neizvrsljivim skladom. Tako administratorju teh ni treba dodati med "zascitene" programe.
Edino ASLR je stvar kernela in ta to tudi dosledno izvaja.
Vse te stvari niso neki mehanizmi za zascito pomnilnika ali pa varnostne lastnosti Viste kot si nekateri predstavljajo. Tukaj gre za gasenje pozara, ki bi lahko izbruhnil zaradi napake v nekem programu, ki najverjetneje nima veze z OS.
denial ::
Edino ASLR je stvar kernela in ta to tudi dosledno izvaja.
Le v primeru če je aplikacija prevedena z /Dynamicbase sicer pač ne.
SELECT finger FROM hand WHERE id=3;
denial ::
PaX, W^X in Exec-shild (vsi kernel-enforced) uporabljajo emulacijo in segment limit na procesorjih, ki ne podpirajo NX bit. Če zadeva deluje na teh platformah ne vidim razloga zakaj ne bi delovala tudi v Oknih.
Na x86 arhitehturi so memory pages lahko le W ali R. If R then == X (executable). Drži, nekateri programi dejansko potrebujejo exec stack. OK, ti naj bodo potem prevedeni z ustreznimi stack-protection stikali. PaX ima orodje paxctl, Exec-shield pa ima execstack s katerima lahko protection onemogočiš na per-binary nivoju.
Če imaš non-exec stack (DEP/NX) potem /GS stikala ne potrbuješ. SEH chain se ravno tako nahaja na stacku zato tudi /SafeSEH stikala ne potrebuješ. Seveda ni prav nič narobe, če ju uporabiš, ampak programerji so pač pozabljivi.
Da je ASLR mogoče enforcati preko kernela smo tudi že ugotovili. Kje je torej težava?
Na x86 arhitehturi so memory pages lahko le W ali R. If R then == X (executable). Drži, nekateri programi dejansko potrebujejo exec stack. OK, ti naj bodo potem prevedeni z ustreznimi stack-protection stikali. PaX ima orodje paxctl, Exec-shield pa ima execstack s katerima lahko protection onemogočiš na per-binary nivoju.
Če imaš non-exec stack (DEP/NX) potem /GS stikala ne potrbuješ. SEH chain se ravno tako nahaja na stacku zato tudi /SafeSEH stikala ne potrebuješ. Seveda ni prav nič narobe, če ju uporabiš, ampak programerji so pač pozabljivi.
Da je ASLR mogoče enforcati preko kernela smo tudi že ugotovili. Kje je torej težava?
SELECT finger FROM hand WHERE id=3;
fiction ::
Le v primeru če je aplikacija prevedena z /Dynamicbase sicer pač ne.
Ah ok, imas prav. DLL-ji in rebasing ugh. :/
PaX, W^X in Exec-shild (vsi kernel-enforced) uporabljajo emulacijo in segment limit na procesorjih, ki ne podpirajo NX bit. Če zadeva deluje na teh platformah ne vidim razloga zakaj ne bi delovala tudi v Oknih.
Jah, to da ni X bita za zascito strani (dolocanje tega ali je izvrsljiva) je neke vrste bug x86 procesorjev. Vse skupaj se da dolociti samo za segment. Najprej je AMD dodal ta bug-fix / feature, kasneje pa se Intel NX bit v svojo "Prescott" serijo P4 procesorjev. To je bilo like leta 2004.
V Visti nima smisla carati s tem, ker:
- je zascita na nivoju strani veliko bolj granularna / enostavna za uporabo (kar pomeni da je manjsa verjetnost napak pri implementaciji)
- najbrz nihce vec ne poganja Viste na 4+ leta starem procesorju (pa tudi ce - pac samo DEP ne deluje)
Če imaš non-exec stack (DEP/NX) potem /GS stikala ne potrbuješ.
To ni cisto res. Recimo v primeru tega kar sta pogruntala Mark Dowd in Alexander Sotirov.
S pomocjo Java appleta lahko dobis mapirano eno stran s poljubno vsebino, ki je izvrsljiva.
Recimo da je v brskalniku nek stack buffer overflow, potem je vse kar rabis narediti prepisati povratni naslov tiste funkcije tako da bo RET skocil na to tvojo kodo, ki se nahaja znotraj "pretihotapljene strani". Z GS to ne bi bilo mogoce. Omejiti kam lahko napadalec shrani svojo zlonamerno kodo, je drugo kot pa prepreciti, da se prepise return address in tako sploh omogoci skok na tisto kodo. Ekvivalent GS za kopico je heap cookie.
Ce nimas ASLR (vsaj na UNIX-u) lahko izvedes return-into-libc napad in skocis recimo direktno v system() funkcijo, kar te resi ce sta recimo sklad in kopica neizvrsljiva.
Ubistvu je bolj obratno z GS, SafeSEH, heap cookijem... se prepreci vecina moznosti za izkoriscanje buffer overflowa. Edini problem so razni "memory corruption" bugi, kjer ne gre za to, da bi ti prepisal neko strukturo v pomnilniku, ampak se le ta pod dolocenimi pogoji spremeni "sama", ti pa potem le naredis to, da bo na naslovu kamor kaze tista pokvarjena vrednost neka izvrsljiva koda. DEP ti pomaga dejansko le tukaj,
saj nikamor ne mores spraviti izvrsljive kode (prej je bil pa to samo en dodaten nivo zascite).
Seveda ni prav nič narobe, če ju uporabiš, ampak programerji so pač pozabljivi.
Zato lahko v prihodnjih verzijah prevajalnika pricakujemo, da bo default vklopljena zascita, medtem ko jo bos s posebnim stikalom izklopil. Za zdaj je pa pac obratno: bolje je ce vse skupaj deluje tako kot doslej, medtem ko kriticni programi lahko pridejo prevedeni z zascito. Pozabljiv programer tako lahko povzroci le lazje izkoriscanje morebitnih lukenj, ne pa tudi nedelovanja svojega softwara, ki mogoce potrebuje neizvrsljiv sklad.
denial ::
@fiction:
Absolutno se strinjam z napisanim, čeprav mi ni popolnoma jasno zakaj si navedel primer Java DEP bypass-a in pripisal, da tole z uporabo /GS ne bi bilo mogoče. To seveda popolnoma drži, vendar sta Dowd/Sotirov predstavila tudi način kako zaobiti /GS protection in sploh vse security mehanizme.
Jaz sem hotel povedati nekaj čisto drugega: da je mnogo, predvsem 3rd party aplikacij, še vedno neustrezno prevedenih in so torej vsi našteti mehanizmi dejansko brezpredmetni. IMO bi bilo učinkoviteje, če bi bile te zadeve kernel-enforced kakor je to (že leta) v praksi na nekaterih *NIX-ih.
Funkcionalnost /GS in /SafeSEH seveda ne more biti implementirana v kernel, kakor tudi StackGuard/ProPolice ni. Vestni programerji tako ali tako ne bodo pozabili nanju. Za ostale pozabljivce pa bi enforcan DEP/NX čisto zadostaval. Čeprav za ceno nedelovanja njihovega programa. OK, naj imajo še per-binary disable protection.
Definitivno no more low-hanging fruit. Pred raznimi Dowdi pa itak ni zaščite :)
Ni dvoma, naslednja verzija compilerja bo imela mnoga (vsa?) navedena stikal vkjlučena že po defaultu.
Absolutno se strinjam z napisanim, čeprav mi ni popolnoma jasno zakaj si navedel primer Java DEP bypass-a in pripisal, da tole z uporabo /GS ne bi bilo mogoče. To seveda popolnoma drži, vendar sta Dowd/Sotirov predstavila tudi način kako zaobiti /GS protection in sploh vse security mehanizme.
Jaz sem hotel povedati nekaj čisto drugega: da je mnogo, predvsem 3rd party aplikacij, še vedno neustrezno prevedenih in so torej vsi našteti mehanizmi dejansko brezpredmetni. IMO bi bilo učinkoviteje, če bi bile te zadeve kernel-enforced kakor je to (že leta) v praksi na nekaterih *NIX-ih.
Funkcionalnost /GS in /SafeSEH seveda ne more biti implementirana v kernel, kakor tudi StackGuard/ProPolice ni. Vestni programerji tako ali tako ne bodo pozabili nanju. Za ostale pozabljivce pa bi enforcan DEP/NX čisto zadostaval. Čeprav za ceno nedelovanja njihovega programa. OK, naj imajo še per-binary disable protection.
Definitivno no more low-hanging fruit. Pred raznimi Dowdi pa itak ni zaščite :)
Ni dvoma, naslednja verzija compilerja bo imela mnoga (vsa?) navedena stikal vkjlučena že po defaultu.
SELECT finger FROM hand WHERE id=3;
Zgodovina sprememb…
- spremenil: denial ()
fiction ::
GS je nepremostljiva ovira za stack overflowe, saj ne prides do povratnega naslova - tudi ce si Dowd. :) Ok mozno je da ti uspe prepisati kaj drugega, kar bistveno spremeni stanje programa in ti kasneje pomaga pri zvisevanju privilegijev, ampak verjetnosti za to so precej majhne. Tisti Flash exploit je zato bolj kot sedmica na lotu. :)
Lahko le upas na to, da hevristika odpove in v ranljivi funkciji ni preverjanja.
Seveda obstajajo variante kjer GS zataji, ampak to je le takrat ko lahko direktno pises kamorkoli (torej nekaj ranljivosti takoj odpade). Recimo s pomocjo format string buga ali pa tako da najprej prepises nek kazalec, potem pa se kamor kaze kazalec nekaj napise. Ali pa da sploh nic ne pises (memory corruption).
Ja, vidim kaj hoces reci. Ponavadi je default da sta sklad in kopica neizvrsljiva razen za programe, ki jih ti nastejes. To je OptOut nacin delovanja, ki se uporablja po defaultu v Windows 2003 in 2008. XP in Vista uporabljata obratni OptIn, kar je res malo butasto. Ampak na sreco to lahko (kot tukaj pise) enostavno popravis tako da v boot.ini reces /noexecute=OptOut.
Izgleda, da je to kar dober nacin za izboljsanje varnosti. Mogoce bi morali ljudem namesto instalacije 500 razlicnih antivirusnih programov najprej priporociti to.
Lahko le upas na to, da hevristika odpove in v ranljivi funkciji ni preverjanja.
Seveda obstajajo variante kjer GS zataji, ampak to je le takrat ko lahko direktno pises kamorkoli (torej nekaj ranljivosti takoj odpade). Recimo s pomocjo format string buga ali pa tako da najprej prepises nek kazalec, potem pa se kamor kaze kazalec nekaj napise. Ali pa da sploh nic ne pises (memory corruption).
Ja, vidim kaj hoces reci. Ponavadi je default da sta sklad in kopica neizvrsljiva razen za programe, ki jih ti nastejes. To je OptOut nacin delovanja, ki se uporablja po defaultu v Windows 2003 in 2008. XP in Vista uporabljata obratni OptIn, kar je res malo butasto. Ampak na sreco to lahko (kot tukaj pise) enostavno popravis tako da v boot.ini reces /noexecute=OptOut.
Izgleda, da je to kar dober nacin za izboljsanje varnosti. Mogoce bi morali ljudem namesto instalacije 500 razlicnih antivirusnih programov najprej priporociti to.
fiction ::
Kar se tice GS & co.
Vsaka native koda (torej ne .NET) prevedena z Visual Studiom bi morala imeti vkljucen /GS switch v primeru da:
- gre za nekaj kar na kakrsenkoli nacin komunicira z zunanjim svetom (if contains(socket) => enable GS)
- program uporablja razne kompleksne zapise, ki jih mora sparsati (to vkljucuje brskalnik, predvajalnik glasbe / filmov, urejevalnik teksta / slik). Pri cemer bi bilo mogoce smisleno, da bi programer oznacil, kje gre za kompleksno kodo kjer je vecja moznost napak.
No ja, na nek nacin omogoca to ze strict_gs_check - pac dodas #pragma strict_gs_check(on) samo v en fajl.
Vsaka native koda (torej ne .NET) prevedena z Visual Studiom bi morala imeti vkljucen /GS switch v primeru da:
- gre za nekaj kar na kakrsenkoli nacin komunicira z zunanjim svetom (if contains(socket) => enable GS)
- program uporablja razne kompleksne zapise, ki jih mora sparsati (to vkljucuje brskalnik, predvajalnik glasbe / filmov, urejevalnik teksta / slik). Pri cemer bi bilo mogoce smisleno, da bi programer oznacil, kje gre za kompleksno kodo kjer je vecja moznost napak.
No ja, na nek nacin omogoca to ze strict_gs_check - pac dodas #pragma strict_gs_check(on) samo v en fajl.
denial ::
Tisti Flash exploit je zato bolj kot sedmica na lotu. :)
Ja, sam sedmica na lotu je relativno pogosta. Le dobitnik je vedno drugi :). Sploh ni dvoma da ravno sedaj nekdo drži v rokah sedmico pa tega noče obelodaniti.
Poleg tega lahko s sedmico kar dobro živiš tudi od obresti. Če pomisliš koliko ljudi nato še vedno uporablja ranljive verzije aplikacij... Vendar pa je to že druga zgodba.
Mimogrede, enforcan ASLR bi preprečil oba Flash testcase-a. FYI, uporabljen je Flash 9.0.124.0, torej zadnja različica, ki ni prevedena z /DYNAMICBASE. To v bistvu lepo povzame kar sem hotel povedati v svojih postih.
Še dobro da heap protection mehanizme upravlja kernel :)
Najboljša rešitev za 2K/XP/2K3 je verjetno WehnTrust
Edit:
WehnTrust generically mitigates SEH overwrites by dynamically validating a thread's exception handler chain prior to allowing exceptions to be dispatched.
Zakaj tega ne bi počel kernel? Očitno sem napak predvideval, da je SEH protection nemogoče implementirati v kernel.
SELECT finger FROM hand WHERE id=3;
Zgodovina sprememb…
- spremenil: denial ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Predstavitev Ring -3 rootkitov na BlackHat konferenciOddelek: Novice / Varnost | 3567 (3031) | jype |
» | Objavljen članek z več podrobnostmi o "cold-boot" napaduOddelek: Novice / Varnost | 3988 (2967) | poweroff |
» | Napad na Border Gateway ProtocolOddelek: Novice / Varnost | 10813 (8991) | AndraZK |
» | Varnost v Visti: igra končana? (strani: 1 2 )Oddelek: Novice / Varnost | 10239 (7240) | fiction |
» | Vboot Kit omogoča zaobid varnostnih mehanizmov Windows VisteOddelek: Novice / Varnost | 3926 (3374) | poweroff |