Bezpieczeństwo aplikacji w systemie Tizen Tomasz Świerczek Samsung R&D Institute Poland
Tizen czym jest? 2/
Tizen nad czym pracujemy? Webkit W3C... Bootloadery uboot......wiele innych projektów systemd KDBus libima libsmack conman... Rozwijamy jądro Linuksa Smack IMA/EVM Linux Containers Sterowniki... 3/
Bezpieczeństwo aplikacji w systemie Tizen 3 przykłady problemów w projektowaniu systemu 3 rozwiązania Open Source 4/
Bezpieczeństwo aplikacji Aplikacja #1 RW Dane 5/
Bezpieczeństwo aplikacji /dev/camera Aplikacja #1 RW Dane 6/
Bezpieczeństwo aplikacji /dev/camera Aplikacja #1 RW Dane Aplikacja #2 7/
Bezpieczeństwo aplikacji /dev/camera Aplikacja #1 RW Dane RW Aplikacja #2 8/
Bezpieczeństwo aplikacji /dev/camera Aplikacja #1 RW Dane RW Aplikacja #2 9/
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 10/
Rozwiązanie (1) aplikacje i zasoby systemowe (Niektore) aplikacje (czasami) mogą mieć dostęp do (pewnych) zasobów Aplikacja #1? RW /dev/camera 11/
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 RW? Serwis (demon) RW /dev/camera 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 Osobny uprzywilejowany proces zna uprawnienia aplikacji Aplikacja #1 RW? Serwis (demon) RW /dev/camera? Serwis uprawnień aplikacji 13/
Rozwiązanie (1) aplikacje i zasoby systemowe Serwis 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? 14/
Rozwiązanie (1) aplikacje i zasoby systemowe Serwis 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 15/
Rozwiązanie (1) aplikacje i zasoby systemowe Serwis 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*** 16/
Rozwiązanie (1) aplikacje i zasoby systemowe Autorskie rozwiążanie projekt Cynara po angielsku Artichoke po polsku Karczoch J 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 17/
Rozwiązanie (2) aplikacje i ich dane Dane, process i przestrzeń adresowa aplikacji są przeznaczone tylko dla niej Aplikacja #1 RW Dane Aplikacja #2 RW Dane 18/
Rozwiązanie (2) aplikacje i ich dane Android UID per aplikacja multiuser? 19/
Rozwiązanie (2) aplikacje i ich dane Android 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) 20/
Rozwiązanie (2) aplikacje i ich dane Smack jak działa? Jabłko Truskawka 21/
Rozwiązanie (2) aplikacje i ich dane Smack jak działa? exec() Truskawka Jabłko Truskawka 22/
Rozwiązanie (2) aplikacje i ich dane Smack jak działa? exec() Truskawka Jabłko Truskawka Kiwi 23/
Rozwiązanie (2) aplikacje i ich dane Smack jak działa? exec() Truskawka open(..., O_RDWR) Jabłko Truskawka Kiwi 24/
Rozwiązanie (2) aplikacje i ich dane Smack jak działa? exec() Truskawka open(..., O_RDWR) Jabłko Truskawka Truskawka Kiwi RW Podgląd reguł: cat /smack/load2 Kiwi 25/
Rozwiązanie (2) aplikacje i ich dane Smack jak działa? exec() Truskawka open(..., O_CREAT) Jabłko Truskawka Truskawka 26/
Rozwiązanie (2) aplikacje i ich dane Tizen Smack separacja zasobów i aplikacji etykietami https://wiki.tizen.org/wiki/security:smackthreedomainmodel A A A Usługi System 27/
Rozwiązanie (3) ochrona integralności plików Czy uruchomiona aplikacja na pewno jest tą za którą się podaje? Czy otwierany plik nie został podmieniony? Aplikacja #1 28/
Rozwiązanie (3) ochrona integralności plików Z 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 29/
Rozwiązanie (3) aplikacje i ich dane IMA/EVM jak działa? exec() open() 30/
Rozwiązanie (3) aplikacje i ich dane IMA/EVM jak działa? exec() open() 1. Policz hash z zawartości 2. Odczytaj podpis z xattr 3. Zweryfikuj podpis cyfrowy zawartości pliku 31/
Rozwiązanie (3) aplikacje i ich dane IMA/EVM jak działa? exec() open() Klucz publiczny do weryfikacji 1. Policz hash z zawartości 2. Odczytaj podpis z xattr 3. Zweryfikuj podpis cyfrowy zawartości pliku Klucz prywatny poza urządzeniem 32/
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 33/
Pytania 34/