Что такое 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

Оцените статью
TutoryBird.Ru
Добавить комментарий