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 ?