Bezpieczeństwo aplikacji w systemie Tizen Tomasz Świerczek Samsung R&D Institute Poland
Tizen – czym jest?
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
Bezpieczeństwo aplikacji w systemie Tizen 3 przykłady problemów w projektowaniu systemu 3 rozwiązania Open Source
Bezpieczeństwo aplikacji Aplikacja #1 Dane RW
Bezpieczeństwo aplikacji /dev/camera RW Aplikacja #1 Dane RW
Bezpieczeństwo aplikacji /dev/camera RW Aplikacja #1 Dane RW RW Aplikacja #2
Bezpieczeństwo aplikacji /dev/camera RW Aplikacja #1 Dane RW RW RW Aplikacja #2
Bezpieczeństwo aplikacji /dev/camera RW Aplikacja #1 Dane RW RW RW Aplikacja #2
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
Rozwiązanie (1) – aplikacje i zasoby systemowe (Niektore) aplikacje (czasami) mogą mieć dostęp do (pewnych) zasobów ? Aplikacja #1 /dev/camera RW
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
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
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”?
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
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***
Rozwiązanie (1) – aplikacje i zasoby systemowe Autorskie 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
Rozwiązanie (2) – aplikacje i ich dane Dane, process i przestrzeń adresowa aplikacji są przeznaczone tylko dla niej Aplikacja #1 Dane RW Dane Aplikacja #2 RW
Rozwiązanie (2) – aplikacje i ich dane Android – UID per aplikacja multiuser?
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)
Rozwiązanie (2) – aplikacje i ich dane Smack – jak działa? Access Exec Jabłko Truskawka
Rozwiązanie (2) – aplikacje i ich dane Smack – jak działa? exec() Truskawka Access Exec Jabłko Truskawka
Rozwiązanie (2) – aplikacje i ich dane Smack – jak działa? exec() Truskawka Access Exec Access Jabłko Truskawka Kiwi
Rozwiązanie (2) – aplikacje i ich dane Smack – jak działa? exec() Truskawka open(..., O_RDWR) Access Exec Access Jabłko Truskawka Kiwi
Rozwiązanie (2) – aplikacje i ich dane Smack – jak działa? exec() Truskawka open(..., O_RDWR) Access Exec Truskawka Kiwi RW Podgląd reguł: cat /smack/load2 Access Jabłko Truskawka Kiwi
Rozwiązanie (2) – aplikacje i ich dane Smack – jak działa? exec() Truskawka open(..., O_CREAT) Access Exec Access Jabłko Truskawka Truskawka
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
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
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
Rozwiązanie (3) – aplikacje i ich dane IMA/EVM – jak działa? exec() open()
Rozwiązanie (3) – aplikacje i ich dane IMA/EVM – jak działa? exec() open() Policz hash z zawartości Odczytaj podpis z xattr Zweryfikuj podpis cyfrowy zawartości pliku ŹLE OK
Rozwiązanie (3) – aplikacje i ich dane IMA/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
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
Pytania