Opracowanie pytań na egzamin magisterski
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

W4-INF-kierunek-mgr.md 3.8KB

Mechanizmy ochrony danych w systemach operacyjnych

Ponieważ podstawowym zadaniem systemu operacyjnego jest zapewnienie możliwości (pseudo)równoczesnego wykonywania wielu procesów użytkownika – czyli uruchomionych w systemie programów – istotne jest zabezpieczenie przed wzajemnym czytaniem lub nadpisywaniem pamięci systemowej (RAM) przez różne procesy. We współczesnych systemach ten rodzaj ochrony jest zapewniany przez wirtualizację pamięci (chociaż nie jest to jedyny jej cel).

W systemie ze stronicowaną pamięcią wirtualną, każdy proces posiada swoją własną przestrzeń adresową, której rozmiar zależy od długości słowa maszynowego (w przypadku procesorów i systemów 64-bitowych – 264 bajtów) i generalnie może być znacznie większy od rozmiaru pamięci zainstalowanej fizycznie. Stosowane w takiej wirtualnej przestrzeni adresowej przez programy adresy logiczne są tłumaczone przez system operacyjny na adresy fizyczne dzięki tablicom stron, przechowującym informację o przyporządkowaniu określonych fragmentów przestrzeni adresowej procesu (stron) do odpowiednich fragmentów pamięci fizycznej (ramek).
Aby utrudnić ataki na oprogramowanie za pomocą exploitów, dodatkowo może zostać zastosowana randomizacja przestrzeni adresowej (ang. ASLR – Adress Space Layout Randomization). Polega ona na losowym rozmieszczaniu kluczowych obszarów (np. segmentu danych i segmentu stosu) w wirtualnej przestrzeni adresowej procesu, dzięki czemu atakującemu trudniej jest przewidzieć, w którym miejscu powinien podłożyć potrzebne do dokonania ataku dane (np. spreparowany adres powrotny z funkcji).

Zabezpieczenia pamięci czasami da się obejść wykorzystując podatności architektury procesora, takie jak odkryte w 2018 roku różne warianty ataku Spectre, na które procesory podatne są w różnym stopniu – w przypadku architektury x86 generalnie procesory firmy Intel podatne są na więcej wariantów niż procesory firmy AMD, ale problem dotyczy też innych architektur (np. ARM). Ataki te polegają na odpowiednim wykorzystaniu chybień spekulatywnego wykonywania kodu – czyli wykonywania przez część jednostek procesora fragmentu kodu, do którego może nastąpić skok, zanim będzie wiadomo czy rzeczywiście ten skok nastąpi – do pośredniego odczytywania przez zawartość różnych buforów procesora danych z pamięci, do których nie powinno być dostępu. Skutecznie wykonany atak Spectre może np. umożliwić wyciek kluczy kryptograficznych.

Innym zadaniem realizowanym przez system operacyjny jest ochrona danych przechowywanych w pamięci masowej (na dysku) przed dostępem przez różnych użytkowników. Służą do tego uprawnienia na poziomie systemu plików:

  • w systemach uniksowych (m. in. Linux) – każdy plik ma przypisanego właściciela zwykłego (konto użytkownika) i właściciela grupowego (grupę użytkowników) oraz istnieją, nie licząc kilku specjalnych, trzy rodzaje uprawnień – do odczytu (r), zapisu (w) i wykonania (x) – które podstawowo przydziela się osobno dla właściciela, właściciela grupowego i wszystkich pozostałych użytkowników, a jeżeli taki podział nie jest wystarczający – można wykorzystać listy ACL, które pozwalają te same uprawnienia przydzielać dowolnym innym użytkownikom lub grupom,
  • w systemie Windows z systemem plików NTFS – każdy plik ma przypisanego właściciela (użytkownika albo grupę), istnieje pięć podstawowych rodzajów uprawnień (pełna kontrola, modyfikacja, wykonanie, odczyt, zapis) i wiele rodzajów specjalnych (np. przejęcie na własność), które przydziela się dla konkretnych użytkowników lub grup za pomocą list ACL, oprócz tego występuje dość skomplikowane dziedziczenie uprawnień w hierarchii katalogów.