Что такое ASLR и как он защищает ваш компьютер?
Рандомизация расположения адресного пространства (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 и Калифорнийского университета в Риверсайде представили документ под названием Jump Over ASLR: атакующие предсказатели ветвлений для обхода ASLR. В документе подробно описан способ атаки на целевой буфер ветвления (BTB). BTB является частью процессора, который ускоряет операторы if, прогнозируя результат. Используя метод авторов, можно определить расположение известных инструкций ветви в работающей программе. Рассматриваемая атака была осуществлена на машине Linux с процессором Intel Haswell (впервые выпущенной в 2013 году), но, вероятно, может быть применена к любой современной операционной системе и процессору..
Тем не менее, вы не должны обязательно отчаиваться. В документе предлагается несколько способов, с помощью которых разработчики оборудования и операционной системы могут смягчить эту угрозу. Новые, мелкозернистые методы ASLR потребуют от атакующего больше усилий, а увеличение энтропии (случайности) может сделать атаку перепрыгиванием невозможной. Скорее всего, новые операционные системы и процессоры будут защищены от этой атаки.
Так что же осталось вы сделать? Обход перепрыгивания является новым, и еще не был замечен в дикой природе. Когда злоумышленники используют его, недостаток увеличивает потенциальный ущерб, который злоумышленник может нанести на ваше устройство. Этот уровень доступа не беспрецедентен; Microsoft и Apple внедрили ASLR только в своих операционных системах, выпущенных в 2007 году и позже. Даже если этот стиль атаки станет обычным явлением, вам будет не хуже, чем во времена Windows XP.
Имейте в виду, что злоумышленникам все еще нужно получить свой код на вашем устройстве, чтобы нанести какой-либо вред. Этот недостаток не дает им никаких дополнительных способов заразить вас. Как всегда, вы должны следовать рекомендациям по безопасности. Используйте антивирус, держитесь подальше от схематичных веб-сайтов и программ и обновляйте программное обеспечение. Выполнив эти шаги и убрав злоумышленников с вашего компьютера, вы будете в безопасности, как никогда.
Изображение предоставлено: Steve / Flickr