Co to jest ASLR i jak chroni komputer?
Randomizacja układu przestrzeni adresowej (ASLR) to technika bezpieczeństwa używana w systemach operacyjnych, wprowadzona po raz pierwszy w 2001 roku. Obecne wersje wszystkich głównych systemów operacyjnych (iOS, Android, Windows, macOS i Linux) mają ochronę ASLR. Ale w ubiegłym tygodniu znaleziono nową metodę ominięcia ASLR. Więc, jeśli się martwisz?
Dla tych, którzy nie mają niskiego poziomu programowania, ASLR może być mylący. Aby to zrozumieć, musisz najpierw zrozumieć pamięć wirtualną.
Czym jest pamięć wirtualna?
Pamięć wirtualna jest techniką zarządzania pamięcią z wieloma korzyściami, ale została stworzona przede wszystkim po to, aby ułatwić programowanie. Wyobraź sobie, że masz Google Chrome, Microsoft Word i kilka innych programów otwartych na komputerze z 4 GB pamięci RAM. Jako całość programy na tym komputerze zużywają znacznie więcej niż 4 GB pamięci RAM. Jednak nie wszystkie programy będą aktywne przez cały czas lub będą wymagały jednoczesnego dostępu do tej pamięci RAM.
System operacyjny przydziela porcje pamięci programom o nazwie strony. Jeśli nie ma wystarczającej ilości pamięci RAM do przechowywania wszystkich stron naraz, najmniej potrzebne strony są przechowywane na wolniejszym (ale bardziej przestronnym) dysku twardym. Kiedy przechowywane strony są potrzebne, będą zamieniać spacje na mniej potrzebne strony w pamięci RAM. Ten proces nazywa się stronicowaniem i nadaje nazwę plikowi pagefile.sys w systemie Windows.
Pamięć wirtualna ułatwia programom zarządzanie własną pamięcią, a także zwiększa ich bezpieczeństwo. Programy nie muszą martwić się o to, gdzie inne programy przechowują dane, ani ile pozostało pamięci RAM. Mogą poprosić system operacyjny o dodatkową pamięć (lub zwrócić nieużywaną pamięć) w razie potrzeby. Cały program widzi pojedynczy ciągły fragment adresów pamięci do wyłącznego użytku, zwany wirtualnymi adresami. Program nie może przeglądać pamięci innego programu.
Gdy program potrzebuje dostępu do pamięci, nadaje systemowi wirtualnemu adres wirtualny. System operacyjny kontaktuje się z jednostką zarządzania pamięcią CPU (MMU). MMU tłumaczy adresy wirtualne i fizyczne, zwracając te informacje do systemu operacyjnego. W żadnym momencie program nie oddziałuje bezpośrednio na pamięć RAM.
Co to jest ASLR?
Randomizacja układu przestrzeni adresowej (ASLR) jest używana przede wszystkim do ochrony przed atakami przepełnienia bufora. W przypadku przepełnienia bufora, atakujący przekazują funkcję tak dużo danych śmieci, jak mogą obsłużyć, a następnie złośliwy ładunek. Ładunek nadpisze dane, do których program zamierza uzyskać dostęp. Instrukcje przeskakiwania do innego punktu kodu są wspólnym ładunkiem. Słynna metoda JailbreakMe, na przykład jailbreaking iOS 4, wykorzystała atak polegający na przepełnieniu bufora, co skłoniło Apple do dodania ASLR do iOS 4.3.
Przepełnienie bufora wymaga, aby osoba atakująca wiedziała, gdzie każda część programu znajduje się w pamięci. Zrozumienie tego jest zwykle trudnym procesem prób i błędów. Po ustaleniu, że muszą one stworzyć ładunek i znaleźć odpowiednie miejsce do wstrzyknięcia. Jeśli atakujący nie wie, gdzie znajduje się docelowy kod, może być trudny lub niemożliwy do wykorzystania.
ASLR współpracuje z zarządzaniem pamięcią wirtualną, aby losowo lokalizować różne części programu w pamięci. Za każdym razem, gdy program jest uruchamiany, komponenty (w tym stos, sterty i biblioteki) są przenoszone do innego adresu w pamięci wirtualnej. Atakujący nie mogą już dowiedzieć się, gdzie ich celem są próby i błędy, ponieważ adres będzie za każdym razem inny. Zasadniczo aplikacje muszą być kompilowane z obsługą ASLR, ale staje się to domyślne, a nawet wymagane w systemie Android 5.0 i nowszych wersjach.
Czy ASLR nadal Cię chroni??
W ubiegły wtorek naukowcy z SUNY Binghamton i University of California w Riverside zaprezentowali dokument zatytułowany Jump Over ASLR: Atakujący rozgałęzione predyktory do obejścia ASLR. W artykule opisano sposób na zaatakowanie Branch Target Buffer (BTB). BTB jest częścią procesora, który przyspiesza, jeśli oświadczenia przewidują wynik. Korzystając z metody autorów, możliwe jest określenie lokalizacji znanych instrukcji rozgałęzień w uruchomionym programie. Atak został przeprowadzony na komputerze z systemem Linux z procesorem Intel Haswell (po raz pierwszy wydany w 2013 r.), Ale prawdopodobnie można go zastosować do dowolnego nowoczesnego systemu operacyjnego i procesora.
To powiedziawszy, nie powinieneś koniecznie rozpaczać. W artykule zaproponowano kilka sposobów, które deweloperzy sprzętu i systemu operacyjnego mogą złagodzić to zagrożenie. Nowsze, drobnoziarniste techniki ASLR wymagałyby od atakującego większego wysiłku, a zwiększenie entropii (losowości) może sprawić, że atak Jump Over stanie się nieosiągalny. Najprawdopodobniej nowsze systemy operacyjne i procesory będą odporne na ten atak.
Więc na co zostało ty do zrobienia? Omijanie Jump Over jest nowe i nie zostało jeszcze zauważone na wolności. Gdy atakujący wykorzystają go, wada zwiększy potencjalne obrażenia, które może spowodować atakujący na Twoim urządzeniu. Ten poziom dostępu nie jest bezprecedensowy; Firmy Microsoft i Apple wdrożyły tylko ASLR w swoich systemach operacyjnych wydanych w 2007 i później. Nawet jeśli ten styl ataku stanie się powszechny, nie będzie ci gorzej niż w czasach Windows XP.
Pamiętaj, że osoby atakujące muszą jeszcze pobrać kod na urządzenie, aby wyrządzić jakiekolwiek szkody. Ta wada nie zapewnia żadnych dodatkowych sposobów infekowania Cię. Jak zawsze, powinieneś przestrzegać najlepszych praktyk bezpieczeństwa. Używaj programu antywirusowego, trzymaj się z dala od szkicowych stron internetowych i programów, i aktualizuj oprogramowanie. Wykonując te czynności i powstrzymując złośliwych aktorów od komputera, będziesz bezpieczny jak nigdy wcześniej.
Image Credit: Steve / Flickr