Рандомизация макета адресного пространства
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2018 г. ) |
Рандомизация структуры адресного пространства ( ASLR ) — это метод компьютерной безопасности, используемый для предотвращения использования , связанных с повреждением памяти уязвимостей . [1] Чтобы не дать злоумышленнику надежно перенаправить выполнение кода, например, на конкретную эксплуатируемую функцию в памяти, ASLR случайным образом упорядочивает в адресном пространстве позиции ключевых областей данных процесса , включая базу исполняемого файла и позиции стека . , куча и библиотеки .
История
[ редактировать ]Проект Linux PaX впервые ввёл термин «ASLR» и опубликовал первый дизайн и реализацию ASLR в июле 2001 года как патч для ядра Linux . Он рассматривается как полная реализация, предоставляющая исправление для рандомизации стека ядра с октября 2002 года. [2]
Первой основной операционной системой, поддерживающей ASLR по умолчанию, была OpenBSD версии 3.4 в 2003 году. [3] [4] за ним последовал Linux в 2005 году.
Преимущества
[ редактировать ]Рандомизация адресного пространства препятствует некоторым типам атак на безопасность, усложняя злоумышленнику предсказание целевых адресов. Например, злоумышленники, пытающиеся выполнить атаку с возвратом в библиотеку, должны найти код, который будет выполнен, в то время как другие злоумышленники, пытающиеся выполнить шелл-код, внедренный в стек, должны сначала найти стек. В обоих случаях система делает связанные адреса памяти непредсказуемыми с точки зрения злоумышленников. Эти значения необходимо угадать, а ошибочное предположение обычно невозможно исправить из-за сбоя приложения.
Эффективность
[ редактировать ]Рандомизация макета адресного пространства основана на низкой вероятности того, что злоумышленник угадает расположение случайно расположенных областей. Безопасность повышается за счет увеличения пространства поиска. Таким образом, рандомизация адресного пространства более эффективна, когда большая энтропия в случайных смещениях присутствует . Энтропия увеличивается либо за счет увеличения объема области виртуальной памяти , в которой происходит рандомизация, либо за счет уменьшения периода, в течение которого происходит рандомизация. Период обычно реализуется как можно меньшим, поэтому большинство систем должны увеличить рандомизацию пространства VMA.
Чтобы обойти рандомизацию, злоумышленники должны успешно угадать позиции всех областей, которые они хотят атаковать. Для таких областей данных, как стек и куча, куда можно загрузить собственный код или полезные данные, можно атаковать более одного состояния с помощью слайдов NOP для кода или повторяющихся копий данных. Это позволяет атаке добиться успеха, если область рандомизирована по одному из нескольких значений. Напротив, такие области кода, как база библиотеки и основной исполняемый файл, должны быть точно обнаружены. Часто эти области смешиваются, например, кадры в стек вставляются стека, а в него возвращается библиотека.
Могут быть объявлены следующие переменные:
- (энтропийные биты вершины стека)
- (энтропийные биты
mmap()
база) - (биты энтропии основной исполняемой базы)
- (энтропийные биты базы кучи)
- (атакованных битов на попытку энтропии стека)
- (атакуемых битов на попытку
mmap()
базовая энтропия) - (атакуемые биты на попытку энтропии основного исполняемого файла)
- (атакованных битов на попытку базовой энтропии кучи)
- (предпринятые попытки)
- (общее количество энтропии: )
Чтобы вычислить вероятность успеха злоумышленника, необходимо принять количество попыток α, выполненных без прерывания сигнатурной IPS, правоохранительными органами или другим фактором; в случае брутфорса демон не может быть перезапущен. Также необходимо рассчитать количество соответствующих битов и количество атакуемых в каждой попытке, оставив столько битов, которые атакующий должен уничтожить.
Следующие формулы представляют вероятность успеха для данного набора α- попыток на N битах энтропии.
- (изолированное предположение; адресное пространство повторно рандомизируется после каждой попытки)
- (систематический перебор копий программы с одинаковым адресным пространством)
Во многих системах могут исчисляться тысячами или миллионами. В 32-битных системах типичный объем энтропии N составляет 8 бит. [5] Что касается скорости компьютеров 2004 года, Шачем и его коллеги заявляют: «... 16-битную рандомизацию адресов можно преодолеть с помощью грубой атаки за считанные минуты». [6] (Утверждение авторов зависит от возможности атаковать одно и то же приложение несколько раз без каких-либо задержек. Правильные реализации ASLR, например, включенные в grsecurity, предоставляют несколько методов, делающих такие атаки методом перебора невозможными. Один из методов предполагает предотвращение выполнения исполняемого файла. в течение настраиваемого периода времени, если он вышел из строя определенное количество раз.) На современных [update] В 64-битных системах эти цифры обычно достигают как минимум миллионов. [ нужна ссылка ]
Андроид, [7] [ нужен неосновной источник ] и, возможно, другие системы, [ который? ] реализовать рандомизацию порядка загрузки библиотек — форму ASLR, которая рандомизирует порядок загрузки библиотек. Это обеспечивает очень небольшую энтропию. Ниже приведено приблизительное количество бит энтропии, предоставленной для каждой необходимой библиотеки; это еще не учитывает различные размеры библиотек, поэтому фактическая полученная энтропия действительно несколько выше. Злоумышленникам обычно нужна только одна библиотека; математика более сложна с несколькими библиотеками и также показана ниже. Случай, когда злоумышленник использует только одну библиотеку, представляет собой упрощение более сложной формулы .
- l (количество загруженных библиотек)
- β (количество библиотек, используемых злоумышленником)
Эти значения имеют тенденцию быть низкими даже для больших значений l , что наиболее важно, поскольку злоумышленники обычно могут использовать только стандартную библиотеку C , и поэтому часто можно предположить, что . Однако даже для небольшого количества библиотек здесь можно получить некоторый выигрыш в энтропии; Таким образом, потенциально интересно объединить рандомизацию порядка загрузки библиотеки со рандомизацией адресов VMA, чтобы получить несколько дополнительных бит энтропии. Эти дополнительные биты энтропии не будут применяться к другим сегментам mmap(), а только к библиотекам.
Уменьшение энтропии
[ редактировать ]Злоумышленники могут использовать несколько методов для уменьшения энтропии, присутствующей в рандомизированном адресном пространстве, начиная от простых утечек информации и заканчивая атакой на несколько битов энтропии за атаку (например, путем распыления кучи ). С этим мало что можно сделать.
Возможна утечка информации о структуре памяти с использованием уязвимостей форматной строки . Функции форматирования строк, такие как printf используют список переменных аргументов , для выполнения своей работы ; спецификаторы формата описывают, как выглядит список аргументов. Из-за того, как обычно передаются аргументы, каждый спецификатор формата перемещается ближе к вершине кадра стека. В конце концов, указатель возврата и указатель кадра стека могут быть извлечены, обнаруживая адрес уязвимой библиотеки и адрес известного кадра стека; это может исключить рандомизацию библиотеки и стека как препятствие для злоумышленника.
Также можно уменьшить энтропию в стеке или куче. Стек обычно должен быть выровнен по 16 байтам, поэтому это наименьший возможный интервал рандомизации; в то время как куча должна быть выровнена по страницам, обычно 4096 байт. При попытке атаки можно согласовать повторяющиеся атаки с этими интервалами; слайд NOP может использоваться с внедрением шеллкода , а строка ' /bin/sh
' можно заменить на ' ////////bin/sh
' для произвольного количества косых черт при попытке вернуться в систему . Число удаленных битов равно в течение n интервалов атаковали.
Такое уменьшение ограничено объемом данных в стеке или куче. Например, размер стека обычно ограничен 8 МБ. [8] и становится намного меньше; это позволяет использовать не более 19 бит , хотя более консервативная оценка будет составлять около 8–10 бит, что соответствует 4–16 КБ . [8] начинки стека. С другой стороны, куча ограничена поведением распределителя памяти; в случае с glibc выделения размером более 128 КБ создаются с использованием mmap , что ограничивает злоумышленников сокращением до 5 бит. Это также является ограничивающим фактором при брутфорсе; хотя количество атак можно сократить, размер атак увеличивается настолько, что в некоторых обстоятельствах поведение может стать очевидным для систем обнаружения вторжений .
Ограничения
[ редактировать ]Адреса, защищенные ASLR, могут просочиться по различным боковым каналам, что приведет к удалению утилиты предотвращения. В недавних атаках использовалась информация, утекшая из буфера прогнозирования целевых объектов ветки ЦП (BTB) или блоков управления памятью (MMU) в таблицах проходящих страниц. Неясно, можно ли смягчить этот класс атак ASLR. Если они не могут этого сделать, преимущества ASLR уменьшаются или исключаются.
Реализации
[ редактировать ]Несколько основных операционных систем общего назначения реализуют ASLR.
Андроид
[ редактировать ]Android 4.0 Ice Cream Sandwich обеспечивает рандомизацию расположения адресного пространства (ASLR), чтобы помочь защитить систему и сторонние приложения от эксплойтов, связанных с проблемами управления памятью. Поддержка исполняемых файлов, не зависящих от позиции, была добавлена в Android 4.1. [9] В Android 5.0 прекращена поддержка отличий от PIE и требуется, чтобы все динамически связанные двоичные файлы были независимыми от позиции. [10] [11] Рандомизация порядка загрузки библиотеки была принята в проект Android с открытым исходным кодом 26 октября 2015 г. [7] [ нужен неосновной источник ] и был включен в версию Android 7.0.
Стрекоза БСД
[ редактировать ]DragonFly BSD имеет реализацию ASLR, основанную на модели OpenBSD, добавленной в 2010 году. [12] По умолчанию он отключен, и его можно включить, установив для sysctl vm.randomize_mmap значение 1.
FreeBSD
[ редактировать ]Поддержка ASLR появилась во FreeBSD 13.0. [13] [14] Он включен по умолчанию с версии 13.2. [15]
iOS (iPhone, iPod touch, iPad)
[ редактировать ]Apple представила ASLR в iOS 4.3 (выпущенной в марте 2011 г.). [16]
KASLR был представлен в iOS 6. [17] Рандомизированная база ядра 0x01000000 + ((1+0xRR) * 0x00200000)
, где 0xRR
— это случайный байт из SHA1 (случайные данные), созданный iBoot (загрузчик iOS 2-го этапа). [18]
Линукс
[ редактировать ]Ядро Linux по умолчанию включает слабую форму ASLR, начиная с версии ядра 2.6.12, выпущенной в июне 2005 года. [19] Наборы исправлений PaX . и Exec Shield для ядра Linux обеспечивают более полную реализацию Патч Exec Shield для Linux обеспечивает 19 бит энтропии стека за период в 16 байт и 8 бит базовой рандомизации mmap за период в 1 страницу размером 4096 байт. Это помещает базу стека в область шириной 8 МБ, содержащую 524 288 возможных позиций, а базу mmap в область шириной 1 МБ, содержащую 256 возможных позиций.
ASLR можно отключить для конкретного процесса, изменив его домен выполнения, используя personality(2)
. [20] Ряд опций sysctl управляют поведением основного ASLR. Например, kernel.randomize_va_space
контролирует, что рандомизировать; самый сильный вариант - 2. vm.mmap_rnd_bits
контролирует, сколько бит рандомизировать для mmap . [21]
Позиционно-независимый исполняемый файл (PIE) реализует случайный базовый адрес для основного двоичного файла и существует с 18 апреля 2004 года. Он обеспечивает ту же случайность адреса для основного исполняемого файла, что и для общих библиотек. Функцию PIE нельзя использовать вместе с функцией предварительной ссылки для одного и того же исполняемого файла. Инструмент предварительной компоновки реализует рандомизацию во время предварительной компоновки, а не во время выполнения, поскольку по своей конструкции предварительная ссылка предназначена для обработки перемещения библиотек до того, как это сделает динамический компоновщик, что позволяет перемещению происходить один раз для многих запусков программы. В результате реальная рандомизация адресного пространства противоречит цели предварительного связывания.
В 2014 году Марко-Гисберт и Риполл раскрыли метод offset2lib , который ослабляет Linux ASLR для исполняемых файлов PIE. Ядра Linux загружают исполняемые файлы PIE сразу после их библиотек; в результате между исполняемым файлом и библиотечными функциями существует фиксированное смещение. Если злоумышленник найдет способ найти адрес функции в исполняемом файле, адреса библиотеки также станут известны. Они продемонстрировали атаку, которая находит адрес менее чем за 400 попыток. Они предложили новый randomize_va_space=3
возможность рандомизировать размещение исполняемого файла относительно библиотеки, [5] но по состоянию на 2024 год его еще предстоит включить в добычу. [22]
Ядро Linux 5.18, выпущенное в мае 2022 года, снизило эффективность как 32-битных, так и 64-битных реализаций. Файловые системы Linux вызывают thp_get_unmapped_area
для ответа на файл mmap . С изменением в версии 5.18 файлы размером более 2 МБ теперь возвращают адреса, выровненные по 2 МБ, поэтому потенциально они могут быть подкреплены огромными страницами . (Раньше повышенное выравнивание применялось только к сопоставлениям Direct Access (DAX). Между тем, размер библиотеки C (libc) со временем увеличился и превысил этот порог в 2 МБ, поэтому вместо выравнивания по ( обычно) граница страницы 4 КиБ, как и раньше, эти библиотеки теперь выровнены по 2 МиБ: потеря 9 бит энтропии. Для 32-битной Linux многие дистрибутивы вообще не показывают рандомизации при размещении libc. Для 64-битной Linux 28 бит энтропии уменьшаются до 19 бит. В ответ Ubuntu увеличила mmap_rnd_bits
параметр. [23] Мартин Дуча добавил тестовый пример Linux Test Project для обнаружения этой проблемы. [24]
Рандомизация расположения адресного пространства ядра
[ редактировать ]Рандомизация макета адресного пространства ядра (KASLR) позволяет рандомизировать адресное пространство для образа ядра Linux путем рандомизации места размещения кода ядра во время загрузки. [25] KASLR был объединен с основной веткой ядра Linux в версии ядра 3.14, выпущенной 30 марта 2014 года. [26] При компиляции его можно отключить во время загрузки, указав nokaslr в качестве одного из параметров загрузки ядра. [27]
В процессорах x86 существует несколько атак по побочным каналам , которые могут привести к утечке адресов ядра. [28] [29] В конце 2017 года изоляция таблиц страниц ядра (KPTI, также известная как KAISER). для защиты от этих атак была разработана [30] [31] Однако этот метод не может защитить от атак по побочным каналам, использующих коллизии в структурах прогнозирования ветвей . [32]
По состоянию на 2021 год [update], более детальная рандомизация структуры адресного пространства ядра (или гранулярная функция KASLR, FGKASLR) — это запланированное расширение KASLR для рандомизации до уровня функции. [33]
Microsoft Windows
[ редактировать ]Этот раздел необходимо обновить . ( август 2018 г. ) |
от Microsoft В Windows Vista (выпущенной в январе 2007 г.) и более поздних версиях ASLR включена только для исполняемых файлов и динамически подключаемых библиотек , которые специально связаны с поддержкой ASLR. [34] В целях совместимости он по умолчанию не включен для других приложений. Обычно несовместимо только старое программное обеспечение, и ASLR можно полностью включить, отредактировав запись реестра. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages
, [35] или установив Microsoft Enhanced Mitigation Experience Toolkit .
Расположение кучи , стека , блока среды процесса и блока среды потока также рандомизировано. В техническом документе по безопасности от Symantec отмечается, что ASLR в 32-битной Windows Vista может быть не столь надежным, как ожидалось, и Microsoft признала слабость его реализации. [36]
на базе хоста, Системы предотвращения вторжений такие как WehnTrust [37] и озон [38] также предлагает ASLR для операционных систем Windows XP и Windows Server 2003 . WehnTrust имеет открытый исходный код. [39] Полная информация о реализации Ozone недоступна. [40]
Это было отмечено в феврале 2012 года. [41] что эффективность ASLR в 32-битных системах Windows до Windows 8 может снизиться в ситуациях с нехваткой памяти. В том же исследовании аналогичный эффект был достигнут и на Linux. Тестовый код вызвал панику ядра в системе Mac OS X 10.7.3 , поэтому оставалось неясным поведение ASLR в этом сценарии.
NetBSD
[ редактировать ]Поддержка ASLR в пользовательском пространстве появилась в NetBSD 5.0 (выпущенной в апреле 2009 г.). [42] и был включен по умолчанию в NetBSD-current в апреле 2016 года. [43]
Поддержка Kernel ASLR на amd64 была добавлена в NetBSD-current в октябре 2017 года, что сделало NetBSD первой системой BSD, поддерживающей KASLR. [44]
OpenBSD
[ редактировать ]В 2003 году OpenBSD стала первой основной операционной системой, поддерживающей надежную форму ASLR и активирующей ее по умолчанию. [3]
OpenBSD завершила поддержку ASLR в 2008 году, когда добавила поддержку двоичных файлов PIE . [45] OpenBSD 4.4 Функция malloc(3) была разработана для повышения безопасности за счет использования преимуществ ASLR и функций пробельных страниц, реализованных как часть OpenBSD. mmap
системный вызов и для обнаружения ошибок использования после освобождения. [46] Выпущенная в 2013 году OpenBSD 5.3 была первой основной операционной системой, которая по умолчанию включала независимые от позиции исполняемые файлы на нескольких аппаратных платформах , а OpenBSD 5.7 по умолчанию активировала независимые от позиции статические двоичные файлы (Static-PIE). [45]
macOS
[ редактировать ]В Mac OS X Leopard 10.5 (выпущенной в октябре 2007 г.) Apple представила рандомизацию для системных библиотек. [47]
В Mac OS X Lion 10.7 (выпущенной в июле 2011 г.) Apple расширила свою реализацию, чтобы охватить все приложения, заявив, что «рандомизация макета адресного пространства (ASLR) была улучшена для всех приложений. Теперь она доступна для 32-битных приложений (как и куча). защита памяти), что делает 64-битные и 32-битные приложения более устойчивыми к атакам». [48]
Начиная с OS X Mountain Lion 10.8 (выпущенной в июле 2012 г.) и более поздних версиях, вся система, включая ядро, а также кексты и зоны, перемещается случайным образом во время загрузки системы. [49]
Солярис
[ редактировать ]ASLR был представлен в Solaris, начиная с Solaris 11.1 (выпущен в октябре 2012 г.). ASLR в Solaris 11.1 можно настроить для всей системы, для каждой зоны или для каждого двоичного файла. [50]
Эксплуатация
[ редактировать ]Было продемонстрировано, что атака по побочному каналу с использованием целевого буфера ветвления позволяет обойти защиту ASLR. [32] В 2017 году была продемонстрирована атака под названием «ASLR⊕Cache», которая могла победить ASLR в веб-браузере с использованием JavaScript. [51]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Марко-Гисберт, Гектор; Риполь Риполл, Исмаэль (22 июля 2019 г.). «Рандомизация макета адресного пространства следующего поколения» . Прикладные науки . 9 (14): 2928. дои : 10.3390/app9142928 . hdl : 10251/144813 . ISSN 2076-3417 .
- ^ Брэд Спенглер (октябрь 2003 г.). «PaX: гарантированное завершение выполнения произвольного кода» (PDF) . grsecurity.net . Слайды с 22 по 35. Архивировано (PDF) из оригинала 25 октября 2020 г. Проверено 20 августа 2015 г.
- ^ Перейти обратно: а б Тео Де Раадт (2005). «Методы предотвращения использования эксплойтов (обновлены для включения случайного malloc и mmap) на OpenCON 2005» . Архивировано из оригинала 16 июля 2012 г. Проверено 26 августа 2009 г.
- ^ «Инновации OpenBSD» . Проект OpenBSD. Архивировано из оригинала 9 сентября 2016 г. Проверено 12 сентября 2016 г.
- ^ Перейти обратно: а б Марко-Гисберт, Гектор; Риполл, Исмаэль (20 ноября 2014 г.). «Об эффективности Full-ASLR в 64-битной Linux» (PDF) . Архивировано из оригинала (PDF) 8 мая 2015 г. Проверено 29 марта 2016 г.
- ^ Шахам, Х.; Пейдж, М.; Пфафф, Б.; Гох, Э.Дж.; Модадугу, Н.; Боне, Д. (2004). Об эффективности рандомизации адресного пространства . 11-я конференция ACM по компьютерной и коммуникационной безопасности. стр. 298–307.
- ^ Перейти обратно: а б «Реализовать рандомизацию порядка загрузки библиотеки» . Архивировано из оригинала 11 августа 2023 г. Проверено 26 июня 2017 г.
- ^ Перейти обратно: а б Транзисторная память, такая как ОЗУ, ПЗУ, флэш-память и размеры кэша, а также размеры файлов определяются с использованием двоичных значений для K (1024 1 ), М (1024 2 ), Г (1024 3 ), и т. д.
- ^ «Безопасность Android» . Android-разработчики. Архивировано из оригинала 12 октября 2011 г. Проверено 7 июля 2012 г.
- ^ "осс-безопасность" . Архивировано из оригинала 5 октября 2015 г. Проверено 4 октября 2015 г.
- ^ «Вернуть «Повторно включить поддержку исполняемых файлов, отличных от PIE» » . Архивировано из оригинала 11 августа 2023 г. Проверено 26 июня 2017 г.
- ^ mmap — добавить рандомизацию смещения mmap. Архивировано 1 февраля 2014 г. на Wayback Machine , DragonFly Gitweb, 25 ноября 2010 г.
- ^ «Реализация рандомизации макета адресного пространства (ASLR)» . Архивировано из оригинала 07 мая 2019 г. Проверено 10 февраля 2019 г.
- ^ «ASLR — FreeBSD Wiki» . Архивировано из оригинала 17 мая 2021 г. Проверено 17 мая 2021 г.
- ^ «Примечания к выпуску FreeBSD 13.2-RELEASE» . Архивировано из оригинала 11 апреля 2023 г. Проверено 11 апреля 2023 г.
- ^ Pwn2Own, день 2: iPhone и BlackBerry побеждены; Непоказ Chrome и Firefox. Архивировано 2 мая 2012 г. в Wayback Machine , Ars Technica , 11 марта 2011 г.
- ^ Стефан Эссер (07 марта 2013 г.). «Эксплуатация iOS 6 280 дней спустя» . Слайд 19: «В iOS 6 появилась KASLR». Архивировано из оригинала 07 мая 2019 г. Проверено 25 апреля 2018 г.
- ^ Тарьей Мандт. «Атака на ядро iOS: взгляд на evasi0n» ( PDF) . Архивировано (PDF) из оригинала 13 декабря 2020 г. Проверено 23 июля 2023 г.
- ^ Данг, Алан; Миллер, Чарли (25 марта 2009 г.). «Бит NX и ASLR» . Аппаратное обеспечение Тома . Архивировано из оригинала 11 августа 2023 г. Проверено 20 марта 2010 г.
- ^ Linux программиста Руководство – Системные вызовы –
- ^
- «Документация для /proc/sys/kernel/ — документация по ядру Linux» . www.kernel.org .
- «Документация для /proc/sys/vm/ — документация по ядру Linux» . www.kernel.org .
- ^ «[ИСПРАВЛЕНИЕ] ASLRv3: randomize_va_space=3 предотвращает атаку offset2lib» . lore.kernel.org .
- ^ Миллер, Джастин (8 января 2024 г.). «ASLRn't: Как выравнивание памяти сломало библиотеку ASLR» . блог zolutal . Проверено 13 января 2024 г.
- ^ «[LTP] [ИСПРАВЛЕНИЕ 2/2] Добавить тест на ошибку ASLRn't — Мартин Дуча» . lore.kernel.org .
- ^ Джейк Эдж (09 октября 2013 г.). «Рандомизация расположения адресного пространства ядра» . LWN.net . Архивировано из оригинала 4 апреля 2014 г. Проверено 2 апреля 2014 г.
- ^ «Ядро Linux 3.14, раздел 1.7. Рандомизация адресного пространства ядра» . kernelnewbies.org . 30 марта 2014 г. Архивировано из оригинала 15 января 2021 г. Проверено 2 апреля 2014 г.
- ^ «kernel/git/torvalds/linux.git: x86, kaslr: местоположение возврата из decompress_kernel (дерево исходного кода ядра Linux)» . ядро.орг . 13 октября 2013 г. Архивировано из оригинала 11 августа 2023 г. Проверено 2 апреля 2014 г.
- ^ KASLR мертв: да здравствует KASLR (PDF) . Инженерное безопасное программное обеспечение и системы 2017. 24 июня 2017 г.
- ^ Чан, Ёнджин; Ли, Санго; Ким, Тэсу (2016). «Нарушение рандомизации макета адресного пространства ядра с помощью Intel TSX» (PDF) . Материалы конференции ACM SIGSAC 2016 г. по компьютерной и коммуникационной безопасности . ККС '16. Нью-Йорк: Ассоциация вычислительной техники. стр. 380–392. дои : 10.1145/2976749.2978321 . ISBN 9781450341394 . S2CID 6293725 . Архивировано (PDF) из оригинала 21 сентября 2020 г. Проверено 29 декабря 2017 г.
- ^ Корбет, Джонатан (20 декабря 2017 г.). «Текущее состояние изоляции таблицы страниц ядра» . Еженедельные новости Linux . Архивировано из оригинала 4 января 2018 г. Проверено 4 января 2018 г.
- ^ Корбет, Джонатан (15 ноября 2017 г.). «KAISER: скрытие ядра из пользовательского пространства» . Еженедельные новости Linux . Архивировано из оригинала 08.12.2020 . Проверено 29 декабря 2017 г.
- ^ Перейти обратно: а б Евтюшкин Дмитрий; Пономарев Дмитрий; Абу-Газале, Наэль (2016). Перейти через ASLR: атака на предсказатели ветвей для обхода ASLR (PDF) . 2016 49-й ежегодный Международный симпозиум IEEE/ACM по микроархитектуре (MICRO). стр. 1–13. дои : 10.1109/MICRO.2016.7783743 . ISBN 978-1-5090-3508-3 . S2CID 3801142 .
- ^ «Linux 5.16 уже заранее подготовлен к поддержке FGKASLR — Phoronix» . www.phoronix.com . Архивировано из оригинала 10 ноября 2021 г. Проверено 10 ноября 2021 г.
- ^ «Защита безопасности программного обеспечения Windows ISV» . Msdn.microsoft.com. 06.12.2010. Архивировано из оригинала 18 апреля 2012 г. Проверено 10 апреля 2012 г.
- ^ Внутреннее устройство Windows: включая Windows Server 2008 и Windows Vista, пятое издание (PRO-разработчик) ISBN 978-0-7356-2530-3
- ^ Олли Уайтхаус (февраль 2007 г.). «Анализ рандомизации макета адресного пространства в Windows Vista» (PDF) . Архивировано из оригинала (PDF) 15 июля 2019 г. Проверено 18 января 2009 г.
- ^ «ВенТраст» . Codeplex.com. Архивировано из оригинала 25 декабря 2009 г. Проверено 10 апреля 2012 г.
- ^ «Озон архитекторов безопасности» . Архитекторы безопасности. Архивировано из оригинала 4 марта 2016 г. Проверено 10 апреля 2012 г.
- ^ «Исходный код WehnTrust» . Архивировано из оригинала 28 ноября 2013 г. Проверено 15 ноября 2013 г.
- ^ «Рандомизация адресного пространства для систем Windows» (PDF) . Архивировано (PDF) из оригинала 5 августа 2010 г. Проверено 10 апреля 2012 г.
- ^ Олли (2 марта 2012 г.). «Исследование, разработка, оценка, консультации и обучение | Recx: частичный метод борьбы с ASLR - несколько O/S» . Recxltd.blogspot.co.uk. Архивировано из оригинала 23 марта 2013 г. Проверено 10 апреля 2012 г.
- ^ «Анонс NetBSD 5.0» . Архивировано из оригинала 21 апреля 2016 г. Проверено 25 апреля 2016 г.
- ^ Христос Зулас (2016). «Двоичные файлы PIE и ASLR включены в сборке по умолчанию для amd64» . Архивировано из оригинала 22 апреля 2016 г. Проверено 25 апреля 2016 г.
- ^ «Ядро ASLR на amd64» . 2017. Архивировано из оригинала 16 октября 2017 г. Проверено 16 октября 2017 г.
- ^ Перейти обратно: а б Курт Миллер (2008). «Реализация независимого от позиции исполняемого файла (PIE) OpenBSD» . Архивировано из оригинала 12 июня 2011 г. Проверено 22 июля 2011 г.
- ^ "libc/stdlib/malloc.c" . Перекрестная ссылка BSD, OpenBSD src/lib/ . Архивировано из оригинала 26 декабря 2014 г. Проверено 12 сентября 2016 г.
- ^ «Mac OS X – Безопасность – Защищает от вирусов и вредоносных программ» . Яблоко. Архивировано из оригинала 25 мая 2011 г. Проверено 10 апреля 2012 г.
- ^ "Безопасность" . Apple Inc. Архивировано из оригинала 6 июня 2011 г. Проверено 6 июня 2011 г.
- ^ «Обзор основных технологий OS X Mountain Lion» (PDF) . Июнь 2012 г. Архивировано (PDF) из оригинала 10 июля 2012 г. Проверено 25 июля 2012 г.
- ^ Контроль доступа к машинным ресурсам. Архивировано 20 июня 2013 г. в Wayback Machine , Информационная библиотека Oracle, 26 октября 2012 г.
- ^ AnC. Архивировано 16 марта 2017 г. в Wayback Machine VUSec, 2017 г.
Внешние ссылки
[ редактировать ]- Методы предотвращения эксплойтов: обновление через 10 лет. Архивировано 20 февраля 2014 г. на Wayback Machine в OpenBSD.
- Документация PaX по ASLR
- Сравнение PaX с Exec Shield и W^X
- Рандомизация макета адресного пространства в Windows Vista - Веб-журнал Майкла Ховарда
- ASLR для Windows 2000/XP/2003 (WehnTrust)
- Обход защиты PaX ASLR
- Об эффективности рандомизации структуры адресного пространства
- Тестовые приложения (или библиотеки) на предмет поддержки ASLR и DEP.
- Справочник по ASLR Smack & Laugh