SlideShare a Scribd company logo
1 of 28
Download to read offline
Szczyrk, 11-13 października 2013

Smack - prosta alternatywa dla SELinux

Rafał Krypa

1
Smack
•
•
•
•

Simplified Mandatory Access Control in Kernel
Autor i maintainer: Casey Schaufler casey@schaufler-ca.com
Strona internetowa http://schaufler-ca.com/
Pierwsza wersja: 17 kwietnia 2008

2
Mandatory Access Control (MAC)
• Kontrola dostępu zarządzana centralną polityką systemu
• Tylko administrator może konfigurować politykę i atrybuty
bezpieczeństwa
• Podmiot (subject) – element wykonujący dostęp: proces, wątek,
użytkownik
• Obiekt (object) – element do którego dostaje się podmiot
• Dostęp (access) – rodzaj dostępu, akcja
• MAC vs. DAC (Discretionary Access Control)
• “Separation is easy, sharing is diffcult”

3
Linux Security Module (LSM)
• Warstwa abstrakcji dla podsystemów bezpieczeństwa w jądrze
Linuksa
• Moduł dostarcza wskaźniki do funkcji, które weryfikują dostęp
• Utworzony, gdyż Linus Torvalds nie chciał wybrać „jedynego
słusznego” podsystemu bezpieczeństwa
• Przez pewien czas SELinux jako jedyny używał tego API
• Kolejne moduły LSM: Smack, TOMOYO, AppArmor, Yama
• Proponowano obsługę stackowania kilku modułów LSM

4
Który moduł bezpieczeństwa jest najlepszy?

If you guys had been able to argue on hard data and be in
agreement, LSM wouldn't have been needed in the first place.
When I see the security people making sane arguments and
agreeing on something, that will change. Quite frankly, I expect
hell to freeze over before that happens, and pigs will be nesting in
trees. But hey, I can hope.
Linus Torvalds

5
Dlaczego powstał Smack – słowami autora
• I respect the design decisions that SELinux has made regarding
granularity without agreeing with them myself.
• My understanding of the current SELinux philosophy is that policy
should only be written by professionals (…). For policy that requires
the level of sophistication that SELinux does I would have a hard
time arguing otherwise.
• I am interested in seeing what an SELinux policy to do what Smack
does would look like. I personally though it would be easier to write
an LSM than to write that policy.

6
Zasady działania
• Subject – proces (nie wątek)
• Object – obiekt systemu plików, inny proces
• Każdy subject i object identyfikowany etykietą
•
•

Napis ASCII do 255 znaków (wcześniej 23)
Kilka etykiet wbudowanych

• Access: standardowe typy uprawnień: R, W, X, A (append) oraz
T (transmute)
• Rule – reguła definiująca prawa dostępu danego podmiotu do
obiektu. Dla każdej pary (subject, object) najwyżej jedna.

7
Wbudowana polityka
hat
^

RX

RX

RX
salceson

RX

floor
_

RWXA
RWXA

8

RX
kaszanka

RWXA
star
*

RWXA
Reguły użytkownika
•
•

Reguły wpisywane do /smack/load2 (ulotne)
Pliki konfiguracyjne w /etc/smack/accesses.d/
•

•

Ładowane przy starcie przez program smackload

Przykładowe reguły:

TopSecret
Secret
Manager
User
New
Closed
9

Secret
Unclass
Game
HR
Old
Off

rx
R
x
w
rRrRr
-
Jaki to rodzaj dostępu?
• Przykłady:
•
•
•
•
•
•

kill() – zapis
sendmsg() – zapis (druga strona nie potrzebuje odczytu)
ptrace() – odczyt i zapis
flock() – zapis (wymiana informacji?)
rename() – odczyt i zapis do katalogu źródłowego i docelowego
bind() – nic

• Use the source, Luke!
•

10

security/smack/smack_lsm.c
Skąd się biorą etykiety
•
•
•
•
•

Proces init otrzymuję etykietę _ (floor)
Proces potomny otrzymuje etykietę taką jak rodzic
Proces uprzywilejowany może zmienić swoją (tylko) etykietę
Etykieta procesu dostępna w /proc/PID/attr/current
Dla plików i katalogów zapisane w rozszerzonych atrybutach
(security.SMACK64 xattr)
• Każdy nowy plik otrzymuję etykietę procesu, który go utworzył
• Dla komunikacji sieciowej etykiety przesyłane jako opcja IP
(CIPSO (ab)use)
• Smack trzyma w pamięci wszystkie etykiety, które napotkał
11
Przejścia etykiet
• Dostępne od kernela 2.6.38
• Zmiana etykiety procesu w przypadku execve()
•

Gdy wykonywany program ma atrybut security.SMACK64EXEC

• Zmiana etykiety pliku utworzonego w specjalnym katalogu
•
•
•
•

12

Gdy katalog ma atrybut security.SMACK64TRANSMUTE
Wartość „TRUE” (!!)
Nowy plik otrzyma etykietę katalogu, a nie procesu
Tworzący proces musi mieć uprawnienie transmute na katalogu
Co może root
• POSIX capabilities
• Uprawnienie CAP_MAC_OVERRIDE pozwala obchodzić politykę
• Uprawnienie CAP_MAC_ADMIN pozwala konfigurować politykę
(pośrednio także obchodzić)
• Domyślnie root nie jest ograniczany
• Użycie /smack/onlycap (kernel >= 2.6.28)
•
•
•

13

Wpisanie specjalnej etykiety do tego pliku
Tylko procesy z tą etykietą mogą korzystać z CAP_MAC_OVERRIDE i
CAP_MAC_ADMIN
Bug kernel < 3.8
Logi
• Konfiguracja w /smack/logging
•
•

Maska dwóch bitów, logowanie odmów (1) i zezwoleń (2)
Domyślnie loguje odmowy

• Logi trafiają w podsystem audit, domyślnie dostępne w dmesg
audit(1239127909.223:22): lsm=SMACK
fn=smack_inode_permission action=denied
subject="FOO" object="_" requested=wx pid=6699
comm="rm" name="etienne" dev=sda8 ino=1236993

14
Jak zacząć (1)
• Wersja kernela >= 2.6.25 (rekomendowana przynajmniej 3.5)
• Konfiguracja kernela
•
•
•
•

CONFIG_SECURITY
CONFIG_NETLABEL (kernel < 3.8)
CONFIG_SECURITY_NETWORK (kernel < 3.8)
CONFIG_SMACK

• System działa z domyślną polityką i etykietami

15
Jak zacząć (2)
• Pseudo system plików do konfiguracji (smackfs)
•
•

mount -t smackfs smackfs /smack (kernel < 3.8)
mount -t smackfs smackfs /sys/fs/smack (kernel >= 3.8)

• Smack userspace (https://github.com/smack-team/smack)
•
•
•
•

libsmack, smack-utils, skrypty startowe
Konfiguracja w /etc/smack
Skrypt startowy montuje smackfs i ładuje reguły z plików
Biblioteka libsmack do konfiguracji z poziomu C/C++

• Systemd natywnie obsługuje Smacka od wersji 198
•

16

Montuje smackfs i ładuje reguły (własna implementacja systemd)
Interfejs jądra
• /smack/load, /smack/load2
•
•

Zapis reguł w postaci <SUBJECT> <OBJECT> <ACCESS>
Odczyt pełnej polityki (wszystkich reguł)

• /smack/access, /smack/access2
•

Zapytania o dostęp z przestrzeni użytkownika, format jak /smack/load

• /smack/change-rule
•
•

Zmiana reguły zamiast nadpisywania
Format <SUBJECT> <OBJECT> <ACCESS_ADD> <ACCESS_DEL>

• /smack/logging, /smack/onlycap, inne
• → Documentation/security/Smack.txt
17
Problemy, pułapki
• SQLite i blokady plików
•
•
•
•

Program potrzebuje bazy tylko do odczytu
SQLite zakłada blokadę dla zapewnienia spójności
Smack traktuje blokady jak zapis
Proponowany nowy poziom dostępu – L (lock)

• Ptrace i SMACK64EXEC
•
•
•
•

18

Nie można śledzić procesu z inną etykietą
Nawet root nie może
Smack nic nie loguje
Workaround, poprawka logowania w jądrze
Wydajność
• Etykiety i reguły nigdy nie usuwane z pamięci
• Struktura danych – skierowana lista (dwupoziomowa)
•

Wydajność sprawdzania dostępu poprawiana jądrze 3.2 i 3.11

• Ładowanie reguł do systemu w postaci tekstowej
•

Wydajność ładowania poprawiona w jądrze 3.12

• Brak znanych problemów wydajnościowych w tej chwili
•
19

Maintainer otwarty na dalsze optymalizacje
Tworzenie polityki
Zachowanie aplikacji pokryte przez politykę

Potencjalne niedziałanie
aplikacji
Potencjalne naruszenia
bezpieczeństwa

20
Tworzenie polityki dla zmieniającego się systemu
• Analiza statyczna
•
•
•

Jakich dostępów wymaga program?
Jakich dostępów wymagają użyte biblioteki?
Jak obsłużyć zmianę kodu w bibliotece?

• Analiza dynamiczna
•
•

Uruchomić program, zebrać logi, dodać reguły. Czynność powtórzyć.
Pokrycie aplikacji testami.

• Nadmiarowe reguły, problem z rozrostem polityki.

21
Tworzenie polityki, duża granularność
• Tizen 2
•
•
•
•

Każda aplikacja ma osobną etykietę
Wiele różnych etykiet dla zasobów
600-700 etykiet
25000 reguł

• Trudno opisać złożone współdzielenie danych
• Wykorzystanie logów dla dodawania reguł
• Duża polityka, trudna analiza, wiele zbędnych uprawnień

22
Problemy z tworzeniem polityki w Tizen 2
•
•
•
•
•

Późne aplikowanie Smacka dla wygody programistów.
Bezpieczeństwo jako moduł, który można „włączyć”.
Stałe zmiany w platformie.
Brak akceptacji dla czasowego niedziałania platformy (daily release)
„Security broke me code!”

23
Tworzenie polityki, mała granularność
• Tizen 3
• Polityka podstawa – tylko trzy poziomy
•
•
•

•

„floor” – co każdy proces czytać powinien (/, /dev/, /bin/sh, etc.)
„system” – demony systemowe, z uprawnieniem do czytania i pisania
zasobów systemu
„application” – wszystkie aplikacje, nie izolowane od siebie przez
Smacka
Dodatkowe domeny możliwe dla odseparowania wrażliwych aplikacji
(np. manager haseł)

• Jaka jest użyteczność Smacka na tym poziomie?

24
Tizen 3, polityka trzech domen

system
RX
RX

app-shared

floor

25

RWXAT

system-shared

W

RX
app

RWXAT

RX
Historia Smacka w Linuksie
•
•
•
•
•
•
•
•
•
•

2.6.25: Pierwsza wersja
2.6.28: Opcjonalne ograniczanie procesów uprzywilejowanych
2.6.31: Obsługa logowania dostępów
2.6.38: Obsługa atrybutów SMACK64EXEC, SMACK64TRANSMUTE
2.6.39: Obsługa atrybutu SMACK64MMAP
3.2: Obsługa /smack/access (zapytania z przestrzeni użytkownika)
3.5: Wydłużenie etykiet z 23 do 255 znaków
3.7: Obsługa /smack/revoke-subject
3.8: Nowy punkt montowania smackfs (/sys/fs/smack)
3.10: Obsługa /smack/change-rule (modyfikacja reguł)
26
Literatura
• Dokumentacja jądra Linuksa Documentation/security/Smack.txt
• Prezentacja autora na Linux.conf.au
http://mirror.linux.org.au/pub/linux.conf.au/2008/Thu/mel8-092.ogg
• Smack for simplified access control, LWN
http://lwn.net/Articles/244531/
• Talking Smack for Tizen Security, LWN
http://lwn.net/Articles/552787/
• Prezentacja na Tizen Devcon 2013
http://download.tizen.org/misc/media/conference2013/slides/TDC20
13-It_May_Be_Simple_But_How_Is_It_Useful-Smack_Me_Now.pdf
27
PYTANIA?

28

More Related Content

Similar to Jesień Linuksowa 2013, Smack

SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITRedge Technologies
 
[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics System[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics SystemArtur Wronski
 
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...SecuRing
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PROIDEA
 
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue TeamuPiotr Kaźmierczak
 
SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013Adam Przybyła
 
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...Krzysztof Binkowski
 
Bezpieczeństwo sieci komputerowych - wykład 4
Bezpieczeństwo sieci komputerowych - wykład 4Bezpieczeństwo sieci komputerowych - wykład 4
Bezpieczeństwo sieci komputerowych - wykład 4Piotr Szmielew
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbaćBartosz Ratajczyk
 
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...PROIDEA
 
Logi dla dużych firm_Tameshi na AWS Community Day .pdf
Logi dla dużych firm_Tameshi na AWS Community Day .pdfLogi dla dużych firm_Tameshi na AWS Community Day .pdf
Logi dla dużych firm_Tameshi na AWS Community Day .pdfTameshi Team
 
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr BuckiPROIDEA
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Divante
 
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza SzymonSadlo
 
Linux. Serwery. Bezpieczeństwo
Linux. Serwery. BezpieczeństwoLinux. Serwery. Bezpieczeństwo
Linux. Serwery. BezpieczeństwoWydawnictwo Helion
 
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...PROIDEA
 

Similar to Jesień Linuksowa 2013, Smack (20)

SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
 
[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics System[#2] architektura - IBM Integrated Analytics System
[#2] architektura - IBM Integrated Analytics System
 
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
Czy twoje zabezpieczenia są skuteczne? Błędy i podatności w rozwiązaniach zab...
 
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
PLNOG22 - Piotr Stolarek - Bezpieczeństwo użytkowania platform usługowych Tel...
 
Dlaczego flopsar
Dlaczego flopsarDlaczego flopsar
Dlaczego flopsar
 
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
 
SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013
 
Slackware Linux. Ćwiczenia
Slackware Linux. ĆwiczeniaSlackware Linux. Ćwiczenia
Slackware Linux. Ćwiczenia
 
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
 
Bezpieczeństwo sieci komputerowych - wykład 4
Bezpieczeństwo sieci komputerowych - wykład 4Bezpieczeństwo sieci komputerowych - wykład 4
Bezpieczeństwo sieci komputerowych - wykład 4
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
 
Logi dla dużych firm_Tameshi na AWS Community Day .pdf
Logi dla dużych firm_Tameshi na AWS Community Day .pdfLogi dla dużych firm_Tameshi na AWS Community Day .pdf
Logi dla dużych firm_Tameshi na AWS Community Day .pdf
 
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
4Developers 2015: Frameworki jee vs cross-site scripting (xss) - Piotr Bucki
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13
 
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
 
Linux. Serwery. Bezpieczeństwo
Linux. Serwery. BezpieczeństwoLinux. Serwery. Bezpieczeństwo
Linux. Serwery. Bezpieczeństwo
 
O co chodzi z FILESTREAM?
O co chodzi z FILESTREAM?O co chodzi z FILESTREAM?
O co chodzi z FILESTREAM?
 
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
 

Jesień Linuksowa 2013, Smack

  • 1. Szczyrk, 11-13 października 2013 Smack - prosta alternatywa dla SELinux Rafał Krypa 1
  • 2. Smack • • • • Simplified Mandatory Access Control in Kernel Autor i maintainer: Casey Schaufler casey@schaufler-ca.com Strona internetowa http://schaufler-ca.com/ Pierwsza wersja: 17 kwietnia 2008 2
  • 3. Mandatory Access Control (MAC) • Kontrola dostępu zarządzana centralną polityką systemu • Tylko administrator może konfigurować politykę i atrybuty bezpieczeństwa • Podmiot (subject) – element wykonujący dostęp: proces, wątek, użytkownik • Obiekt (object) – element do którego dostaje się podmiot • Dostęp (access) – rodzaj dostępu, akcja • MAC vs. DAC (Discretionary Access Control) • “Separation is easy, sharing is diffcult” 3
  • 4. Linux Security Module (LSM) • Warstwa abstrakcji dla podsystemów bezpieczeństwa w jądrze Linuksa • Moduł dostarcza wskaźniki do funkcji, które weryfikują dostęp • Utworzony, gdyż Linus Torvalds nie chciał wybrać „jedynego słusznego” podsystemu bezpieczeństwa • Przez pewien czas SELinux jako jedyny używał tego API • Kolejne moduły LSM: Smack, TOMOYO, AppArmor, Yama • Proponowano obsługę stackowania kilku modułów LSM 4
  • 5. Który moduł bezpieczeństwa jest najlepszy? If you guys had been able to argue on hard data and be in agreement, LSM wouldn't have been needed in the first place. When I see the security people making sane arguments and agreeing on something, that will change. Quite frankly, I expect hell to freeze over before that happens, and pigs will be nesting in trees. But hey, I can hope. Linus Torvalds 5
  • 6. Dlaczego powstał Smack – słowami autora • I respect the design decisions that SELinux has made regarding granularity without agreeing with them myself. • My understanding of the current SELinux philosophy is that policy should only be written by professionals (…). For policy that requires the level of sophistication that SELinux does I would have a hard time arguing otherwise. • I am interested in seeing what an SELinux policy to do what Smack does would look like. I personally though it would be easier to write an LSM than to write that policy. 6
  • 7. Zasady działania • Subject – proces (nie wątek) • Object – obiekt systemu plików, inny proces • Każdy subject i object identyfikowany etykietą • • Napis ASCII do 255 znaków (wcześniej 23) Kilka etykiet wbudowanych • Access: standardowe typy uprawnień: R, W, X, A (append) oraz T (transmute) • Rule – reguła definiująca prawa dostępu danego podmiotu do obiektu. Dla każdej pary (subject, object) najwyżej jedna. 7
  • 9. Reguły użytkownika • • Reguły wpisywane do /smack/load2 (ulotne) Pliki konfiguracyjne w /etc/smack/accesses.d/ • • Ładowane przy starcie przez program smackload Przykładowe reguły: TopSecret Secret Manager User New Closed 9 Secret Unclass Game HR Old Off rx R x w rRrRr -
  • 10. Jaki to rodzaj dostępu? • Przykłady: • • • • • • kill() – zapis sendmsg() – zapis (druga strona nie potrzebuje odczytu) ptrace() – odczyt i zapis flock() – zapis (wymiana informacji?) rename() – odczyt i zapis do katalogu źródłowego i docelowego bind() – nic • Use the source, Luke! • 10 security/smack/smack_lsm.c
  • 11. Skąd się biorą etykiety • • • • • Proces init otrzymuję etykietę _ (floor) Proces potomny otrzymuje etykietę taką jak rodzic Proces uprzywilejowany może zmienić swoją (tylko) etykietę Etykieta procesu dostępna w /proc/PID/attr/current Dla plików i katalogów zapisane w rozszerzonych atrybutach (security.SMACK64 xattr) • Każdy nowy plik otrzymuję etykietę procesu, który go utworzył • Dla komunikacji sieciowej etykiety przesyłane jako opcja IP (CIPSO (ab)use) • Smack trzyma w pamięci wszystkie etykiety, które napotkał 11
  • 12. Przejścia etykiet • Dostępne od kernela 2.6.38 • Zmiana etykiety procesu w przypadku execve() • Gdy wykonywany program ma atrybut security.SMACK64EXEC • Zmiana etykiety pliku utworzonego w specjalnym katalogu • • • • 12 Gdy katalog ma atrybut security.SMACK64TRANSMUTE Wartość „TRUE” (!!) Nowy plik otrzyma etykietę katalogu, a nie procesu Tworzący proces musi mieć uprawnienie transmute na katalogu
  • 13. Co może root • POSIX capabilities • Uprawnienie CAP_MAC_OVERRIDE pozwala obchodzić politykę • Uprawnienie CAP_MAC_ADMIN pozwala konfigurować politykę (pośrednio także obchodzić) • Domyślnie root nie jest ograniczany • Użycie /smack/onlycap (kernel >= 2.6.28) • • • 13 Wpisanie specjalnej etykiety do tego pliku Tylko procesy z tą etykietą mogą korzystać z CAP_MAC_OVERRIDE i CAP_MAC_ADMIN Bug kernel < 3.8
  • 14. Logi • Konfiguracja w /smack/logging • • Maska dwóch bitów, logowanie odmów (1) i zezwoleń (2) Domyślnie loguje odmowy • Logi trafiają w podsystem audit, domyślnie dostępne w dmesg audit(1239127909.223:22): lsm=SMACK fn=smack_inode_permission action=denied subject="FOO" object="_" requested=wx pid=6699 comm="rm" name="etienne" dev=sda8 ino=1236993 14
  • 15. Jak zacząć (1) • Wersja kernela >= 2.6.25 (rekomendowana przynajmniej 3.5) • Konfiguracja kernela • • • • CONFIG_SECURITY CONFIG_NETLABEL (kernel < 3.8) CONFIG_SECURITY_NETWORK (kernel < 3.8) CONFIG_SMACK • System działa z domyślną polityką i etykietami 15
  • 16. Jak zacząć (2) • Pseudo system plików do konfiguracji (smackfs) • • mount -t smackfs smackfs /smack (kernel < 3.8) mount -t smackfs smackfs /sys/fs/smack (kernel >= 3.8) • Smack userspace (https://github.com/smack-team/smack) • • • • libsmack, smack-utils, skrypty startowe Konfiguracja w /etc/smack Skrypt startowy montuje smackfs i ładuje reguły z plików Biblioteka libsmack do konfiguracji z poziomu C/C++ • Systemd natywnie obsługuje Smacka od wersji 198 • 16 Montuje smackfs i ładuje reguły (własna implementacja systemd)
  • 17. Interfejs jądra • /smack/load, /smack/load2 • • Zapis reguł w postaci <SUBJECT> <OBJECT> <ACCESS> Odczyt pełnej polityki (wszystkich reguł) • /smack/access, /smack/access2 • Zapytania o dostęp z przestrzeni użytkownika, format jak /smack/load • /smack/change-rule • • Zmiana reguły zamiast nadpisywania Format <SUBJECT> <OBJECT> <ACCESS_ADD> <ACCESS_DEL> • /smack/logging, /smack/onlycap, inne • → Documentation/security/Smack.txt 17
  • 18. Problemy, pułapki • SQLite i blokady plików • • • • Program potrzebuje bazy tylko do odczytu SQLite zakłada blokadę dla zapewnienia spójności Smack traktuje blokady jak zapis Proponowany nowy poziom dostępu – L (lock) • Ptrace i SMACK64EXEC • • • • 18 Nie można śledzić procesu z inną etykietą Nawet root nie może Smack nic nie loguje Workaround, poprawka logowania w jądrze
  • 19. Wydajność • Etykiety i reguły nigdy nie usuwane z pamięci • Struktura danych – skierowana lista (dwupoziomowa) • Wydajność sprawdzania dostępu poprawiana jądrze 3.2 i 3.11 • Ładowanie reguł do systemu w postaci tekstowej • Wydajność ładowania poprawiona w jądrze 3.12 • Brak znanych problemów wydajnościowych w tej chwili • 19 Maintainer otwarty na dalsze optymalizacje
  • 20. Tworzenie polityki Zachowanie aplikacji pokryte przez politykę Potencjalne niedziałanie aplikacji Potencjalne naruszenia bezpieczeństwa 20
  • 21. Tworzenie polityki dla zmieniającego się systemu • Analiza statyczna • • • Jakich dostępów wymaga program? Jakich dostępów wymagają użyte biblioteki? Jak obsłużyć zmianę kodu w bibliotece? • Analiza dynamiczna • • Uruchomić program, zebrać logi, dodać reguły. Czynność powtórzyć. Pokrycie aplikacji testami. • Nadmiarowe reguły, problem z rozrostem polityki. 21
  • 22. Tworzenie polityki, duża granularność • Tizen 2 • • • • Każda aplikacja ma osobną etykietę Wiele różnych etykiet dla zasobów 600-700 etykiet 25000 reguł • Trudno opisać złożone współdzielenie danych • Wykorzystanie logów dla dodawania reguł • Duża polityka, trudna analiza, wiele zbędnych uprawnień 22
  • 23. Problemy z tworzeniem polityki w Tizen 2 • • • • • Późne aplikowanie Smacka dla wygody programistów. Bezpieczeństwo jako moduł, który można „włączyć”. Stałe zmiany w platformie. Brak akceptacji dla czasowego niedziałania platformy (daily release) „Security broke me code!” 23
  • 24. Tworzenie polityki, mała granularność • Tizen 3 • Polityka podstawa – tylko trzy poziomy • • • • „floor” – co każdy proces czytać powinien (/, /dev/, /bin/sh, etc.) „system” – demony systemowe, z uprawnieniem do czytania i pisania zasobów systemu „application” – wszystkie aplikacje, nie izolowane od siebie przez Smacka Dodatkowe domeny możliwe dla odseparowania wrażliwych aplikacji (np. manager haseł) • Jaka jest użyteczność Smacka na tym poziomie? 24
  • 25. Tizen 3, polityka trzech domen system RX RX app-shared floor 25 RWXAT system-shared W RX app RWXAT RX
  • 26. Historia Smacka w Linuksie • • • • • • • • • • 2.6.25: Pierwsza wersja 2.6.28: Opcjonalne ograniczanie procesów uprzywilejowanych 2.6.31: Obsługa logowania dostępów 2.6.38: Obsługa atrybutów SMACK64EXEC, SMACK64TRANSMUTE 2.6.39: Obsługa atrybutu SMACK64MMAP 3.2: Obsługa /smack/access (zapytania z przestrzeni użytkownika) 3.5: Wydłużenie etykiet z 23 do 255 znaków 3.7: Obsługa /smack/revoke-subject 3.8: Nowy punkt montowania smackfs (/sys/fs/smack) 3.10: Obsługa /smack/change-rule (modyfikacja reguł) 26
  • 27. Literatura • Dokumentacja jądra Linuksa Documentation/security/Smack.txt • Prezentacja autora na Linux.conf.au http://mirror.linux.org.au/pub/linux.conf.au/2008/Thu/mel8-092.ogg • Smack for simplified access control, LWN http://lwn.net/Articles/244531/ • Talking Smack for Tizen Security, LWN http://lwn.net/Articles/552787/ • Prezentacja na Tizen Devcon 2013 http://download.tizen.org/misc/media/conference2013/slides/TDC20 13-It_May_Be_Simple_But_How_Is_It_Useful-Smack_Me_Now.pdf 27