Bezpieczeństwo systemów komputerowych Java i JavaScript mgr Katarzyna Trybicka-Francik kasiat@zeus.polsl.gliwice.pl pok. 503 Java i JavaScript używane w celu dodania cech interaktywności do stron WWW mogą być wykonywane w przeglądarce jak i na serwerze WWW Java - historia 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 1
Język Java 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 Java Kod pośredni Java hello.java Kompilator Java Stworzenie pliku za pomocą edytora tekstu Java hello.world Sieć Maszyna wirtualna Java Ładowarka klas Bezpieczeństwo języka Java system gospodarki pamięcią automatyczne sprawdzanie zakresów we wszystkich odwołaniach do łańcuchów znakowych i tablic w Java nie istnieje pojęcie wskaźnika mechanizm dziedziczenia prostego ścisła kontrola typów zaawansowany system obsługi wyjątków 2
Bezpieczeństwo języka nie oznacza bezpieczeństwa użytkownika Mechanizmy zabezpieczeń wjava Piaskownica Ładowarka klas Weryfikator kodu pośredniego Mechanizmy zabezpieczeń wjava Ekran komputera System Java Maszyna wirtualna Java Biblioteki wykonawcze Java Piaskownica Wykonywane programy iaplety odczyt Klasa Security Manager zapis Weryfikator kodu pośredniego Ładowarka klas Programy ładowane do piaskownicy z WWW hello Dysk 3
Strategie zabezpieczeń wjava Założenia: Java 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. Java 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. Mechanizmy zabezpieczeń wjava Zakaz wykonywania programów Java Dopuszczenie wykonywania programów Java ze zróżnicowanymi uprawnieniami, zależnymi od pochodzenia programu Dopuszczenie wykonywania programów Java bez jakichkolwiek ograniczeń (HotJava firmy Sun) Ograniczenia 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 Java i testów gwarantujących bezpieczeństwo operacji wykonywanych przez program uniemożliwienie wykonywania dowolnych programów 4
Inne strategie Brak połączeń sieciowych. Programy w Javie nie mają dostępu do sieci. Ograniczenie możliwości realizacji połączeń. Apletymogą tworzyć połączenia sieciowe jedynie z komputerem, z którego zostały skopiowane. Ograniczenie możliwości realizacji połączeń. Apletymogą tworzyć połączenia sieciowe jedynie z komputerem, których adresy są na specjalnej liście autoryzacji. Ograniczenie możliwości realizacji połączeń. Apletymogą tworzyć 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. Problemy bezpieczeństwa w Javie 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 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 5
Java a usługa DNS Przyszłość bezpieczeństwa Javy JavaScript stworzony przez firmę Netscape w celu ułatwienia tworzenia animacji oraz innych form przekazu interaktywnego na stronach WWW programy napisane w JavaScipt umożliwiają sterowanie działaniem przeglądarki bezpośrednio z poziomu dokumentu w języku HTML rodzimy język przeglądarek Netscape 6
Bezpieczeństwo w języku JavaScript JavaScript nie udostępnia metod pozwalających na bezpośredni dostęp do systemu plików na komputerze użytkownika JavaScript nie posiada metod umożliwiających bezpośrednie tworzenie połączeń sieciowych z innymi komputerami Ataki typu blokady usługi Ataki na procesor i stos Ataki typu blokady usługi Ataki na procesor i stos!"# $#% % & '"# $#% (! )*+,-**)*!&."# $#!& /)* )*** % %& % 7
Ataki typu blokady usługi Niemożliwość przerwania działania skryptu 0 1 2 &2& 3#% % &! )*41 56 7)* %& % Ataki typu blokady usługi Ataki na pliki wymiany 86 86 6 9 :9 & # #)*41.3#3;** ### Ataki typu blokady usługi Ataki na system okien 8
Ataki typu blokady usługi - zapobieganie 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 Podszywanie się przy użyciu JavaScriptu imitowanie okien dialogowych nazwy i hasła użytkownika fałszowanie informacji o stanie przeglądarki światy lustrzane Dziękuję za uwagę 9