Bezpieczeństwo systemów komputerowych Java i JavaScript Java i
Transkrypt
Bezpieczeństwo systemów komputerowych Java i JavaScript Java i
Bezpieczeństwo systemów komputerowych 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 i JavaScript mgr Katarzyna Trybicka-Francik [email protected] pok. 503 BSK - 2003 Copyright by K. Trybicka-Francik Java - historia Język Java • 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 BSK - 2003 Copyright by K. Trybicka-Francik • 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 BSK - 2003 Copyright by K. Trybicka-Francik Język Java Bezpieczeństwo języka Java Kod pośredni Java ♦ system gospodarki pamięcią ♦ automatyczne sprawdzanie zakresów we wszystkich hello.java Kompilator Java ♦ ♦ ♦ ♦ Sieć 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 Stworzenie pliku za pomocą edytora tekstu hello.world Java Maszyna wirtualna Java BSK - 2003 Ładowarka klas Copyright by K. Trybicka-Francik BSK - 2003 Copyright by K. Trybicka-Francik 1 Mechanizmy zabezpieczeń w Java Bezpieczeństwo języka nie oznacza bezpieczeństwa użytkownika BSK - 2003 Copyright by K. Trybicka-Francik • Piaskownica • Ładowarka klas • Weryfikator kodu pośredniego BSK - 2003 Mechanizmy zabezpieczeń w Java Copyright by K. Trybicka-Francik Strategie zabezpieczeń w Java • Założenia: System Java Biblioteki wykonawcze Java Maszyna wirtualna Java Piaskownica Wykonywane programy i aplety zapis odczyt Ekran komputera Weryfikator kodu pośredniego Programy ładowane do piaskownicy z WWW Ładowarka klas – 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. Klasa Security Manager hello Dysk BSK - 2003 Copyright by K. Trybicka-Francik BSK - 2003 Ograniczenia Mechanizmy zabezpieczeń w Java • 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) BSK - 2003 Copyright by K. Trybicka-Francik Copyright by K. Trybicka-Francik 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 BSK - 2003 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 Copyright by K. Trybicka-Francik 2 Inne strategie Problemy bezpieczeństwa w Javie • Brak połączeń sieciowych. Programy w Javie nie mają dostępu do sieci. • Ograniczenie możliwości realizacji połączeń. Aplety mogą tworzyć połączenia sieciowe jedynie z komputerem, z którego zostały skopiowane. • Ograniczenie możliwości realizacji połączeń. Aplety mogą tworzyć połączenia sieciowe jedynie z komputerem, których adresy są na specjalnej liście autoryzacji. • Ograniczenie możliwości realizacji połączeń. Aplety mogą 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. BSK - 2003 Copyright by K. Trybicka-Francik • 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/ BSK - 2003 Copyright by K. Trybicka-Francik Java a usługa DNS 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 BSK - 2003 Copyright by K. Trybicka-Francik BSK - 2003 Przyszłość bezpieczeństwa Javy Copyright by K. Trybicka-Francik 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 BSK - 2003 Copyright by K. Trybicka-Francik BSK - 2003 Copyright by K. Trybicka-Francik 3 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 BSK - 2003 Copyright by K. Trybicka-Francik Ataki typu blokady usługi • Ataki na procesor i stos BSK - 2003 Ataki typu blokady usługi • Ataki typu blokady usługi Ataki na procesor i stos !"# $#% % & '"# $#% (!)*+,-**)*!&."# $# !& /)* )*** % %& % BSK - 2003 Copyright by K. Trybicka-Francik Niemożliwość przerwania działania skryptu • 0 12&2& 3#%% & ! )*41 567)* %& % BSK - 2003 Ataki typu blokady usługi • Copyright by K. Trybicka-Francik Copyright by K. Trybicka-Francik Ataki typu blokady usługi Ataki na pliki wymiany • Ataki na system okien 86 8669 :9 & # #)*41 .3#3;** ### BSK - 2003 Copyright by K. Trybicka-Francik BSK - 2003 Copyright by K. Trybicka-Francik 4 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 • • BSK - 2003 Copyright by K. Trybicka-Francik Podszywanie się przy użyciu JavaScriptu • imitowanie okien dialogowych nazwy i hasła użytkownika • fałszowanie informacji o stanie przeglądarki • światy lustrzane BSK - 2003 Copyright by K. Trybicka-Francik Dziękuję za uwagę BSK - 2003 Copyright by K. Trybicka-Francik 5