1 Bezpieczeństwo aplikacji w systemie TizenTomasz Świerczek Samsung R&D Institute Poland
2 Tizen – czym jest?
3 Tizen – nad czym pracujemy?...wiele innych projektów systemd KDBus libima libsmack conman ... Webkit W3C ... Bootloadery uboot Rozwijamy jądro Linuksa Smack IMA/EVM Linux Containers Sterowniki
4 Bezpieczeństwo aplikacji w systemie Tizen3 przykłady problemów w projektowaniu systemu 3 rozwiązania Open Source
5 Bezpieczeństwo aplikacjiAplikacja #1 Dane RW
6 Bezpieczeństwo aplikacji/dev/camera RW Aplikacja #1 Dane RW
7 Bezpieczeństwo aplikacji/dev/camera RW Aplikacja #1 Dane RW RW Aplikacja #2
8 Bezpieczeństwo aplikacji/dev/camera RW Aplikacja #1 Dane RW RW RW Aplikacja #2
9 Bezpieczeństwo aplikacji/dev/camera RW Aplikacja #1 Dane RW RW RW Aplikacja #2
10 Problemy do rozwiązania(1) Ochrona zasobów systemowych przed aplikacjami (2) Ochrona aplikacji i ich zasobów przed innymi aplikacjami (3) Ochrona aplikacji przed nimi samymi
11 Rozwiązanie (1) – aplikacje i zasoby systemowe(Niektore) aplikacje (czasami) mogą mieć dostęp do (pewnych) zasobów ? Aplikacja #1 /dev/camera RW
12 Rozwiązanie (1) – aplikacje i zasoby systemowe(Niektore) aplikacje (czasami) mogą mieć dostęp do (pewnych) zasobów Uprzywilejowany serwis zarządza dostępem do zasobu ? Aplikacja #1 Serwis (demon) /dev/camera RW RW
13 Rozwiązanie (1) – aplikacje i zasoby systemowe(Niektore) aplikacje (czasami) mogą mieć dostęp do (pewnych) zasobów Uprzywilejowany serwis zarządza dostępem do zasobu Osobny uprzywilejowany proces zna uprawnienia aplikacji ? Aplikacja #1 Serwis (demon) /dev/camera RW RW ? Serwis uprawnień aplikacji
14 Rozwiązanie (1) – aplikacje i zasoby systemoweSerwis obsługuje zasób systemowy musi umieć zidentyfikować klienta (np getsockopt(...,SO_PEERSEC,...) Serwis uprawnień aplikacji zna wszystkie aplikacje i ich uprawnienia potrafi odpowiedzieć na pytanie „czy A ma dostęp do B”?
15 Rozwiązanie (1) – aplikacje i zasoby systemoweSerwis obsługuje zasób systemowy musi umieć zidentyfikować klienta (np getsockopt(...,SO_PEERSEC,...) Serwis uprawnień aplikacji zna wszystkie aplikacje i ich uprawnienia potrafi odpowiedzieć na pytanie „czy A ma dostęp do B”? PolKit gotowe rozwiązanie użyty np. w Ubuntu
16 Rozwiązanie (1) – aplikacje i zasoby systemoweSerwis obsługuje zasób systemowy musi umieć zidentyfikować klienta (np getsockopt(...,SO_PEERSEC,...) Serwis uprawnień aplikacji zna wszystkie aplikacje i ich uprawnienia potrafi odpowiedzieć na pytanie „czy A ma dostęp do B”? PolKit gotowe rozwiązanie użyty np. w Ubuntu IPC : DBUS skomplikowana polityka, reguły w JS ***WOLNY***
17 Rozwiązanie (1) – aplikacje i zasoby systemoweAutorskie rozwiążanie – projekt Cynara po angielsku Artichoke po polsku Karczoch Serwis uprawnień aplikacji oparty o prostą bazę danych polityki sqlite3 IPC: Unix Domain Socket https://wiki.tizen.org/wiki/Security:Cynara wkrótce na github’ie... Amaizing things will happen here soon. You just wait. Dr. Bertruger, Doom 3
18 Rozwiązanie (2) – aplikacje i ich daneDane, process i przestrzeń adresowa aplikacji są przeznaczone tylko dla niej Aplikacja #1 Dane RW Dane Aplikacja #2 RW
19 Rozwiązanie (2) – aplikacje i ich daneAndroid – UID per aplikacja multiuser?
20 Rozwiązanie (2) – aplikacje i ich daneAndroid – UID per aplikacja multiuser? Tizen – Smack Simplified Mandatory Access Control in Kernel rodzaj LSM etykiety per proces, plik, socket, ... każdy dostęp musi być zezwolony wprost poza standardowymi etykietami na dysku: xattr autor: Casey Schaufler (http://schaufler-ca.com)
21 Rozwiązanie (2) – aplikacje i ich daneSmack – jak działa? Access Exec Jabłko Truskawka
22 Rozwiązanie (2) – aplikacje i ich daneSmack – jak działa? exec() Truskawka Access Exec Jabłko Truskawka
23 Rozwiązanie (2) – aplikacje i ich daneSmack – jak działa? exec() Truskawka Access Exec Access Jabłko Truskawka Kiwi
24 Rozwiązanie (2) – aplikacje i ich daneSmack – jak działa? exec() Truskawka open(..., O_RDWR) Access Exec Access Jabłko Truskawka Kiwi
25 Rozwiązanie (2) – aplikacje i ich daneSmack – jak działa? exec() Truskawka open(..., O_RDWR) Access Exec Truskawka Kiwi RW Podgląd reguł: cat /smack/load2 Access Jabłko Truskawka Kiwi
26 Rozwiązanie (2) – aplikacje i ich daneSmack – jak działa? exec() Truskawka open(..., O_CREAT) Access Exec Access Jabłko Truskawka Truskawka
27 Rozwiązanie (2) – aplikacje i ich daneTizen – Smack separacja zasobów i aplikacji etykietami https://wiki.tizen.org/wiki/Security:SmackThreeDomainModel A A A Usługi System
28 Rozwiązanie (3) – ochrona integralności plikówCzy uruchomiona aplikacja na pewno jest tą za którą się podaje? Czy otwierany plik nie został podmieniony? Aplikacja #1
29 Rozwiązanie (3) – ochrona integralności plikówZ pomocą przychodzi Linux – IMA/EVM Integrity Measurement Architecture Extended Verification Module System podpisów i hashy plików przechowywanie: xattr Autor: Dimitry Kasatkin (http://linux-ima.sourceforge.net) Aplikacja #1
30 Rozwiązanie (3) – aplikacje i ich daneIMA/EVM – jak działa? exec() open()
31 Rozwiązanie (3) – aplikacje i ich daneIMA/EVM – jak działa? exec() open() Policz hash z zawartości Odczytaj podpis z xattr Zweryfikuj podpis cyfrowy zawartości pliku ŹLE OK
32 Rozwiązanie (3) – aplikacje i ich daneIMA/EVM – jak działa? exec() open() Policz hash z zawartości Odczytaj podpis z xattr Zweryfikuj podpis cyfrowy zawartości pliku Klucz publiczny do weryfikacji Klucz prywatny poza urządzeniem ŹLE OK
33 Podsumowanie rozwiązań(1) Ochrona zasobów systemowych przed aplikacjami Wprowadzenie serwisów + Cynara/PolKit (2) Ochrona aplikacji i ich zasobów przed innymi aplikacjami Smack (3) Ochrona aplikacji przed nimi samymi IMA/EVM
34 Pytania