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