Какво е ASLR и как да поддържате компютъра си сигурен?
Рандомизирането на адресното пространство (ASLR) е техника за сигурност, използвана в операционните системи, въведена първоначално през 2001 г. Текущите версии на всички основни операционни системи (iOS, Android, Windows, MacOS и Linux) имат ASLR защита. Но през изминалата седмица бе открит нов метод за заобикаляне на ASLR. Така че, трябва да се притеснявате?
За тези, които нямат ниско ниво на програмиране, ASLR може да бъде объркващо. За да го разберете, трябва първо да разберете виртуалната памет.
Какво е виртуална памет?
Виртуалната памет е техника за управление на паметта с много предимства, но тя е създадена предимно за улесняване на програмирането. Представете си, че имате Google Chrome, Microsoft Word и няколко други програми, които са отворени на компютър с 4 GB оперативна памет. Като цяло програмите на този компютър използват много повече от 4 GB оперативна памет. Въпреки това, не всички програми ще бъдат активни по всяко време или ще се нуждаят от едновременен достъп до тази RAM.
Операционната система разпределя парчета памет към извиканите програми страници. Ако няма достатъчно RAM за съхраняване на всички страници наведнъж, най-малко вероятните страници се съхраняват на по-бавния (но по-просторен) твърд диск. Когато съхранените страници са необходими, те ще превключват пространства с по-малко необходими страници в момента в RAM. Този процес се нарича пейджинг и присвоява името си на файла pagefile.sys в Windows.
Виртуалната памет улеснява програмите да управляват собствената си памет и също така ги прави по-сигурни. Програмите не трябва да се тревожат за това къде се съхраняват други програми или колко RAM остава. Те могат просто да помолят операционната система за допълнителна памет (или да върнат неизползвана памет), ако е необходимо. Всичко, което програмата вижда, е един непрекъснат блок от адреси на паметта за неговото изключително използване, наречен виртуални адреси. Програмата не може да разглежда паметта на друга програма.
Когато програмата има нужда от достъп до паметта, тя дава на операционната система виртуален адрес. Операционната система се свързва с модула за управление на паметта на процесора (MMU). MMU се превежда между виртуални и физически адреси, връщайки тази информация на операционната система. В нито един момент програмата не взаимодейства директно с RAM.
Какво е ASLR?
Рандомизацията на разпределението на адресното пространство (ASLR) се използва главно за защита срещу атаки с препълване на буфера. В препълването на буфера, нападателите подават на функцията толкова много нежелани данни, колкото могат да се справят, последвани от злонамерен полезен товар. Това поле ще замени данните, които програмата възнамерява да използва. Инструкциите за преход към друга точка в кода са общ товар. Известният JailbreakMe метод на jailbreaking iOS 4 например използва атака за препълване на буфер, което подтиква Apple да добави ASLR към iOS 4.3..
Препълването на буфера изисква хакерът да знае къде се намира всяка част от програмата в паметта. Разбирането на това обикновено е труден процес на опити и грешки. След като го определят, те трябва да заредят полезен товар и да намерят подходящо място за инжектиране. Ако нападателят не знае къде се намира техния целеви код, може да е трудно или невъзможно да се експлоатира.
ASLR работи заедно с управлението на виртуалната памет за рандомизиране на местоположенията на различните части на програмата в паметта. Всеки път, когато програмата се изпълнява, компонентите (включително стека, купчината и библиотеките) се преместват на различен адрес във виртуалната памет. Нападателите вече не могат да научат къде е тяхната цел чрез проба и грешка, тъй като адресът ще бъде различен всеки път. Обикновено приложенията трябва да бъдат компилирани с ASLR поддръжка, но това става по подразбиране и дори е необходимо на Android 5.0 и по-нови версии.
Така че ASLR все още ви защитава?
Миналия вторник изследователи от SUNY Binghamton и Университета на Калифорния, Riverside, представиха документ, наречен Jump Over ASLR: Атакуване на предсказатели на клонове, за да се заобиколи ASLR. Документът описва начин да се атакува буфер на целта на клона (BTB). BTB е част от процесора, който ускорява изчисленията чрез прогнозиране на резултата. Използвайки метода на авторите, е възможно да се определят местоположенията на известни инструкции за разклонение в работеща програма. Въпросната атака беше извършена на Linux машина с процесор Intel Haswell (пуснат за първи път през 2013 г.), но вероятно ще бъде приложен към всяка модерна операционна система и процесор.
Въпреки това не трябва непременно да се отчайвате. Документът предлага няколко начина, по които разработчиците на хардуер и операционна система могат да смекчат тази заплаха. По-новите ASLR технологии изискват повече усилия от нападателя и увеличаването на количеството ентропия (случайност) може да направи атаката с прескачане на атака невъзможна. Най-вероятно по-новите операционни системи и процесори ще бъдат имунизирани срещу тази атака.
Така че това, което е останало за ти да направя? Прескачащият байпас е нов и все още не е забелязан в дивата природа. Когато атакуващите го използват, недостатъкът ще увеличи потенциалните щети, които един нападател може да причини на вашето устройство. Това ниво на достъп не е безпрецедентно; Microsoft и Apple въведоха само ASLR в своите операционни системи, пуснати през 2007 г. и по-късно. Дори ако този стил на атака стане обичайно, няма да сте по-зле, отколкото сте били в дните на Windows XP.
Имайте предвид, че нападателите все още трябва да получат кода си на устройството си, за да причинят вреда. Този недостатък не им предоставя допълнителни начини за заразяване. Както винаги, трябва да следвате най-добрите практики за сигурност. Използвайте антивирусна програма, стойте далеч от скрити уебсайтове и програми и поддържайте софтуера актуален. Като следвате тези стъпки и държите зловредните актьори на разстояние от компютъра, ще бъдете толкова безопасни, колкото някога сте били.
Кредит за изображения: Steve / Flickr