10:12
7/6/2011

W majowym wydaniu manuali Intela można znaleźć informacje o nowym zabezpieczeniu, które zostanie wprowadzone w nowych procesorach z rodziny x86. Mowa o SMEP aka Supervisor Mode Execution Protection.

Autorem poniższego artykułu jest Gynvael Coldwind

SMEP

Sprawa jest dość prosta: duża część exploitów umożliwiających local privilege escalation umieszcza shellcode w pamięci user-mode (tak zazwyczaj jest najwygodniej), a następnie exploitując daną podatność w kernelu/driverach wykonuje skok do owego shellcode’u. I tutaj wchodzi SMEP, który w przypadku wykrycia próby wykonania kodu znajdującego się w pamięci dostępnej z user-mode (ring3) z prawami kernela (ring0) rzuci wyjątek (a więc kod się nie wykona).

Ciekawe jest to, że dokładnie takie rozwiązanie zostało zaproponowane przez Joannę Rutkowską i Rafała Wojtczuka na konferencji Black Hat 2008 w USA. Zachęcam do rzucenia okiem na post Joanny o SMEP sprzed paru dni.

Obejście SMEP

Dodatkowo Dan Rosenberg opublikował ciekawego posta omawiającego SMEP w kontekście “Linuxa”. Idąc w ślady Dana razem z j00ru opublikowaliśmy podobnego posta w kontekście systemów z rodziny Windows, wskazując kilka metod obejścia SMEP.

Podsumowując: o ile SMEP trochę utrudni tworzenie exploitów typu priv. escal., to istnieje kilka dobrze znanych i kilka mniej znanych metod które i tak pozwolą na wykorzystywanie podatności w kernelach. Niemniej jednak jest to zawsze krok do przodu.

Autorem tego artykułu jest Gynvael Coldwind

Przeczytaj także:



35 komentarzy

Dodaj komentarz
  1. Tak swoją drogą, to interesująco ta walka ze “złym kodem” wygląda. W ubiegłym wieku królowały metody programowe typu firewalle i spyboty, teraz zeszło to na poziom sprzętowy. Tylko patrzeć jak zabezpieczenia antywirtusowe i antyexplotiowe będą zaszyte w firmware dysków twardych, kontrolerach RAM i antenach WiFi.

    • A czy przypadkiem poczatkowo firewalle nie byly wylacznie sprzetowe? ;>

    • @Mariusz
      A co to jest firewall sprzętowy? Przecież jeśli kupujesz appliance to na nim i tak działa soft, który filtruje pakiety.

    • To, że coś jest pudełkiem nie znaczy jeszcze, że jest wyłącznie pudełkiem :)

    • @mariusz
      Przecież firewalle sprzętowe nadal istnieją. Choćby w ruterach nie mówiąc już o maszynach rackowych dedykowanych dla większych sieci. Tak naprawde są to małe komputery w których funkcję firewalla pełni głównie firmware (w maszynach rackowych są to wręcz typowe samodzielne komputery, nawet z wentylatorem i dyskami twardymi). Jednak SMEP przenosi firewall na poziom stricte sprzętowy lokując jego elementy w samym procesorze.

    • nie ma czegoś takiego jak firewall sprzętowy. wkujcie sobie to raz na zawsze a dobrze. Nie da się sprzętowo przewalać pakietów w sensowny sposób. Każda nowa reguła powodowałaby dojście nowych bramek. A to że coś jest w obudowie innej niż komputerowa pod biurkiem i ma firewall nie robi z tego firewalla sprzętowego. Firewall to zawsze będzie soft. Jedyne co można zrobić to optymalizować działanie sprzętu pod kątem działania firewalla. I tyle.

  2. Jaki ma sens pakowanie takich mechanizmów do procesorów? Cóż, trza było opatentować pomysł. Sprzętowy, do zrobienie w UE.

    • 1. Gdyż zwiększa bezpieczeństwo.
      2. Gdyż nie można tego rozwiązać inaczej.

    • Raczej nabija kiermany Intela. Skoro od 2008 są porady jak używać SMEP, plus są metody obejścia tego, to ten moduł sprzętowy to po prostu PR dla Intela.

  3. problem sprzetowy ma jedna wade – potrzebuje updatow
    i jak to zwykle bywa wracamy do punktu wyjscia, czyli czynnika ludzkiego
    jedyne rozwiazania ktore aktualnie sie sprawdzaja sa oparte na “chmurze”, czyli AV,firewalle, itp kontaktuja sie z kilkoma bazami automatycznie w celu wykluczenia/potwierdzenia lub tez dodania do wlasnej bazy odpowiednich recordow
    jedyny problem w tym ze bazy te sa kompatybilne tylko pomiedze poszczegolnymi producentami oprogramowania/sprzetu

    sophos swego czasu mial ladny filmik to wyjasniajacy, niestety ich “chmurka” nie dziala jak trzeba,symantec tez cos tam proboje, no i jeszcze pare innych firm

    problem w tym ze te firmy nie sa wlasciwie zainteresowane zeby to dzialalo ;/

  4. “Jaki ma sens pakowanie takich mechanizmów do procesorów?”
    A taki, że “przy okazji” procesor będzie sprawdzał czy instalowane lub uruchamiane jest zakupione oprogramowanie. Chyba już się przyzwyczailiśmy do dbania przez firmy o nasze dobro?

    • Jasne…A czy ty znasz chociaż podstawy ASM, wiesz jak procesor działa itd.? Nic się w kwestii piractwa nie zmieni.

    • zebys sie niemilo nie zdziwil :D
      a ja sie na pewno nie zdziwie jak taka impementacje wlacza w WIN8
      jakby nie bylo M$ i Int£l od dawno bardzo sie lubia [ znaki nie sa pomylka ]

    • Zen: A co to ma do piractwa? Chyba chodzi to jednak o coś innego.

    • Wypowiedź Jana “procesor będzie sprawdzał czy instalowane lub uruchamiane jest zakupione oprogramowanie” zrozumiałem jako walkę z piractwem…

    • Rzeczywiście nie chodziło o “piractwo” ponieważ:
      1. Piractwo wiąże się z zabijaniem lub okaleczaniem. Osoby kradnące płatne oprogramowanie to złodzieje, a nie piraci. No, chyba, że napadają na sklep z programami i zabijają lub kaleczą personel;
      2. Chyba gdzieś około 2005 roku głośno było o zmowie (projekcie) głównych producentów dysków twardych, którzy chcieli do firmware dysków (i nie tylko) wstawić mechanizmy sprawdzające czy instalowane/uruchamiane oprogramowanie posiada elektroniczny dowód zakupu. I chodziło tu nie tylko o złodziei oprogramowania, ale także o zmuszenie opensourca do wprowadzenia jakichś form płatności.

      Od tamtego czasu minęło 6 lat. Technologia jest na pewno rozwijana, ale do jej wprowadzenia brakuje przyjaznego jej procesora i kart rozszerzeń oraz gwizdka. Będzie przyjazny jej procesor i karty rozszerzeń to na gwizdek technologia zostanie wprowadzona. A nóżki będzie można obrywać komarom, a nie procesorowi.

      Do osób mających wątpliwości co ktoś kupi czy nie kupi (“procesory antypirackie nie maja prawa bytu. kupilbys takie cos? rynek je wyeliminuje”) Tu jest znany artykuł Petera Gutmanna na temat Visty:
      http://ipsec.pl/peter-gutmann-drm-obciaza-viste.html
      Wszystkie te mechanizmy są także w Win7 Czy ktoś kupuje te wyroby? Oczywiście – wielu uczestników tego forum.

      Wygląda to tak, że płynąc dziurawym statkiem podczas sztormu wybitny biolog fascynuje się tym co widzi pod mikroskopem i dyskutuje jak sobie z tym poradzić żeby było bezpiecznie.

  5. @up:
    procesory antypirackie nie maja prawa bytu. kupilbys takie cos? rynek je wyeliminuje.

    • @jurek – no toś mnie panie rozbawił.
      Rynek eliminuje? Zaczynając od samego pojęcia rynku nie jest w stanie nic wyeliminować. Uczestnicy rynku jak najbardziej i chyba o to chodziło. Nie zwracasz jednak uwagi na taki szczególik maleńki, że przedstawicielami na głównego rynku nie są malućcy (czyli my – konsumenci) tylko przedsiębiorstwa. Idąc dalej zważ, że posiadasz i tak sporo rzeczy, których nie potrzebujesz. Dodatkowo posiadasz tyle rzeczy, o których nie wiesz, że nie jesteś w stanie tego ogarnąć ani tym bardziej sprawdzić a następnie zweryfikować.
      Gdy kupowałeś swój pierwszy PC sprawdzałeś, czy twój procesor ma coś takiego?
      Dokładnie ta sama kwestia idzie dalej w przód – nowi z reguły też nie sprawdzają ani tym bardziej nie składają sami PCtów, co za tym idzie nie mają pełnej wiedzy na temat produktów (i tutaj ukłon w kierunku założeń rynku w przypadku konkurencji doskonałej – wszyscy członkowie rynku mają dostęp do pełnych informacji). Jeżeli będą widzieli taktowanie 2,3 i 2,3 jedno droższe drugie tańsze to ogół wybierze z natury tańsze. Droższe wybierze, ten któremu powiedzą, że lepsze lub ten który sam wywnioskuje, że droższe=lepsze.
      Teraz pytanie do Ciebie – który zestaw Ty byś wybrał nie znając szczegółów?
      Obojętnie czego nie wywnioskujesz można odnieść to do obu grup. Oczywiście zakładając, że ta technologia miałaby ukrócić piractwo (heh) malućkich łatwo ścigać i statystyki szybko wzrosną w wykrywalności. Natomiast w przypadku zamożniejszej grupy – większa ugodowość i chęć płacenia nałożonych kar.
      Oczywiście pozostaje 3cia grupa czyli samodzielni składacze (czyli grupa aktualnie najmniej liczna), którzy sami eliminują niepożądane elementy w swoim osobistym komputerze – tutaj również trzeba założyć, że interesują się technologią i wiedzą co i jak bo w innym wypadku na nich również działa wyznacznik cena/jakość.

      Adekwatnie samego tematu ja myślę, że to całe sprawdzanie legalność to o kant tyłka. Po pierwsze zaraz się znajdzie ktoś kto wyłamie jakąś nóżkę proca omijając ten proces. Po drugie aktualnie mają taką bazę kto co i jak, że takie coś na klockach im jest zbędne. Po trzecie nawet jeżeli to nie łudźmy się, że usłyszymy o tym w najbliższym czasie – wpierw musiałoby to opanować ogół komputerów użytkowych dopiero później by zaczęli blokować – z prostej przyczyny, wcześniej użyszkodnicy internetu zrobiliby taki szum, że firma wypuszczająca procki miałaby negatywną reklamę (która się sprawdza w przypadku celebrytów a nie mark przedsiębiorstw).

    • @stoper:
      “przedsiebiorstwa sa glownym konsumentem procesorow” — masz linka do statystyk, czy tylko tak ci sie wydaje?

      nawet jesli konsument popelni blad kupujac procesor antypiracki, to go naprawi kupujac zwykly, bo bedzie miec do wyboru:
      1. kupowac legalnie soft i poniesc w zwiazku z tym duze koszty
      2. kupic procesor bez opcji antypirackich i poniesc niewielki koszt

      ludzie sa racjonalni, jesli chodzi o pieniadze :p. jesli wychodzic beda tylko procki antypirackie, to po prostu wzrosnie popyt na stare bez takich mozliwosci, tak jak to bylo z XPkiem, kiedy na rynek wchodzila vista…

    • @jurek “przedsiebiorstwa sa glownym konsumentem procesorow” — masz linka do statystyk, czy tylko tak ci sie wydaje?
      Nie trzeba statystyk – udowodnię: Proca nie kupujesz od Intela/AMD bezpośrednio tylko od pośredników. Pośrednik jest odrębną instytucją – co za tym idzie przedsiębiorstwem/organizacją.

      Z twoimi argumentami też nie sposób się zgodzić.
      Nie odwołuj się do XP i Visty bo to zupełnie dwa światy i chyba tego tak do końca nie śledziłeś. Bardzo podobnie sprawa wyglądała z 98/ME i z tymi opartymi o NT czyli 2000/XP (mówię o rozwiązaniach domowych). To nie jest kwestia zabezpieczeń antycośtam tylko przyzwyczajenia, wymogów, standardów.
      Adekwatnie tych punktów to zakładasz, że na rynku istnieje jedynie oprogramowanie zamknięte – a to taki błąd, że jeżeli unixowcy Cię nie ubiją to masz szansę na doinformowanie.
      Poza tym już chłopaki w poście wspomnieli, że da się to ominąć tak czy siak. Więc na prawdę zabezpieczenie ubermega :D
      Jeżeli chodzi o sprzęt to zabezpieczenia z reguły da się obejść – przykład: PSX. Niby specjalne płytki i metoda nagrywanka, a tu zdjęcie blokady (tudzież wymiana laseru) i śmigało.

      Poza tym nie zgadzam się z tymi wielkimi kosztami. Napisałeś coś o rozwadze jeżeli chodzi o kasę (tutaj takie retoryczne pytanko czemu zatem na linuksach nie siedzimy?). Idąc jednak twoim tokiem raczej powinieneś uwzględnić szybki rozwój oprogramowania opensource – tutaj idzie dalej związek przyczynowo-skutkowy: Ludzie przerzucają się na darmochę -> Przedsiębiorstwa nie mają kasy, bo nikt nie chce kupować -> Przedsiębiorstwa olewają sprawdzanie na procu dążąc do uzyskania jak największej liczby konsumentów.
      Im większe zainteresowanie (popularność) tym chętniej produkt jest wybierany – co za tym idzie – wszystkie rozwiązania biznesowe płacą kapuchę, żeby przy kontroli nie wyszło coś złego. Część użytkowników świadomych swego ogromnego zła czynionego tak wspaniałemu producentowi równie cudnego oprogramowania – postanawia jechać na legalu – powiększając pulę konsumentów :-)

  6. “Sprawa jest dość prosta: duża część exploitów umożliwiających local privilege escalation umieszcza shellcode w pamięci user-mode (tak zazwyczaj jest najwygodniej), a następnie exploitując daną podatność w kernelu/driverach wykonuje skok do owego shellcode’u.”

    To już mogliście całkiem po angielsku napisać.

    • Abstrahując od tego, że autorem jest Gyn, ciekaw jestem jakie tłumaczenie byś zaproponował, żeby wyeliminować j. angielski. Serio :)

    • +1
      Treść tego newsa jest pisana ub3r-1337-languag3 dla g33ków ;) Nie ma co popadać w skrajności jednak jakiś umiar warto zachować.

    • Powyższy fragment się znalazł niewiadomo czemu na roflcopterze.

  7. “Sprawa jest dość prosta: duża część exploitów umożliwiających local privilege escalation umieszcza shellcode w pamięci user-mode (tak zazwyczaj jest najwygodniej), a następnie exploitując daną podatność w kernelu/driverach wykonuje skok do owego shellcode’u.”
    Po naszemu to będzie jakoś tak:
    “Sprawa jest dość prosta: duża część programów wykorzystujących błędy w oprogramowaniu umożliwiających lokalne podniesienie uprawnień umieszcza kod zdobywający powłokę systemową w pamięci trybu użytkownika (tak zazwyczaj jest najwygodniej), a następnie wykorzystując daną podatność w jądrze systemu/sterownikach wykonuje skok do owego kodu.”

    W sumie to nie wiem jak dokładnie shellcode przetłumaczyć.

    • Kod skryptów/języka powłoki może

    • MASAKRA, kto to zrozumie? polonista chyba bo jako programista wole ang nazwy uzywac a nie byc posmiewiskiem swiata jak np. francuzi ktorzy wszystko tlumacza a potem nie sposob sie znimi dogadac. Ang jest jezykiem technicznym i nie ma sensu tego na sile zmieniac!

    • Można i tak:
      Duża część oprogramowania podnoszącego prawa wykonywanych instrukcji najpierw umieszcza kod/interfejs obsługi powłoki w pamięci użytkownika, a następnie przekierowuje wątek z uprawnieniami jądra systemu lub sterowników by skoczył do wcześniej umieszczonego kodu, który wykona się w kontekście przywilejów źródła skoku. Następnie włamywacz może podjąć interakcję z przygotowaną powłoką.

      Ale poza oczywistymi walorami edukacyjnymi i literackimi. Utrudni to kategoryzowanie, wyszukiwanie, zrozumienie (przez słowa klucze) artykułu według tagów i meta danych. Dodatkowo będzie trudniej to tłumaczyć na inne języki.

  8. Przeszliście samych siebie!!!

  9. Bardzo ciekawie.
    http://j00ru.vexillium.org/?p=783
    http://gynvael.coldwind.pl/?id=394
    http://vulnfactory.org/blog/smep/

    Nie jest to zabezpieczenie rangi DEP/ASLR ale zdezaktualizuję dużą grupę exploitów i wymusi ich ponowne napisanie. Nie jestem optymistycznie nastawiony do kompatybilności wstecznej i szybkości wdrożenia. Ale poczekamy i zobaczymy.

  10. Hmm, fragment tego wpisu trafił na roflcopter.pl → http://roflcopter.pl/4991 … Tylko co w tym jest śmiesznego? ;-P

    • To wyjaśnienie jako-tako zrozumiałoby kilka tysięcy ludzi w Polsce. A w pełni wiedziało o co chodzi – może z kilkuset.
      A więc sprawa nie jest “prosta”.

    • @Marcin: Ja zrozumiałem, a jestem lamerem, co tylko Niebezpiecznik czyta. I owszem, uśmiechnąłem się, ale anglicyzmy (w języku branżowym nieuniknione) mnie nie oburzyły. A koledzy wyzywają mnie od językowego faszysty.

      Co oczywiście nie zmienia tego, że bardziej ucieszyłaby mnie przetłumaczona wersja (ale exploity może niech zostaną, bo “programy wykorzystujące błędy w oprogramowaniu” to jednak kiepskie tłumaczenie). Artykuł świetny: krótki, rzeczowy, ciekawy.

    • Ja też jako-tako zrozumiałem – zaśmiałem się, musiałem przeczytać ten akapit 3 razy, ale zrozumiałem;).
      Tylko postaw się w miejscu “normalnego” człowieka: to po prostu nie jest “proste” – i dlatego na roflcopterze dałem plusa.
      EOT.

      Oczywiście do jakości wpisu też nic nie mam!

  11. “nie ma czegoś takiego jak firewall sprzętowy. wkujcie sobie to raz na zawsze a dobrze. Nie da się sprzętowo przewalać pakietów w sensowny sposób”

    może zamiast imputować innym, że nie mają pojęcia, warto poświęcić chwilę na samorefleksję? co według Ciebie jest sprzętowe, a co już programowe? w praktyce większość dedykowanych układów jest częściowo programowalna. ale czy np układ FPGA jest według Ciebie rozwiązaniem software’owym? Moim zdaniem to zdecydowanie rozwiązanie z zakresu sprzętowych. I owszem – robi się na tej podstawie firewall’e. przykładów można by mnożyć.

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: