LINUX.ORG.RU

Патч для включения аппаратной защиты от переполнения буфера в Linux.


0

0

Ingo Molnar анонсировал патч позволяющий запретить выполнение кода в областях памяти не помеченных как исполняемый код (PROT_EXEC), через использование технологии EVP (Enhanced Virus Protection) реализованной в процессорах семейства AMD64 и затем появившейся в CPU от Intel.

>>> Подробности

anonymous

Проверено: maxcom ()

Ответ на: комментарий от anonymous

Это просто добавился новый флаг - NX. Вот и все. Ничего шибко хитрого. Просто латаются недочеты x86 архитектуры. Теперь ошибки по типу переполнения буфера/стека не приведут к получению шелла.

LONGOBARD
()
Ответ на: комментарий от anonymous

Начиная с Prescott степпинга E0. Называется XD.

"Поддержка бита NX в дескрипторе страниц служит для дополнительной защиты страниц и указывает, что команды из этой страницы виртуальной памяти выполнять нельзя. На основе использования бита NX возможно организовать аппаратную защиту от такого бича 32 битных операционных систем, как «переполнение буфера». О важности этого нововведения говорит хотя бы тот факт, что примерно 50% всех патчей для Microsoft Windows за последние два года направлены на исправление проблем с безопасностью, которые могут быть просто устранены использованием бита NX."

anonymous
()

> The existing NX support in the 64-bit x86_64 kernels has been written by Andi Kleen and this patch is modeled after his code.

Насколько я понимаю, этот патч только для новых процов от Intel. Для amd64 поддержка уже давно есть... Или нет? Кто-нибудь знает. А то сырцов под рукой нет.

c0ff
()
Ответ на: комментарий от anonymous

aga a v vindovoy versii navernoe bagi budut eche pol goda otlavlivat' ))))

anonymous
()
Ответ на: комментарий от mita

> 64-bit x86_64 kernels already make use of the 64-bit variant of the NX feature - this patch is only meant for 32-bit x86 kernels and distributions.)

2mita: огромное спасибо за ссылку :) значит у меня это уже давно работает. ;)

c0ff
()
Ответ на: комментарий от anonymous

Это поддержка аппаратного решения. Не будет работать и на P-IV до нового степинга.

anonymous
()

А я считал что атрибуты чтения/выполнения/записи давно есть в дескрипторах. Смысл ставить их на каждую страницу?

anonymous
()
Ответ на: комментарий от anonymous

2anonymous:

>А я считал что атрибуты чтения/выполнения/записи давно есть в дескрипторах. Смысл ставить их на каждую страницу?

Практически никто не использует сегментную модель, как правило - FLAT...

Led ★★★☆☆
()
Ответ на: комментарий от x97Rang

2x97Rang:

>так libsafe давно эту проблему решает

в случае аппаратного решения оверхед и ресурсоёмкость софтины значительно ниже...

Led ★★★☆☆
()
Ответ на: комментарий от Led

>Практически никто не использует сегментную модель, как правило - FLAT...

Может не прав, но всегда думал что FLAT эта та же сегментная модель, только сегменты размером во все доступное адресное пространство. Почему проще разделять на выполнение/невыполнение постранично, а не через те же сегменты?

anonymous
()
Ответ на: комментарий от anonymous

> В винде все равно не поможет. Там в других местах дыры.

Если посмотреть ретроспективу дыр MS Windows, то обнаружится, что почти все дыры были связаны с переполнением буфера

Eugeny_Balakhonov ★★
()
Ответ на: комментарий от Eugeny_Balakhonov

плохо смотрите. Обычно классических buffer overflow мало. Да и давно придумали технику обхода таких защит. Просто эксплоиты станут немного длиннее. Патч полезен как защита от самых глупых ляпов.

anonymous
()
Ответ на: комментарий от anonymous

Слава яйцам, уже закат 32-битной эры, и только этот дурацкий deisgn flaw собрались пофиксить. Этак лет через 10 заново изобретут фон-неймановскую модель.

algor

anonymous
()

Несколько раз устанавливал патчи, типа Pax, Openwall и др. Как только запретишь выполнение кода в стеке, сразу перестает работать добрая половина программ. Среди них X-ы, java, mozilla, kde. Разрешишь выполнение кода в стеке - начинают работать. В инете попадалась информация, что дизайн большинства современных сложных программ требует наличия возможности исполнение кода в стеке. Как оно все будет работать c защитой на аппаратном уровне? Весь софт ведь переписывать придется...

anonymous
()
Ответ на: комментарий от anonymous

Ауууууууу! Привет с Чукотки! Где Irsi, Ogr и Antichrist? Он бы щас обматерил убогую 32-разрядную

anonymous
()
Ответ на: комментарий от anonymous

> Среди них X-ы

Да, горячие парни из XFree решили, что пользовать ld -- это не круто,
и надо сделать свою приблуду для загрузки модулей...

> mozilla

$ chpax -v /usr/lib/mozilla/mozilla-bin 

----[ chpax 0.6 : Current flags for /usr/lib/mozilla/mozilla-bin (PeMRxS) ]---- 

 * Paging based PAGE_EXEC       : enabled (overridden) 
 * Trampolines                  : not emulated 
 * mprotect()                   : restricted 
 * mmap() base                  : randomized 
 * ET_EXEC base                 : not randomized 
 * Segmentation based PAGE_EXEC : enabled 

И тем не менее, скорее работает, чем нет :)

> kde

В топку ублюдочного монстра.

> В инете попадалась информация, что дизайн большинства современных 
> сложных программ требует наличия возможности исполнение кода в стеке.

То дизайнеры криворукие. 


P.S. 

$ grep 'stack' /etc/system
set noexec_user_stack = 1
set noexec_user_stack_log = 1

Тем не менее всякая java-хренота работает. То ли SUNтехники сделали
в Solaris дырку для JVM :(, то ли Linux'-овая через ж#$у написана...

Dselect ★★★
()
Ответ на: комментарий от anonymous

> А я считал что атрибуты чтения/выполнения/записи давно есть в 
> дескрипторах. Смысл ставить их на каждую страницу?

Типичный AS layout:

 R-X-- libblah [text]
 RW--- libblah [stack]
 RW--- libblah [anonymous mapping]
 R-X-- libfoo [text]
 RW--- libfoo [stack] 
 ........................

 В случае нормального MMU можно просто соответствующим образом поставить права на страницы, в случае убожества x86 -- нужно растягивать код и стек по разным сегментам (как делает, например, PaX). 

 

Dselect ★★★
()
Ответ на: комментарий от anonymous

> Openwall ... Как только запретишь выполнение кода в стеке, сразу
> перестает работать
а ты трамполайны разреши а всё остальное запрети.
по крайней мере у меня под ow вполне себе всё работает (исключая oracle - длянего надо один крыжик сниматьв ow - "destroy shmem not in use")

mumpster ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.