LINUX.ORG.RU

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


0

0

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

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

anonymous

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

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

Интересно, в винде есть такая поддержка??? :)

Spectr ★★★ ()

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

Бедные вирмэйкеры...

anonymous ()

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

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

LONGOBARD ()

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

а начиная в каких Intel процесорах это раелизованно?

anonymous ()

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

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

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

anonymous ()

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

> 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 ()

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

Здесь написано коротко для каких процессоров, ядер, дистрибутивов.

http://redhat.com/~mingo/nx-patches/QuickStart-NX.txt

mita ()

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

> 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 ()

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

А такая фича для старых 32 разрядных процов типа PIII работать не будет???

anonymous ()

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

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

anonymous ()

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

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

anonymous ()

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

2anonymous:

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

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

Led ★★★☆☆ ()

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

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

x97Rang ★★★ ()

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

2x97Rang:

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

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

Led ★★★☆☆ ()

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

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

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

anonymous ()

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

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

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

Eugeny_Balakhonov ★★ ()

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

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

anonymous ()

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

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

algor

anonymous ()

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

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

anonymous ()

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

> Среди них 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 ★★★ ()

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

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

Типичный AS layout:

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

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

 

Dselect ★★★ ()

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

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

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