Implementacje zdolności `capabilities` w jądrze systemu Linux

Transkrypt

Implementacje zdolności `capabilities` w jądrze systemu Linux
Seminarium SKISR “Bezpieczeństwo systemów
komputerowych”
Autor: Jarosław Drobny
Implementacje zdolności
'capabilities' w jądrze systemu
Linux
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Wstęp
Bezpieczeństwo Linux’a
• Jądro Linux’a standardowo nie ma
zaimplementowanych żadnych dodatkowych
mechanizmów zwiększających jego
bezpieczeństwo
• Niespójność kodu
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Rozwiązania poprawiające
bezpieczeństo
•
•
•
•
OpenWall
GrSecurity
PAX
Stack Smashing Protector (łata na
kompilator)
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Rozwiązania poprawiające
bezpieczeństo (2)
• Inne podejście do bezpieczeństwa
• Bezpieczeństwo jądra systemu
• Bezpieczeństwo programów w “user-land”
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Wybrane klasy ataków
• Wykonanie własnego kodu
• Wykonanie poprawnego kodu programu ale
nie w orginalnej kolejności
• Wykonanie poprawnego kodu w orginalnej
kolejności ale z własnymi danymi
zmieniającymi właściwy przebieg
wykonania programu
Implementacje zdolności 'capabilities' w jądrze systemu Linux
OpenWall
• Ograniczony dostęp do systemu plików /
proc
• Dodatkowe ograniczenia na liczbę procesów
jakie może stworzyć dany użytkownik
• Niewykonywalny obszar stosu
• Mapowanie bibliotek pod adresy
zawierajace 0x00
Implementacje zdolności 'capabilities' w jądrze systemu Linux
OpenWall (2)
:
wysokie
adresy
ret
sfp
esp
brk
bss
data
text
niskie
adresy
Implementacje zdolności 'capabilities' w jądrze systemu Linux
GrSecurity
• Ograniczony dostęp do systemu plików /
proc
• ACL
• Dodatkowe zabezpieczenia w implementacji
stosu TCP/IP i gniazd
• Dodatkowe ograniczenia programów
wykonywalnych, losowe numery PID
• PAX
Implementacje zdolności 'capabilities' w jądrze systemu Linux
PAX
• Rozgraniczenie przestrzeni adresowej
procesu (niewykonywalne strony pamięci)
• Losowe położenie kluczowych regionów
pamięci
• Umożliwia wyłączenie kontroli dla
programów które muszą modyfikować
wykonywalne strony pamięci
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Stack Smashing Protector
• Łata na kompilator
• Zabezpiecza przed klasami ataków 1,2
• Wbudowany optymalizator pozwala
stwierdzić które funkcje są niebezpieczne
• Zmienia kolejność argumentów na stosie
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Stack Smashing Protector (2)
:
wysokie
adresy
ret
canary value
sfp
esp
niskie
adresy
Segmentacja - IA32
Deskryptor segmentu
Segmentacja - IA32 (2)
Stronicowanie - IA32
Katalog stron
Stronicowanie - IA32 (2)
Tablica stron
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Podsumowanie
Zalety
• Funkcjonalność
• Łatwość instalacji
• Duże możliwości konfiguracyjne
(GrSecurity)
Wady
• Łata na jądro
• Łata na kompilator (SSP)
Implementacje zdolności 'capabilities' w jądrze systemu Linux
Pytania
?