If-Koubou

Co to jest ASLR i w jaki sposób chroni komputer?

Co to jest ASLR i w jaki sposób chroni komputer? (Jak)

Randomizacja układu przestrzeni adresowej (ASLR) to technika bezpieczeństwa stosowana 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. Jednak w ubiegłym tygodniu znaleziono nową metodę obchodzenia ASLR. Więc, czy powinieneś się martwić?

Dla tych, którzy nie mają tła programowania niskiego poziomu, ASLR może być mylący. Aby to zrozumieć, musisz najpierw zrozumieć pamięć wirtualną.

Czym jest pamięć wirtualna?

Pamięć wirtualna to technika zarządzania pamięcią o wielu zaletach, ale przede wszystkim została stworzona, 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 równoczesnego 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 o ilości pozostałej pamięci RAM. Mogą poprosić system operacyjny o dodatkową pamięć (lub zwrócić nieużywaną pamięć) w razie potrzeby. Cały program widzi jeden ciągły fragment adresów pamięci do jego 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 to możliwe, a następnie złośliwy ładunek. Ładunek nadpisze dane, do których program zamierza uzyskać dostęp. Instrukcje przeskakiwania do innego punktu w kodzie są wspólnym ładunkiem. Słynna metoda JailbreakMe, na przykład jailbreaking iOS 4, wykorzystała atak przepełnienia 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. Rozszyfrowanie 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 cel jest przez próbę i błąd, 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 wersjach.

Czy ASLR nadal cię chroni?

W zeszł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łęzienia 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? Skocz obejścia jest nowy i nie został jeszcze zauważony na wolności. Gdy atakujący wykorzystają go, wada zwiększy potencjalne obrażenia, które atakujący może spowodować w 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ędziesz miał nic gorszego niż za czasów systemu Windows XP.

Pamiętaj, że atakujący muszą jeszcze pobrać kod na urządzenie, aby wyrządzić jakiekolwiek szkody. Ta wada nie zapewnia im żadnych dodatkowych sposobów na zarażanie. Jak zawsze, powinieneś postępować zgodnie z najlepszymi praktykami bezpieczeństwa. Używaj programu antywirusowego, trzymaj się z dala od szkicowych stron internetowych i programów oraz 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