Automatyczne wykrywanie błędów ujawnienia pamięci jądra w systemach Windows i Linux (Security PWNing Conference 2017)

Information

  • Language: Polish
  • Conference: Security PWNing Conference
  • Location: Warsaw, Poland
  • Date: November 2017
  • Speaker(s): Mateusz ‘j00ru’ Jurczyk

Slides

Video

Abstract

W jądrach systemów operacyjnych przepełnienia bufora i inne typowe błędy zarządzania pamięcią są zwykle widoczne gołym okiem i mogą zostać wykryte na wiele dobrze znanych sposobów. Inaczej jest w przypadku podatności bezpośrednio związanych z wykorzystaniem przestrzeni adresowej trybu użytkownika jako kanału wymiany danych pomiędzy aplikacją a systemem. Problemy te są zazwyczaj znacznie bardziej subtelne, a przez to mogą pozostać niezauważone przez wiele lat, choć niektóre z nich są równie groźne, co klasyczne błędy w kodzie.

Jednym z przykładów takiej subtelnej klasy błędów jest ujawnienie niezainicjalizowanej pamięci jądra (pochodzącej ze stosu lub sterty) do aplikacji działających na prawach zwykłego użytkownika. Z jednej strony dopuszczenie do tego typu małych „wycieków” jest bardzo łatwe dla programisty trybu jądra, a z drugiej nie pozostawiają one po sobie łatwo widocznych śladów, w związku z czym są bardzo rzadko zauważane i naprawiane. W konsekwencji jeszcze do niedawna w powszechnie używanych środowiskach (w szczególności w systemie Windows) roiło się od tego typu luk, które mogły zostać wykorzystane do obejścia systemowych zabezpieczeń (np. KASLR), lub po prostu do ujawnienia wrażliwych danych przetwarzanych w przeszłości przez jądro, takich jak zawartość plików, ruch sieciowy, nazwy okien itp. W celu wykrycia owych wycieków, prelegent stworzył narzędzie opierające się o emulator architektury x86 (Bochs) z dodatkową instrumentacją, która wykonuje pełny taint tracking pamięci jądra. Podejście to doprowadziło do tej pory do odkrycia blisko 40 luk w systemie Windows oraz ponad 10 pomniejszych problemów w jądrze Linux. W niniejszej prelekcji omówiona zostanie architektura wspomnianego projektu, praktyczne doświadczenia związane z jego działaniem oraz sposób eksploitacji najciekawszych podatności.

Resources