1 Pluskwy, robale i inne paskudztwo Aleksy Schubert Instytut Informatyki Uniwersytet Warszawski 20 listopada 2007
2 Pluskwy ● Do informatyki wprowadzone przez tę
3 panią – admirał Grace Hooper Pluskwy
4 ● Do informatyki wprowadzone przez tę panią – admirał Grace Hooper Pluskwy
5 ● Do informatyki wprowadzone przez Grace Hooper ● Pierwsza zachowana pluskwa wyglądała tak: Pluskwy
6 ● Do informatyki wprowadzone przez Grace Hooper ● Pierwsza zachowana pluskwa wyglądała tak: Pluskwy
7 ● Do informatyki wprowadzone przez Grace Hooper ● Pierwsza zachowana pluskwa to ćma znaleziona 9 września 1947 roku ● Termin ten był używany przez inżynierów jeszcze w XIX wieku
8 ●... ● Termin ten był używany przez inżynierów jeszcze w XIX wieku ● Pluskwy są niebezpieczne Pluskwy
9 ●... ● Termin ten był używany przez inżynierów jeszcze w XIX wieku ● Pluskwy są niebezpieczne Pluskwy
10 ● Do informatyki wprowadzone przez Grace Hooper ● Pierwsza zachowana pluskwa to była ćma znaleziona 9 września 1947 roku ● Termin ten był używany przez inżynierów jeszcze w XIX wieku ● Pluskwy są niebezpieczne ●...i bardzo trudne do wykrycia Pluskwy
11 ...tym bardziej, że nie wiadomo, czym są... Pluskwy
12 Robale ● Pierwszy internetowy robal użyty był w laboratoriach Xerox-a w roku 1978 ● Opis pojawił się w 1982 roku ● Pierwszy złośliwy robal powstał w roku 1989 napisany przez Roberta Morrisa ● Wykorzystywał kilka prostych luk: – sendmail, fingerd, rsh/rexec ● Tylko kopiowanie
13 Robale ● Szybkość rozprzestrzeniania się:
14 Robale ● Robert Morris stanął przed sądem – 3 lata okresu próbnego – 400 godzin prac publicznych – 10 050 dolarów grzywny Były przypadki, że w wyniku działania robali unieruchomiony został sprzęt lekarski
15 Inne paskudztwo ● Wirusy, makrowirusy ● Spam ● Konie trojańskie ● Adware ● Spyware ●...
16 Jak temu zaradzić? ● Wyszukiwarki błędów ● Piaskownice i wirtualizacja ● Skanery wirusów ● Zapory ogniowe ● Certyfikaty ● PCC (proof-carrying code) ●...
17 Wyszukiwarki błędów ● Pierwszy problem – czym jest błąd ● Podstawowy rodzaj błędu – przekroczenie zakresu bufora ● Trzeba używać funkcji snprintf zamiast sprintf ● Wady: – można przekroczenie zakresu uzyskać inaczej – wiele alarmów jest zbędne
18 Piaskownice i wirtualizacja ● Program działa w obudówce (piaskownicy) ● Jeśli chce wykonać podejrzaną operację (np. skasowanie pliku) obudówka mu – zabrania albo – pyta się użytkownika, czy można ● Wirtualizacja – można zrobić obudówkę dla całego systemu operacyjnego
19 Skanery wirusów ● Tworzenie i badanie sygnatur programów ● Wyłapywanie charakterystycznych wzorców ● Przypomina to trochę core wars ● Wady: – konieczność odświeżania oprogramowania antywirusowego – programy mogą ulec popsuciu w wyniku naprawy systemu
20 Zapory ogniowe ● Oddzielna sieć i maszyna odpowiedzialne za dostęp do Internetu ● Maszyna ma za zadanie: – ograniczać ruch – obsługiwać narażone usługi ● Wady: – potrzebna oddzielna maszyna – ograniczenia w funkcjonalności
21 Certyfikaty ● Po części używane w programach antywirusowych ● Dystrybutor programu oblicza skrót (np. SHA1) programu i go podpisuje ● Określenie odpowiedzialności ● Wady: – problemy z budowaniem zaufania – problemy z uzyskaniem zaufania przez dystrybutorów
22 Proof-carrying code ● Kod niosący dowód
23 Kod niosący dowód ● Proof-carrying code ● Matematyczna pewność poprawności ● Musi być wiadomo, czym jest błąd ● Wady: – pracochłonność – trudno uzyskać rzetelną sprawdzarkę
24 Zadanie int a[], int rozmiar; int i, j, min; i=0; while (i < rozmiar) { min = i; j = i+1; while (j < rozmiar) { if (a[j] < a[min]) { min = j; } j = j+1; } zamien(i, min, a); i = i+1; }
25 Zadanie
26 Założenia: ● a zawiera liczby naturalne, jej rozmiar jest liczbą naturalną ● rozmiar to liczba elementów a ● zamien(x, y, b) zamienia miejscami elementy na pozycjach x, y w b
27 Zadanie Pytania: ● Czy przebieg wykonania jest bezbłędny? ● Czy elementy w a po wykonaniu operacji ustawione są rosnąco? ● Czy elementy w a po wykonaniu operacji są takie same jak przed wykonaniem?
28 Miłej zabawy!