Skip to content

Co to jest ASLR i jak zapewnia bezpieczeństwo komputera?

9 de lipiec de 2021
cpupic edited 1024x469 1

Randomizacja układu przestrzeni adresowej (ASLR) to technika bezpieczeństwa stosowana w systemach operacyjnych, po raz pierwszy zaimplementowana w 2001 roku. Obecne wersje wszystkich głównych systemów operacyjnych (iOS, Android, Windows, macOS i Linux) zawierają ochronę ASLR. Ale w zeszłym tygodniu nowa metoda omijania ASLR został znaleziony. Więc czy powinieneś się martwić?

Dla tych, którzy nie mają doświadczenia w programowaniu na niskim poziomie, ASLR może być mylący. Aby to zrozumieć, musisz najpierw zrozumieć pamięć wirtualną.

Co to jest pamięć wirtualna?

Pamięć wirtualna to technika zarządzania pamięcią, która ma wiele zalet, ale została stworzona przede wszystkim w celu ułatwienia programowania. Wyobraź sobie, że masz Google Chrome, Microsoft Word i kilka innych programów otwartych na komputerze z 4 GB pamięci RAM. W sumie programy na tym komputerze wykorzystują znacznie więcej niż 4 GB pamięci RAM. Jednak nie wszystkie programy będą aktywne przez cały czas lub wymagają 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, strony najmniej potrzebne są przechowywane na wolniejszym (ale bardziej pojemnym) dysku twardym. Gdy przechowywane strony są potrzebne, przełączają przestrzenie z mniej potrzebnymi stronami znajdującymi się obecnie w pamięci RAM. Ten proces nazywa się stronicowaniem i nadaje swoją 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ą się martwić o to, gdzie inne programy przechowują dane lub ile pozostało pamięci RAM. Mogą po prostu poprosić system operacyjny o dodatkową pamięć (lub zwrócić nieużywaną pamięć) w razie potrzeby. Wszystko, co widzi program, to pojedynczy, ciągły fragment adresów pamięci do jego wyłącznego użytku, zwany adresami wirtualnymi. Program nie może przeglądać pamięci innego programu.


Gdy program potrzebuje dostępu do pamięci, nadaje systemowi operacyjnemu adres wirtualny. System operacyjny kontaktuje się z jednostką zarządzania pamięcią (MMU) procesora. MMU tłumaczy adresy wirtualne i fizyczne, zwracając te informacje do systemu operacyjnego. W żadnym momencie program nie wchodzi w bezpośrednią interakcję z pamięcią RAM.

Co to jest ASLR?

Randomizacja układu przestrzeni adresowej (ASLR) służy przede wszystkim do ochrony przed atakami przepełnienia bufora. W przypadku przepełnienia bufora atakujący dostarczają funkcji tyle niepotrzebnych danych, ile może obsłużyć, a następnie złośliwy ładunek. Ładunek nadpisze dane, do których program zamierza uzyskać dostęp. Instrukcje przeskoku do innego punktu w kodzie są powszechnym ładunkiem. Na przykład słynna metoda JailbreakMe polegająca na jailbreakowaniu iOS 4 wykorzystywała atak przepełnienia bufora, co skłoniło Apple do dodania ASLR do iOS 4.3.

Przepełnienie bufora wymaga, aby atakujący wiedział, gdzie w pamięci znajduje się każda część programu. Ustalenie tego jest zwykle trudnym procesem prób i błędów. Po ustaleniu tego muszą stworzyć ładunek i znaleźć odpowiednie miejsce, aby go wstrzyknąć. Jeśli atakujący nie wie, gdzie znajduje się jego docelowy kod, jego wykorzystanie może być trudne lub niemożliwe.

ASLR współpracuje z zarządzaniem pamięcią wirtualną w celu losowania lokalizacji różnych części programu w pamięci. Za każdym razem, gdy program jest uruchamiany, komponenty (w tym stos, sterta i biblioteki) są przenoszone pod inny adres w pamięci wirtualnej. Atakujący nie mogą już dowiedzieć się, gdzie znajduje się ich cel metodą prób i błędów, ponieważ adres będzie za każdym razem inny. Ogólnie rzecz biorąc, aplikacje muszą być kompilowane z obsługą ASLR, ale staje się to domyślne, a nawet wymagane w systemie Android 5.0 i nowszych.

Więc czy ASLR nadal Cię chroni?

W zeszły wtorek naukowcy z SUNY Binghamton i Uniwersytetu Kalifornijskiego w Riverside przedstawili artykuł zatytułowany Skok nad ASLR: atakowanie predyktorów gałęzi, aby ominąć ASLR. W artykule szczegółowo opisano sposób ataku na Branch Target Buffer (BTB). BTB jest częścią procesora, który przyspiesza instrukcje, przewidując wynik. Stosując metodę autorów można określić lokalizacje znanych instrukcji rozgałęzień w uruchomionym programie. Atak, o którym mowa, 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, niekoniecznie powinieneś rozpaczać. W artykule przedstawiono kilka sposobów, dzięki którym twórcy sprzętu i systemów operacyjnych mogą złagodzić to zagrożenie. Nowsze, drobnoziarniste techniki ASLR wymagają więcej wysiłku od atakującego, a zwiększenie ilości entropii (losowości) może sprawić, że atak Jump Over będzie niewykonalny. Najprawdopodobniej nowsze systemy operacyjne i procesory będą odporne na ten atak.


Więc co zostało? ty do zrobienia? Obwodnica Jump Over jest nowa i nie została jeszcze zauważona na wolności. Gdy atakujący go wykorzystają, wada zwiększy potencjalne szkody, które atakujący może spowodować na twoim urządzeniu. Ten poziom dostępu nie jest bezprecedensowy; Microsoft i Apple wdrożyły ASLR tylko w swoich systemach operacyjnych wydanych w 2007 roku i później. Nawet jeśli ten styl ataku stanie się powszechny, nie będziesz w gorszej sytuacji niż w czasach Windows XP.

Pamiętaj, że atakujący nadal muszą pobrać swój kod na Twoje urządzenie, aby wyrządzić jakąkolwiek szkodę. Ta usterka nie daje im żadnych dodatkowych możliwości zainfekowania użytkownika. Jak zawsze, powinieneś postępować zgodnie z najlepszymi praktykami bezpieczeństwa. Korzystaj z oprogramowania antywirusowego, trzymaj się z dala od podejrzanych witryn i programów oraz aktualizuj oprogramowanie. Postępując zgodnie z tymi krokami i trzymając złośliwych graczy z dala od komputera, będziesz tak samo bezpieczny, jak nigdy dotąd.

Kredyt obrazu: Steve/Flickr

Czy ten post był pomocny?