Рандомизация памяти как повышение безопасности приложений? - PullRequest
6 голосов
/ 21 апреля 2010

Недавно я натолкнулся на статью Microsoft, в которой рекламировались новые «защитные усовершенствования» Windows 7. В частности:

  • Рандомизация размещения адресного пространства (ASLR)
  • Куча рандомизации
  • Рандомизация стека

Далее в статье говорилось, что «... некоторые из этих защит находятся в основной операционной системе, а компилятор Microsoft Visual C ++ предлагает другие», но не объяснялось, как эти стратегии действительно повышают безопасность.

Кто-нибудь знает, почему рандомизация памяти повышает безопасность, если вообще? Используют ли другие платформы и компиляторы аналогичные стратегии?

Ответы [ 3 ]

9 голосов
/ 21 апреля 2010

Повышает безопасность, затрудняя прогнозирование места в памяти. Довольно много эксплойтов, связанных с переполнением буфера, помещают (например) адрес известной подпрограммы в стек и затем возвращаются к нему. Гораздо сложнее сделать это, не зная адреса соответствующей процедуры.

Насколько я знаю, OpenBSD был первым, кто сделал это, по крайней мере, среди достаточно известных ОС для ПК.

2 голосов
/ 21 апреля 2010

Это делает атаки типа возврат к libc (или возврат к предоставленному пользователем буферу данных в случае последних двух) намного сложнее. И да, он доступен в Linux, BSD и Mac OS. Как и следовало ожидать, детали зависят от ОС. См. Википедию Введение .

0 голосов
/ 22 апреля 2010

Рандомизируя стек, вы делаете невозможными атаки переполнения ванильного буфера, такие как Разрушение стека Алефа Первого ради забавы Причина в том, что атака основана на размещении небольшого количества исполняемого кода calld shellcode в предсказуемое место в памяти. Фрейм стека функций поврежден, а его адрес возврата перезаписан значением, выбранным злоумышленником. Когда поврежденная функция возвращает, поток выполнения перемещается в шелл-код злоумышленника. Традиционно этот адрес памяти настолько предсказуем, что он будет одинаковым на всех компьютерах, на которых установлена ​​одна и та же версия программного обеспечения.

Несмотря на расширенную защиту памяти, реализованную в Windows 7, удаленное выполнение кода все еще возможно. Недавно на CanSecWest машина под управлением Windows 7 и IE 8 была взломана в течение нескольких секунд. Вот техническое описание современной атаки с повреждением памяти, использующей висячий указатель в сочетании с переполнением кучи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...