Ochrona poprawek jądra
Kernel Patch Protection ( KPP ), nieoficjalnie znany jako PatchGuard , to funkcja 64-bitowych ( x64 ) wersji systemu Microsoft Windows , która zapobiega aktualizowaniu jądra . Po raz pierwszy został wprowadzony w 2005 roku w wersjach x64 systemów Windows XP i Windows Server 2003 z dodatkiem Service Pack 1.
„Poprawienie jądra” odnosi się do nieobsługiwanej modyfikacji głównego składnika lub jądra systemu operacyjnego Windows. Taka modyfikacja nigdy nie była obsługiwana przez firmę Microsoft, ponieważ według firmy Microsoft może znacznie zmniejszyć bezpieczeństwo, niezawodność i wydajność systemu. Chociaż Microsoft tego nie zaleca, możliwe jest załatanie jądra w x86 systemu Windows; jednak w przypadku wersji x64 systemu Windows firma Microsoft zdecydowała się na wdrożenie dodatkowej ochrony i barier technicznych w łataniu jądra.
Ponieważ łatanie jądra jest możliwe w 32-bitowych (x86) wersjach systemu Windows, kilku twórców oprogramowania antywirusowego używa łatania jądra do wdrażania usług antywirusowych i innych usług bezpieczeństwa. Techniki te nie będą działać na komputerach z systemem Windows w wersji x64. Z tego powodu ochrona przed poprawkami jądra spowodowała, że twórcy oprogramowania antywirusowego musieli przeprojektować swoje oprogramowanie bez stosowania technik łatania jądra.
Jednak ze względu na konstrukcję jądra systemu Windows funkcja Kernel Patch Protection nie może całkowicie zapobiec aktualizowaniu jądra. Doprowadziło to do krytyki, że ponieważ KPP jest niedoskonałą obroną, problemy stwarzane producentom oprogramowania antywirusowego przewyższają korzyści, ponieważ autorzy złośliwego oprogramowania po prostu znajdują sposoby na obejście jego zabezpieczeń. Niemniej jednak Kernel Patch Protection może nadal zapobiegać problemom ze stabilnością, niezawodnością i wydajnością systemu powodowanym przez legalne oprogramowanie aktualizujące jądro w nieobsługiwany sposób.
Przegląd techniczny
Jądro systemu Windows zostało zaprojektowane w taki sposób, aby sterowniki urządzeń miały ten sam poziom uprawnień, co samo jądro. Oczekuje się, że sterowniki urządzeń nie będą modyfikować ani aktualizować podstawowych struktur systemowych w jądrze. Jednak w x86 systemu Windows system Windows nie wymusza tego oczekiwania. W rezultacie niektóre programy x86, w szczególności niektóre programy zabezpieczające i antywirusowe , zostały zaprojektowane do wykonywania potrzebnych zadań poprzez ładowanie sterowników, które modyfikują podstawowe struktury jądra.
W wersjach x64 systemu Windows firma Microsoft zaczęła wprowadzać ograniczenia dotyczące struktur, które sterowniki mogą, a których nie mogą modyfikować. Kernel Patch Protection to technologia, która wymusza te ograniczenia. Działa poprzez okresowe sprawdzanie, czy chronione struktury systemowe w jądrze nie zostały zmodyfikowane. Jeśli modyfikacja zostanie wykryta, system Windows zainicjuje sprawdzanie błędów i zamknie system, wyświetlając niebieski ekran i/lub uruchamiając ponownie. Odpowiedni numer kontroli błędów to 0x109, kod kontroli błędów to CRITICAL_STRUCTURE_CORRUPTION. Zabronione modyfikacje obejmują:
- Modyfikowanie tabel deskryptorów usług systemowych
- Modyfikowanie tablicy deskryptorów przerwań
- Modyfikowanie globalnej tablicy deskryptorów
- Używanie stosów jądra nieprzydzielonych przez jądro
- Modyfikowanie lub łatanie kodu zawartego w samym jądrze lub w bibliotekach jądra HAL lub NDIS
Kernel Patch Protection chroni tylko przed sterownikami urządzeń modyfikującymi jądro. Nie zapewnia żadnej ochrony przed aktualizacją jednego sterownika urządzenia przez inny.
Ostatecznie, ponieważ sterowniki urządzeń mają ten sam poziom uprawnień co samo jądro, niemożliwe jest całkowite uniemożliwienie sterownikom obejścia ochrony poprawek jądra, a następnie łatania jądra. KPP stanowi jednak istotną przeszkodę w udanym patchowaniu jądra. Dzięki wysoce zaciemnionemu kodowi i wprowadzającym w błąd nazwom symboli, KPP stosuje zabezpieczenia poprzez zaciemnianie aby uniemożliwić próby jego obejścia. Okresowe aktualizacje KPP również sprawiają, że jest to „ruchomy cel”, ponieważ techniki omijania, które mogą działać przez jakiś czas, prawdopodobnie przestaną działać wraz z następną aktualizacją. Od momentu powstania w 2005 roku firma Microsoft wydała do tej pory dwie duże aktualizacje KPP, z których każda miała na celu złamanie technik obejścia znanych z poprzednich wersji.
Zalety
Łatanie jądra nigdy nie było wspierane przez Microsoft, ponieważ może powodować szereg negatywnych skutków. Kernel Patch Protection chroni przed tymi negatywnymi skutkami, które obejmują:
- Poważne błędy w jądrze.
- Problemy z niezawodnością wynikające z wielu programów próbujących załatać te same części jądra.
- Naruszone bezpieczeństwo systemu.
- Rootkity mogą wykorzystywać dostęp do jądra, aby osadzić się w systemie operacyjnym, co staje się prawie niemożliwe do usunięcia.
Często zadawane pytania dotyczące ochrony poprawek jądra firmy Microsoft wyjaśniają dalej:
Ponieważ łatanie zastępuje kod jądra nieznanym, nieprzetestowanym kodem, nie ma możliwości oceny jakości ani wpływu kodu innej firmy… Badanie danych Online Crash Analysis (OCA) w firmie Microsoft pokazuje, że awarie systemu często wynikają z obu złośliwe i niezłośliwe oprogramowanie, które łata jądro.
— „Ochrona poprawek jądra: często zadawane pytania” . Microsoftu . 22 stycznia 2007 . Źródło 22 lutego 2007 .
Krytyka
Aplikacje innych firm
Niektóre programy zabezpieczające komputery, takie jak McAfee VirusScan firmy McAfee i Norton AntiVirus firmy Symantec , działały poprzez łatanie jądra w systemach x86. [ potrzebne źródło ] Oprogramowanie antywirusowe opracowane przez firmę Kaspersky Lab jest znane z tego, że szeroko wykorzystuje łatanie kodu jądra na procesorach x86 edycje Windowsa. Ten rodzaj oprogramowania antywirusowego nie będzie działać na komputerach z wersjami x64 systemu Windows z powodu ochrony przed poprawkami jądra. Z tego powodu McAfee wezwał Microsoft do całkowitego usunięcia KPP z systemu Windows lub wprowadzenia wyjątków dla oprogramowania stworzonego przez „zaufane firmy”, takie jak one same.
Korporacyjne oprogramowanie antywirusowe firmy Symantec oraz Norton 2010 i nowsze działały w wersjach x64 systemu Windows pomimo ograniczeń KPP, choć z mniejszą zdolnością do zapewniania ochrony przed złośliwym oprogramowaniem dnia zerowego. Oprogramowanie antywirusowe konkurencji ESET , Trend Micro , Grisoft AVG, avast! , Avira Anti-Vir i Sophos nie łataj jądra w domyślnych konfiguracjach, ale może łatać jądro, gdy włączone są funkcje takie jak „zaawansowana ochrona procesów” lub „zapobieganie nieautoryzowanemu kończeniu procesów”.
Microsoft nie osłabia Kernel Patch Protection, robiąc wyjątki od niej, chociaż wiadomo, że od czasu do czasu rozluźnia swoje ograniczenia, na przykład na korzyść oprogramowania do wirtualizacji hiperwizora . Zamiast tego Microsoft współpracował z firmami zewnętrznymi w celu stworzenia nowych interfejsów programowania aplikacji , które pomagają oprogramowaniu zabezpieczającemu wykonywać wymagane zadania bez łatania jądra. Te nowe interfejsy zostały uwzględnione w dodatku Service Pack 1 dla systemu Windows Vista .
Słabości
Ze względu na konstrukcję jądra systemu Windows funkcja Kernel Patch Protection nie może całkowicie zapobiec aktualizowaniu jądra. To skłoniło dostawców zabezpieczeń komputerowych, McAfee i Symantec , do stwierdzenia, że ponieważ KPP jest niedoskonałą ochroną, problemy stwarzane dostawcom zabezpieczeń przeważają nad korzyściami, ponieważ złośliwe oprogramowanie po prostu znajdzie sposoby na obejście zabezpieczeń KPP, a oprogramowanie zabezpieczające innych firm będzie miało mniejszą swobodę działania w obronie systemu.
W styczniu 2006 roku badacze bezpieczeństwa znani pod pseudonimami „skape” i „Skywing” opublikowali raport opisujący metody, częściowo teoretyczne, za pomocą których można ominąć ochronę łatek jądra. Skywing opublikował drugi raport w styczniu 2007 r. Na temat obejścia KPP w wersji 2, a trzeci raport we wrześniu 2007 r. Na temat KPP w wersji 3. Ponadto w październiku 2006 r. Firma ochroniarska Authentium opracowała metodę działania mającą na celu ominięcie KPP.
Niemniej jednak firma Microsoft oświadczyła, że jest zobowiązana do usunięcia wszelkich luk, które umożliwiają obejście KPP w ramach standardowego procesu Security Response Center. Zgodnie z tym stwierdzeniem firma Microsoft wydała do tej pory dwie duże aktualizacje KPP, z których każda miała na celu złamanie technik obejścia znanych z poprzednich wersji.
Zachowanie antymonopolowe
W 2006 roku Komisja Europejska wyraziła zaniepokojenie Kernel Patch Protection, twierdząc, że jest to antykonkurencyjne . Jednak własny produkt antywirusowy Microsoftu, Windows Live OneCare , nie miał specjalnego wyjątku od KPP. Zamiast tego Windows Live OneCare używał (i zawsze używał) metod innych niż łatanie jądra w celu świadczenia usług ochrony przed wirusami. Jednak z innych powodów wersja x64 usługi Windows Live OneCare nie była dostępna do 15 listopada 2007 r.
Linki zewnętrzne
- Prawda o PatchGuardzie: dlaczego firma Symantec ciągle narzeka
- Wprowadzenie do ochrony poprawek jądra
- Dyrektor firmy Microsoft wyjaśnia niedawne zamieszanie na rynku związane z zabezpieczeniami systemu Windows Vista
- Ochrona poprawek jądra: często zadawane pytania
- Windows Vista x64 Security – Pt 2 – Patchguard zarchiwizowany 2008-12-09 w Wayback Machine
Artykuły na Uninformed.org:
- Omijanie PatchGuard w systemie Windows x64
- Podważanie PatchGuard w wersji 2
- PatchGuard Reloaded: Krótka analiza PatchGuard w wersji 3
Podejście obejścia roboczego
- KPP Destroyer (w tym kod źródłowy) - 2015
- Działający sterownik do obejścia PatchGuard 3 (wraz z kodem źródłowym) - 2008
- Ominięcie PatchGuarda za pomocą edytora szesnastkowego - 2009
Poradniki bezpieczeństwa firmy Microsoft: