340 likes | 570 Views
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
E N D
Bezpieczeństwo aplikacji w systemie Tizen Tomasz Świerczek Samsung R&D Institute Poland
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 Dane Aplikacja #1 RW
Bezpieczeństwo aplikacji /dev/camera RW Dane Aplikacja #1 RW
Bezpieczeństwo aplikacji /dev/camera RW Dane Aplikacja #1 RW RW Aplikacja #2
Bezpieczeństwo aplikacji /dev/camera RW Dane Aplikacja #1 RW RW RW Aplikacja #2
Bezpieczeństwo aplikacji /dev/camera RW Dane Aplikacja #1 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 • ? /dev/camera Aplikacja #1 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 • ? /dev/camera Serwis (demon) Aplikacja #1 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 • ? /dev/camera Serwis (demon) Aplikacja #1 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 heresoon. Youjustwait. • Dr. Bertruger, Doom 3
Rozwiązanie (2) – aplikacje i ich dane • Dane, process i przestrzeń adresowa aplikacji są przeznaczone tylko dla niej Dane Aplikacja #1 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? Exec Access • Jabłko • Truskawka
Rozwiązanie (2) – aplikacje i ich dane • Smack – jak działa? • Truskawka exec() Exec Access • Jabłko • Truskawka
Rozwiązanie (2) – aplikacje i ich dane • Smack – jak działa? • Truskawka exec() Exec Access Access • Jabłko • Truskawka • Kiwi
Rozwiązanie (2) – aplikacje i ich dane • Smack – jak działa? • Truskawka exec() open(..., O_RDWR) Exec Access Access • Jabłko • Truskawka • Kiwi
Rozwiązanie (2) – aplikacje i ich dane • Smack – jak działa? • Truskawka exec() open(..., O_RDWR) Exec Access 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? • Truskawka exec() open(..., O_CREAT) Exec Access 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 • IntegrityMeasurementArchitecture • Extended VerificationModule • System podpisów i hashyplików • przechowywanie: xattr • Autor: DimitryKasatkin (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 OK ŹLE
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 OK ŹLE
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