16:30
20/1/2010

17-letnia dziura w Windows

Po luce 0day w IE, kolejny cios dla Microsoftu w tym miesiącu i kolejny 0day — tym razem w samym środku systemu operacyjnego… Tavis Ormandy (nota bene, pracownik Google) zaprezentował sposób na zwiększenie praw użytkownika w *każdym* 32-bitowym systemie Windows, od Windows 3.1 do Windows 7.

Opis luki: #GP Trap Handler (nt!KiTrap0D)

Za błąd odpowiedzialny jest bug w VDM (Virtual DOS Machine), która w 1993 roku została umieszczona w Windows aby zapewnić wsparcie 16-bitowym aplikacjom. VDM odpowiada m.in. za przechwytywanie wywołań BIOS-u.

Tavis zauważył, że odpowiednio spreparowana 16-bitowa aplikacja może manipulować stosem jądra na kilka sposobów …i dla każdego procesu. Luka pozwala zatem na wykonanie dowolnego kodu z uprawnieniami na poziomie ring0. Udostępniony przez Tavisa exploit pozwala na uzyskanie wiersza poleceń z najwyższymi uprawnieniami pod systemami Windows XP, Vista, Server 2003 i 2008 oraz Windowsem 7. Witajcie w ring0! ;-)

Tyle ogółów, po szczegóły zapraszam tutaj, bo bardziej techniczny opis tej luki tutaj spowodowałby albo nadmiar angielskiej terminologii, a spolszczać technicznych terminów nie zamierzam ;)

Microsoft zwlekał pół roku…

Tavis twierdzi, że poinformował Microsoft przeszło pół roku temu, ale firma pomimo potwierdzenia dziury, nie wydała do tej pory patcha. Ormandy uznał zatem, że czas na opublikowanie szczegółów błędu, zwłaszcza, że można domowym sposobem zabezpieczyć się przed tego typu dziurą, nie czekając na oficjalnego patcha Microsoftu. Polecane przez Tavisa “zabezpieczenie” niektórym może jednak wydać się dość brutalne — trzeba skutecznie okaleczyć MS-DOS i WOWEXEC ;-)

Jak się zabezpieczyć?

Najpierw należy wyłączyć obsługę 16-bitowych apliakcji. Można to zrobić za pomocą szablonu Group Policy:

Windows Components\Application Compatibility\Prevent access to 16-bit applications

Osoby niezaznajomione z Edytorem Polityk Grup (czy jak to tam pod Windowsem jest przetłumaczone na polski), czytają to. Staruszkowie z NT 4.0 wędrują tu, a leniwi, którzy chcą na skróty, oglądają to:

Bez paniki! Siedemnastolatka jest łagodna ;-)

Należy podkreślić, że siedemnastolatnia dziura (no pun intended!) nie jest zbyt znacząca dla użytkowników domowych, ale administratorzy Windows w firmach będą mieli ręce pełne roboty (again, no pun intended)…

Wydaje mi się, że 2010 rok nie zaczął się dobrze dla Microsoftu. Najpierw największy skoordynowany atak w historii internetu umożliwiony dzięli 0day’owi w IE, teraz kolejna poważna dziura, obecna w każdym systemie Windows, od 17 lat — ciekawe, czy ktoś znajdzie bardziej archaiczną lukę? ;)


Przeczytaj także:

25 komentarzy

Dodaj komentarz
  1. No no, ładnie. Strzelają w M$ jak się tylko da ;)

  2. Jako laik powiem tylko: Wszelkie luki w Windowsach były, są i będą rzeczą naturalną, kto chce mieć lepiej zabezpieczoną sieć, korzysta z innych dostępnych rozwiązań…

  3. Cześć!
    Z technicznego punktu widzenia ta luka jest kapitalna! Zainteresowanych na prawdę zachęcam do zajrzenia w “internalsy” ;>
    A propos “nie jest zbyt znacząca dla użytkowników domowych” – jest to oczywiście poprawne założenie, natomiast trochę offtopicując, zastanawiam się kiedy malware (trojany bankowe) będzie wyposażany w exploity typu local-priv-escalation. Uważam, że to dość rozsądny krok z punktu widzenia twórców malware’u, ale nie zaobserwowałem tego typu softu “in the wild”. Spotkał się ktoś z czymś takim?

    Pozdrawiam ;>

  4. @AnnonymousUser
    Jako “człowiek spoza miasta pokazujący slajdy” poproszę abyś pokazał mi inne dostępne rozwiązania w których w ciągu ostatniego pół roku nie znaleziono żadnej luki bezpieczeństwa, a które nadaje się do zastosowań desktopowo-serverowych ;>

    Podpowiedź: systemy bazujące na Linuxie, BSD i OSX niestety w wymienione przeze mnie kryteria się nie mieszczą ;p

  5. co do exploita, to łapię BSOD’a jak odpalam ^^
    jak jest u Was?

  6. ‘Jako laik powiem tylko: Wszelkie luki w Windowsach były, są i będą rzeczą naturalną, kto chce mieć lepiej zabezpieczoną sieć, korzysta z innych dostępnych rozwiązań…”

    Jak np. z linuksa z dziurą zaledwie 10-letnią(czy ile ona tam miała – stara jak świat w każdym razie), dziury są w każdej aplikacji większej od wordpada, gadanie, że ich nie ma pod systemem X, czy Y można sobie włożyć na półkę obok baśni braci grimm.

  7. http://news.netbsd.pl/?id=637
    25 letni bug ;)

  8. tak z ciekawosci, bo laikiem jestem, ale czy za 16 bitowe aplikacje nie odpowiada bardziej ntVDM ?

  9. U mnie po odpaleniu system sie zawiesza ;<

  10. Tavis byl na Confidence w Krakowie, lebski facet ;]

  11. @Gynvael Coldwind
    a czemuż to rozwiązania, które przytoczyłeś nie nadają się do zastosowań desktopowo-serverowych wg Ciebie??

    @Marian
    nikt nie mówi tu o rozwiązaniach bez skazy, wiadomo natomiast i to już wie każdy, że Windowsy były, są i będą najbardziej podatne na ataki, nawet jeśli tylko z powodu swej popularności…

  12. A tak przy okazji, wiecie drodzy niebezpiecznicy, że nowy system komputeryzacji dla naszego kochanego ZUS’u jest robiony pod DOS’a właśnie?? Hę? Takie rzeczy tylko w… Polsce. :(

  13. @morr: przykład z BSD zupełnie nieadekwatny do sytuacji z MS.
    Równie dobrze większość “zwieszek aplikacji” można podpiąć wtedy pod słowo “bug” ;)

  14. Nie *każdym* systemie, ale na *każdym 32bitowym*, więc wszystkie 64bitowe edycje Windowsów są bezpieczne (jeśli chodzi o tego buga przynajmniej).

  15. @Gynvael Coldwind: OpenBSD? Nie, nie jestem pewien. http://www.openbsd.org/security.html

  16. @hiciu
    13 dni temu – http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0689
    (znalezione btw przez dwóch polaków – Maksymiliana Arciemowicza i sp3x’a)

    @AnnonymousUser
    Nadawać się nadają, po prostu nie spełniają kryterium “w ciągu ostatniego pół roku nie znaleziono żadnej luki bezpieczeństwa”.
    W związku z powyższym w stwierdzeniu z 3ciego postu:
    “Wszelkie luki w Windowsach były, są i będą rzeczą naturalną, kto chce mieć lepiej zabezpieczoną sieć, korzysta z innych dostępnych rozwiązań…”
    za “Windows” można wstawić dowolny system operacyjny, a po za tym trudnością będzie znaleźć “dostępne rozwiązanie” które nie ma luk bezpieczeństwa.

  17. To ja do dyskusji o wyższości systemu A nad B dorzucę te dwa błędy:

    http://news.zdnet.com/2100-9595_22-332141.html
    http://www.theregister.co.uk/2008/05/21/massive_debian_openssl_hangover/

    ;-)

  18. Ha, to jest kod małej Sadako, w końcu to Ring 0! Niedługo usłyszymy o tym jak mała dziewczyna zabija ludzi wychodząc z ekranów…

  19. Exploit Działa, potwierdzam ;)

  20. Aby skorzystać z exploita potrzebny jest dostę do 16 bitowego trybu zgodności czyli np z windowsem 95 albo 98 niestety u mnie w xp nie da się ustawić na koncie gościa trybu zgodności więc exploit jest bezużyteczny .

  21. @miotacz
    Sprecyzujmy – nie tyle “tryb zgodności”, co NTVDM działający w trybie VM86, co jest standardem dla 32-bitowych systemów Windows z linii NT.
    Co do konta gościa, przetestowałem, i u mnie NTVDM ładnie na koncie “Guest” działa (ofc najpierw to konto musiałem aktywować i usunąć z Local Policy “Deny logon locally”.
    Tak więc prośba do Ciebie:
    1. Napisz jak dokładnie wykonałeś test exploitu.
    2. Czy na pewno masz 32-bitowy Windows XP? 64-bitowy Windows XP, z przyczyn związanych z architekturą procesorów x86-64, nie może używać trybu vm86 (a dokładniej niemożliwy jest przeskok z long mode do vm86).
    3. Sprawdź na koncie gościa czy możesz uruchomić command.com (w uruchom). Jeśli tak, to znaczy że NTVDM u ciebie jak najbardziej działa (polecam w ‘Task Manager’ zobaczyć czy proces ntvdm.exe został uruchomiony)
    4. W miarę możliwości, przetestuj to na nowo założonym koncie normalnego użytkownika (nie Guest).

    Pozdrawiam ;>

  22. @Gynvael Coldwind
    Sprawdzałem exploit na adminie potem na gościu,a następnie na założonym koncie z ograniczonymi prawami .
    Na adminie w trybie zgodności z 95/98 działało . Na gościu i koncie z ograniczonymi prawami 0 efektu .
    Windowsa mam na 100 % 32’u bitowego , może to wina procesora który jest 64 bitowy , lecz wątpię .
    Command otwiera się bez problemu. w Menadżerze zadań wyświetla sie proces ntvdm.exe . Dorzucam jeszcze screen okienka bez trybu zgodności
    http://img12.imageshack.us/img12/4436/29644594.jpg

  23. @miotacz
    Z tego co widzę na screenie, to zgłaszany błąd wskazuje na nieznalezienie pliku “C:\windows\system32\cmd.exe” (http://msdn.microsoft.com/en-us/library/ms681382%28VS.85%29.aspx)
    Sprawdź czy taki plik u Ciebie istnieje.
    Jeżeli tak, sprawdź czy z konta gościa/etc go widać.
    Ewentualnie zmień ścieżkę w exploicie na poprawną (np. możesz cmd.exe przerzucić do katalogu exploitu i zmienić ścieżkę tak aby na niego wskazywała (ścieżkę absolutną bym zalecał)).

    Pozdrawiam :)

  24. @Gynvael Coldwind
    Dziękuje bardzo za pomoc faktycznie przyczyną błędu była lokalizacja Windowsa, który to znajduje się w “c:/windows.0” a nie “c:/windows” więc exploit nie mógł znaleźć pliku bo go po prostu nie było … Skopiowałem plik z windowsa i wkleiłem do “C:\windows\system32\” teraz chodzi bez problemu :)
    … Dziwi mnie jednak że aplikacja w trybie zgodności działała (ale to chyba sprawa tego ze w trybie zgodności windows tłumaczy wszystkie instrukcje i przekierowuje do właściwych plików )…
    Jeszcze raz Serdecznie dziękuje Ci Za pomoc .

  25. […] korzysta z kilku technik do zdobycia praw administratora, jedną z nich jest opisywana przez nas 17 dziura w Windowsach znaleziona przez Tavisa Ormandego. Metasplolit w wersji 3.4.0 dorobił się także wsparcia dla […]

Twój komentarz

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

RSS dla komentarzy: