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

Podobne dokumenty