Bezpieczeństwo systemów komputerowych i Script używane w celu dodania cech interaktywności do stron WWW mogą być wykonywane w przeglądarce jak i na serwerze WWW i Script mgr Katarzyna Trybicka-Francik kasiat@zeus.polsl.gliwice.pl pok. 503 - historia Język Język Oak powstawał 1991 jako uniwersalny język oprogramowywania urządzeń elektroniki użytkowej Język zaprojektowany pod kątem zwartych i wysoce niezawodnych programów Programy napisane w Oak miały być kompilowane do postaci interpretowanego kodu pośredniego W 1994 zaprezentowano możliwości języka dla przeglądarek WWW Język, który z założenia daje małe i przenośne programy Język obiektowy, ogólnego przeznaczenia Programy kompilowane są do kodu pośredniego Język Kod pośredni Bezpieczeństwo języka hello.java Stworzenie pliku za pomocą edytora tekstu Kompilator hello.world Sieć system gospodarki pamięcią automatyczne sprawdzanie zakresów we wszystkich odwołaniach do łańcuchów znakowych i tablic w nie istnieje pojęcie wskaźnika mechanizm dziedziczenia prostego ścisła kontrola typów zaawansowany system obsługi wyjątków Maszyna wirtualna Ładowarka klas 1
Mechanizmy zabezpieczeń w Bezpieczeństwo języka nie oznacza bezpieczeństwa użytkownika Piaskownica Ładowarka klas Weryfikator kodu pośredniego Mechanizmy zabezpieczeń w Strategie zabezpieczeń w System Maszyna wirtualna Biblioteki wykonawcze Piaskownica Wykonywane programy iaplety odczyt zapis Weryfikator kodu pośredniego Ładowarka klas Programy ładowane do piaskownicy z WWW Założenia: jest językiem ogólnego przeznaczenia, służącym do tworzenia edytorów tekstu, programów obsługi poczty elektronicznej, przeglądarek WWW oraz wszelkich innych programów użytkowych. Programy te mogą być przechowywane na dysku twardym komputera użytkownika, ewentualnie pobierane z wewnętrznego serwera firmy. jest także językiem przeznaczonym do tworzenia programów pobieranych ze stron WWW i wykonywanych w przeglądarkach, jak np. animacje, interaktywne systemy do prowadzenia telekonferencji czy programy wykonujące skomplikowane obliczenia na komputerach użytkowników. Ekran komputera Klasa Security Manager hello Dysk Mechanizmy zabezpieczeń w Ograniczenia Zakaz wykonywania programów Dopuszczenie wykonywania programów ze zróżnicowanymi uprawnieniami, zależnymi od pochodzenia programu Dopuszczenie wykonywania programów bez jakichkolwiek ograniczeń (Hot firmy Sun) Ograniczenie brak możliwości odczytania plików i katalogów na komputerze użytkownika brak możliwości zapisywania, usuwania i zmiany nazw plików na komputerze użytkowników brak możliwości inicjowania połączeń sieciowych z innymi komputerami z wyjątkiem komputera, z którego aplet został ściągnięty brak możliwości odbierania połączeń sieciowych rak możliwości wyświetlania okien bez specjalnej ramki informującej o braku potwierdzenia wiarygodności brak możliwości utworzenia klas ClassLoader oraz SecurityManager Brak możliwości uruchomienia programów systemowych Cel zabezpieczenie poufności danych na komputerach użytkowników zabezpieczenie danych użytkowników przed nieautoryzowaną modyfikacją uniemożliwienie apletowi badania odporności systemów zabezpieczeń wewnątrz strefy chronionej przez firewall uniemożliwienie apletowi udawanie normalnego serwera działającego w wewnętrznej sieci firmy uniemożliwienie apletowi tworzenie okien przypominających okna systemowe uniemożliwienie wyłączenia mechanizmów kontroli typów i testów gwarantujących bezpieczeństwo operacji wykonywanych przez program uniemożliwienie wykonywania dowolnych programów 2
Inne strategie Problemy bezpieczeństwa w Javie Brak połączeń sieciowych. Programy w Javie nie mają dostępu do sieci. połączenia sieciowe jedynie z komputerem, z którego zostały skopiowane. połączenia sieciowe jedynie z komputerem, których adresy są na specjalnej liście autoryzacji. połączenia sieciowe tylko poprzez określone porty. Brak restrykcji dla apletów pobranych z określonych komputerów. Narzucenie ograniczeń na aplety z innych źródeł. Brak ograniczeń dla apletów opatrzonych odpowiednią sygnaturą. Nieograniczone możliwości połączeń sieciowych. Błędy implementacyjn błędy w maszynie wirtualnej Javy, pozwalające ominąć reguły kontroli typów błędy bibliotek klas błędy w projekcie języka http://www.cs.princeton.edu/sip/ Problemy bezpieczeństwa w Javie a usługa DNS Błędy w projekcie języka brak formalnej specyfikacji modelu bezpieczeństwa bezpieczeństwo całego systemu zależy od utrzymania integralności systemu typów języka Propozycje zmian nie powinno być możliwe zapisywanie zmiennych publicznych w różnych obszarach widoczności nazw zastosowany w Javie mechanizm pakietów powinien wspomagać egzekwowanie strategii bezpieczeństwa kod pośredni Javy winien być prostszy do sprawdzenia i formalnej weryfikacji Przyszłość bezpieczeństwa Javy Script stworzony przez firmę Netscape w celu ułatwienia tworzenia animacji oraz innych form przekazu interaktywnego na stronach WWW programy napisane w Scipt umożliwiają sterowanie działaniem przeglądarki bezpośrednio z poziomu dokumentu w języku HTML rodzimy język przeglądarek Netscape 3
Bezpieczeństwo w języku Script Script nie udostępnia metod pozwalających na bezpośredni dostęp do systemu plików na komputerze użytkownika Script nie posiada metod umożliwiających bezpośrednie tworzenie połączeń sieciowych z innymi komputerami Ataki na procesor i stos Ataki na procesor i stos!"# $# & '"# $# (! )*+,-**)*!&."# $#!& /)* )*** & Niemożliwość przerwania działania skryptu 0 1 2 &2& 3# &! )*41 56 7)* & Ataki na pliki wymiany Ataki na system okien 86 86 6 9 :9 & # #)*41.3#3;** ### 4
- zapobieganie Podszywanie się przy użyciu Scriptu określenie i monitorowanie deficytowych zasobów systemu podejrzliwie należy traktować aplety wykorzystujące i rezerwujące zasoby systemu operacyjnego, takie jak pliki, okna i połączenia sieciowe użytkownik powinien mieć możliwość wyświetlania listy apletów aktualnie wykonywanych przez przeglądarkę i przerywania ich działania imitowanie okien dialogowych nazwy i hasła użytkownika fałszowanie informacji o stanie przeglądarki światy lustrzane Dziękuję za uwagę 5