Wykład 13

Transkrypt

Wykład 13
Wykład 13
Bezpieczeństwo
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-1-
Wydział Informatyki
PB
Bezpieczeństwo
●
●
System jest bezpieczny, gdy zasoby są używane tak jak jest to (przez system)
zamierzone bez względu na okoliczności.
System może zapewniać wspaniały mechanizm ochrony gwarantujący, że
użytkownik który jest studentem nigdy nie otrzyma praw zapisu do do pliku
wyniki_egzaminu.txt, ale
–
Student może się zalogować do systemu jako prof. Kowalski.
–
Student może poprzez złośliwe działanie (np. utwórz 10000 procesów, przydziel
10GB pamięci, inne ...) zakłócić normalną pracę systemu – atak typu denial of
service.
–
Student może wystartować z dyskietki własny system operacyjny i uzyskać dostęp
do wszystkich plików na dysku twardym
–
Student może wymontować dysk z komputera, wstawić do innego systemu, a
następnie powtórzyć czynności z poprzedniego kroku.
–
Student mający znajomości w CIA może zarejestrować z odległości 200m
wszystkie znaki wpisywane na klawiaturze.
–
Student może wręczyć łapówkę profesorowi
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-2-
Wydział Informatyki
PB
Naruszenia bezpieczeństwa
●
●
●
●
●
Całkowite bezpieczeństwo jest niemożliwe do osiągnięcia - ale należy
projektować mechanizmy sprawiające, aby naruszenia były jak najrzadsze.
Ogólnie można podzielić na przypadkowe bądź celowe, złośliwe (ang.
malicious) - obrona przed złośliwymi jest dużo trudniejsza.
Najważniejsze celowe naruszenia to:
–
Nieautoryzowany dostęp do danych lub kradzież informacji.
–
Nieautoryzowana modyfikacja danych.
–
Nieautoryzowane zniszczenie danych.
–
Uniemożliwienie normalnego korzystania z systemu (ang. denial of service, DOS).
Niezbędne jest podjęcie niezbędnych środków na poziomie:
–
Fizycznym: kluczyki, kasa pancerna, ...
–
Ludzkim: może nie warto przyznawać konta osobie, która jest spędza cały wolny
czas w kasynie i jest zadłużona.
–
Sieci: Komputery nie są izolowane, dane przesyłane są liniami nad którymi nie
mamy kontroli: możliwość podsłuchu, ukrycia tożsamości, zmiany tożsamości
–
Systemu operacyjnego.
Na dzisziejszym wykładzie dwa ostatnie punkty
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-3-
Wydział Informatyki
PB
Uwierzytelnianie (ang. authentication)
użytkowników
●
●
●
Jak sprawdzić, czy identyfikator użytkownika jest autentyczny ? Istniejące podejścia
oparte są na sprawdzeniu wiedzy (hasła), pomiarach biometrycznych (linie papilarne,
wzór siatkówki), czy stanu posiadania (np. karty chipowe).
Hasła są najpopularniejsza, ale sprawiają wiele problemów.
–
Ludzie wybierają jako hasła słowa łatwe do odgadnięcia (np. swoje imię).
–
Użytkownik może zapisać trudne hasło na kartce i pozostawić w łatwo dostępnym miejscu.
–
Hasła są narażone na ujawnienie w wyniku monitoringu (np. spoglądanie zza ramienia,
przechwyt pakietów w sieci (o ile nie są szyforwane)).
Problem: W jaki sposób nie przechowywać hasła w sposób jawny, ale jednocześnie
umożliwić uwierzytelnienie ? Odp: Wykorzystując szyfrowanie w postaci
jednokierunkowej funkcji skrótu f, np.
f(“Wojtek”) =”aqw36vbuyolrw6yefgnmyulocdxnmueq98i7rtfmuo76w”
●
Postać zaszyfrowana jest przechowywana w pliku z hasłami. Przy uwierzytelnianiu jest
obliczana funkcja skrótu, a wynik porównywany z postacią zaszyfrowaną. Jeżeli funkcja
skrótu jest na tyle bezpieczna, że (a) pomimo znajomości algorytmu i (b) znajomości
postaci zakodowanej, nie da się analitycznie (bez przeszukania wyczerpującego )
odgadnąć hasła, dostęp do postaci zaszyfrowanej niewiele daje.
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-4-
Wydział Informatyki
PB
Szyfrowanie symetryczne
“Sprzedaj
akcje“
szyfrowanie
“BxWv;5df deszyfrowanie
“Sprzedaj
~TmWe#4
akcje“
^,sdgfMwir
3:dkJeTsY\
s@!q3”
BOB
Ten sam klucz
(tajny)
ALICJA
●
Algorytmy: DES,3-DES, IDEA, Blowfish, ... (szybkie !!!)
●
Wada: Jak uzgodnić tajny klucz (włamywacz może podsłuchiwać !!!)
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-5-
Wydział Informatyki
PB
Kryptografia asymetryczna
różne klucze
różne klucze
Klucz
publiczny
Klucz
publiczny
Klucz
prywatny
BOB
●
●
Klucz
prywatny
ALICJA
Zarówno Bob jak i Alicja generują pary kluczy:
–
Klucz publiczny - dostępny dla wszystkich np. w książce telefonicznej
–
Klucz prywatny - tajny
Algorytm działa w sposób następujący: Komunikat zaszyfrowany jednym kluczem z pary
można odszyfrować wyłącznie drugim kluczem.
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-6-
Wydział Informatyki
PB
Kryptografia asymetryczna - przesyłanie tajnej wiadomości
“Sprzedaj
akcje“
BOB
szyfrowanie
“BxWv;5df deszyfrowanie
“Sprzedaj
~TmWe#4
akcje“
^,sdgfMwir
3:dkJeTsY\
s@!q3”
Klucz
publiczny
Alicji
●
Tylko Alicja może odczytać wiadomość.
●
Nie trzeba uzgadniać tajnego klucza !!!
●
Alicja nie wie, czy nadawcą jest Bob
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
Klucz
prywatny
Alicji
-7-
ALICJA
Wydział Informatyki
PB
Kryptografia asymetryczna - podpis cyfrowy
“To ja BOB “
BOB
szyfrowanie
“BxWv;5df deszyfrowanie
“To ja BOB“
~TmWe#4
^,sdgfMwir
3:dkJeTsY\
s@!q3”
Klucz
publiczny
BOBa
Klucz
prywatny
BOBa
●
Każdy może odczytać wiadomość.
●
Mamy gwarancję że napisał ją BOB.
●
Dobre narzędzie do uwierzytelnienia np. program ssh.
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-8-
ALICJA
Wydział Informatyki
PB
Kryptografia asymetryczna
●
Możemy łączyć dwie techniki np. BOB szyfruje wiadomość najpierw kluczem
publicznym Alicji a potem swoim kluczem prywatnym. Alicja dekoduje
używając najpierw klucza publicznego BOBa, a następnie swojego klucza
prywatnego.
–
●
●
●
●
Alicja ma gwarancję, że komunikat wysłała BOB i jednocześnie treść jest tajna.
Techniki asymetryczne są niezwykle wolne (1000 razy wolniejsze od technik
symetrycznych) - problem w przypadku długich wiadomości, ruchu w sieci, ...
W praktyce używa się rozwiązań hybrydowych, w którym techniki
asymetryczne wykorzystuje się do wygenerowania i uzgodnienia klucza dla
szyfru symetrycznego - ale dla użytkownika nie ma to znaczenia.
Problem: Jak zagwarantować, że publiczny klucz Alicji umieszczony w książce
telefonicznej jest naprawdę kluczem Alicji. Rozwiązania: certyfikaty. Klucz
publiczny jest podpisany przez organizację której ufamy: VeriSign, PCSS,
Microsoft (- to żart).
W ten sposób powstaje PKI (Public Key Infrastructure) - e-banki, etc ....
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-9-
Wydział Informatyki
PB
Złośliwe programy - klasyfikacja
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-10-
Wydział Informatyki
PB
Tylne drzwi + bomby logiczne
●
●
●
●
●
Tylne drzwi (ang. trapdoor) Mechanizm, pozwalający osobie która jest świadoma
jego istnienia na uzyskanie dostępu.
Przykład: każdy który wykona telnet na port 12345 otrzymuje uprawnienia
Administratora.
Programiści często używają tylnych drzwi w celu ułatwienia debugowania systemu
(mogą zapomnieć je usunąć, przykład jednej z bazy danych, tylne drzwi wykryto
dopiero, gdy firma udostępniła kod na zasadach Open Source).
Włamywacze pozostawiają/instalują tylne drzwi aby ułatwić sobie (i być może innym
kolejne włamania).
Bomba logiczna, kod umieszczony w legalnym programie, który eksploduje gdy
spełnione są pewne warunki np.
–
Programista zostanie skreślony z listy płac firmy.
–
Firma pisząca program nie otrzyma zapłaty.
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-11-
Wydział Informatyki
PB
Konie trojańskie
●
●
Program, często atrakcyjny (np. gra komputerowa, program kompresji
plików, ...), często dostępny publicznie w internecie, który dodatkowo
wykonuje pewne złośliwe czynności.
–
Np. co 12 miesięcy formatuje dysk.
–
Także programy typu spyware.
Przykład: login spoofing:
(a) Fałszywy ekran logowania
(b) prawdziwy ekran logowania
●
●
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-12-
Wydział Informatyki
PB
Wirusy
Wirus
Wirus
Kod
programu
Kod
programu
Adres
początku
●
●
Wirus
Kod
programu
Wirus
Wirus
Wirus
Nagłówek
Nagłówek
Nagłówek
Nagłówek
(a)
(b)
(c)
(d)
Wirus - program zdolny do powielania przez dodanie swojego kodu do innego programu.
Uruchomienie innego programu powoduje ponowne powielenie się wirusa.
Wirusy mogą także infekować: sektor startowy (boot sektor), dokumenty programów
aplikacyjnych np. pliki Worda i Excela (bo mogą zawierać kod Visual Basica uruchamiany
automatycznie po wczytaniu dokumentu - dziękujemy ci M$) a nawet kod źródłowy (np. w
języku C)
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-13-
Wydział Informatyki
PB
Ochrona przed wirusami
●
●
●
●
●
Generalnie nie należy uruchamiać
specjalistyczne oprogramowanie typu:
niepewnego
kodu,
oprócz
tego
Skanery antywirusowe: porównują kod wirusa z bazą danych.
–
Wirusy starają się unikać wykrycia: szyfrowanie, wirusy polimorficzne.
–
Skanowanie trwa długo.
–
Jeżeli wirusa nie ma w bazie danych - problemy.
Sprawdzanie spójności: utrzymuj sumy kontrolne dla każdego pliku (wirus
może próbować je zmienić)
Blokery: Uniemożliwiaj podejrzane zachowanie np. zapis do plików .exe - ale
robi to wiele legalnych programów.
Kontrola zachowania (ang. behavioral checking) wykrywaj zmiany zachowania
się programu - przedmiot badań naukowych.
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-14-
Wydział Informatyki
PB
Ataki typu Denial of Service
●
●
●
Przykład: w nagłówku pakietu w jednym z protokołów TCP/IP pewne pole przechowuje
długość pakietu.
–
System Windows 95 nie sprawdzał, czy te pole ma sensowną wartość. (Tzn. zakładał że wartość
ta jest zawsze poprawna).
–
W efekcie wystarczyło wysłać przez sieć pakiet o wartości pola długość = 0xffffffff. System
Windows przyjmował to za pakiet o długości 4GB i usiłując go “skopiować” zamazywał cały
RAM komputera.
Inny przykład: dzięki błędowi w procesorach Intela każdy użytkownik mógł wykonać
niedozwoloną instrukcję o prefiksie 0x0f i “wyłączyć” procesor -> na szczęście
odnaleziono obejście programowe.
Nowość: ataki typu DDOS (Distributed DOS). Włamywacze przejmują kilka (set,tysięcy)
komputerów w sieci (zombi). Następnie z każdego komputera częściowo otwierają setki
połączeń TCP np. do serwera WWW - co przeciąża serwer, tak że zwykli użytkownicy nie
mogą z niego korzystać.
–
Obrona przed takimi atakami jest bardzo trudna, ponieważ ciężko stwierdzić że w ogóle trwa atak
(może serwer jest obciążony legalnym ruchem)
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-15-
Wydział Informatyki
PB
Robaki (ang. Worms)
●
●
●
Używa połączenie sieciowego do przenoszenie się z jednego systemu na drugi. Nie
wymaga nosiciela.
Robaki mogą się przenosić przy pomocy:
–
E-maili. Otwarcie e-maila automatycznie uruchamia załącznik (dziękujemy ci M$). Załącznik
zawiera program, który przegląda książkę adresową i rozsyła się do wszystkich
korespondentów.
–
Przydaje się odrobina inżynierii społecznej np. tytuł maila “I Love You”.
Możliwości zdalnego wykonania kodu - dzięki wykorzystaniu techniki przepełnienia
bufora.
–
Błąd w systemie operacyjnym (często nie w jądrze, ale w uprzywilejowanych programach
dokonujących komunikacji sieciowej użytkownika typu serwer WWW, serwer poczty) pozwala
atakującemu na zdalne wykonanie dowolnego kodu.
–
Ten kod transmituje robaka z maszyny atakującego, uruchamia robaka, skanuje sieć w
poszukiwaniu innych ofiar itp.
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-16-
Wydział Informatyki
PB
Przepełnienie bufora (1)
●
Wyobraźmy sobie program wykonujący sie wysokimi uprawnieniami (np.
Administratora - patrz bit suid) a w w funkcja A wołana z funkcji main:
void A() {
char B[128]
scanf(“%s”,Bufor);
}
●
●
// dalszy kod funkcji A
Generalnie chodzi o sytuację w której (a) program otrzymuje dane z zewnątrz
(b) na dane zaalokowaliśmy bufor o stałej długości, (c) nie sprawdzamy, czy
dane przesyłane z zewnątrz nie zajmują więcej miejsca niż na nie
przeznaczyliśmy.
Co się stanie jeżeli napis będzie dłuższy od 128 znaków ???
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-17-
Wydział Informatyki
PB
Przepełnienie bufora (2)
Przestrzeń adresów
0xFFFF...
Zmienne lokalne
Stack
main
Stack
pointer
Przestrzeń adresów
Przestrzeń adresów
Zmienne lokalne
main
Zmienne lokalne
main
Adr. powrotu
Adr. powrotu
Zmienne
lokalne A
Zmienne
lokalne A
B
SP
SP
B
Bufor B
●
●
Program
Program
Program
(a)
(b)
(c)
Zmienne lokalne oraz adresy powrotu z funkcji (instr. call) przechowywane są
na stosie.
W wyniku przepełnienia bufora adres powrotu zostaje zamazany. Przy
złośliwym skonstruowaniu danych, adres powrotu może wskazać na inną część
bufora, co daje atakującemu możliwość wykonania dowolnego kodu z
uprawnieniami zaatakowanego procesu (np. wyświetlenie shella)
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-18-
Wydział Informatyki
PB
Jak walczyć z przepełnieniami bufora
●
●
●
Generalnie nie wolno ufać danym przekazanym na wejściu procesu (dotyczy to zwłaszcza
procesów o wysokich uprawnieniach).
Do przetwarzania danych używać wyłącznie funkcji pozwalających na określenie rozmiaru
bufora (strcpy => strncpy).
Ale mimo to firma M$ miała olbrzymie problemy z przepełnieniami bufora (robaki
sieciowe NIMDA, CODE RED).
–
●
●
W Linuksie istnieje możliwość ładowania programów i bibliotek pod losowo wybrany
adres, co niezwykle utrudnia konstruowanie exploitów.
Z ostatecznym (???) ratunkiem pośpieszyły Intel i AMD: najnowsze wersje ich
procesorów mają możliwość określenia zabronienia zakazu wykonania kodu (oprócz
istniejącego już zakazu zapisu) dla każdej strony procesu.
–
●
W sieci szybko pojawiały się tzw. exploity, przez co użytkownicy nie mający doświadczenia
technicznego (tzw. script kiddies) mogli się włamywać do systemów przez sieć.
Nic prostszego jak ustawić bit zakazu dla wszystkich stron stosu.
Nowe języki programowanie (Java, C# - platforma .NET) nie używają wskaźników - i
problemu nie ma (???)
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-19-
Wydział Informatyki
PB
Zasady projektowania bezpiecznych systemów
●
Budowa systemu powinna być powszechnie znana.
●
Domyślnie, dostęp powinien być zabroniony.
●
Sprawdzaj uprawnienia na bieżąco.
●
Dawaj procesom jak najmniejsze uprawnienia.
●
●
Mechanizmy ochrony powinny być proste, jednolite i zaimplementowane w najniższych
warstwach systemu.
Wybrane metody ochrony nie mogą zniechęcać użytkowników.
...i utrzymuj prostotę budowy
Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych
-20-
Wydział Informatyki
PB