The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Watchman - новый GCC-фреймворк для защиты от переполнения бу..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от opennews (??) on 06-Сен-13, 11:30 
Представлена (http://permalink.gmane.org/gmane.comp.security.oss.general/1...) новая надстройка над GCC - Watchman (https://github.com/ewimberley/Watchman), нацеленная на выявление выходов за допустимые границы памяти и блокирование переполнений буферов в приложениях. Принцип действия Watchman сводится к добавлению дополнительных случайных данных в кучу и стек, с последующей их периодической проверкой. Подобные проверки негативно влияют на производительность, но оправданы в ситуациях, когда безопасности уделяется первостепенное внимание.


URL: http://permalink.gmane.org/gmane.comp.security.oss.general/1...
Новость: https://www.opennet.ru/opennews/art.shtml?num=37841

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от Аноним (??) on 06-Сен-13, 11:30 
Как оно по сравнению с SSP-патчами и защитой на уровне malloc в glibc ? На первый взгляд только проверяет чаще и рандомных данных пишет больше.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от pavlinux (ok) on 06-Сен-13, 19:50 
От кривых рук ни один патч не спасёт, особо в С.  Так что, foreach in <limits.h> do ... вперед с песней.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

24. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от AnonuS on 07-Сен-13, 00:49 
> От кривых рук ни один патч не спасёт, особо в С.  
> Так что, foreach in <limits.h> do ... вперед с песней.

Павлик, переходи на C++, пользуй STL и BOOST, включи максимальный уровень предупреждений и спасёшься, ибaвaистину...

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

2. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от ВовкаОсиист (ok) on 06-Сен-13, 12:05 
Эм, а использовать онное только для поиска выходов в процессе тестирования/дебага, не? Или виндус вей, выпускаем debug-версию, ибо в релизе падает xD
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от AnonuS on 07-Сен-13, 00:45 
> ... Или виндус вей, выпускаем debug-версию, ибо в релизе падает xD

Вован, это ты клёво придумал, такой незамысловатый подход наверняка сберёг очень много твоего личного времени и нервов.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +1 +/
Сообщение от Вонни пух on 06-Сен-13, 12:51 
grsecurity с PaX все исправит

Решать проблему нужно на уровне ядра а не софта, хотя оба варианта хороши

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору
Часть нити удалена модератором

18. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от ___ (??) on 06-Сен-13, 21:05 
Ядро может контролировать поведение, но не всегда и не все. Очень упрощенно, вы запросили 1k памяти для массива, ядро в силу страничной организации выделило 4к, все, выход за пределы 1к это сугубо дело вашей программы. Так же не забываем что еще есть static, область стека, ядро сможет проконтроллировать сколько памяти выделить (а точнее отобразить) под стек и static, но все что происходит внутри уже выделенных страниц памяти ядру неподконтрольно.
Ответить | Правка | Наверх | Cообщить модератору

21. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от Пампарам. on 06-Сен-13, 22:25 
>Ядро может контролировать поведение, но не всегда и не все.

Всегда и все, или ядро не ядро.

> Очень упрощенно, вы запросили 1k памяти для массива, ядро в силу страничной организации выделило 4к, все, выход за пределы 1к это сугубо дело вашей программы.

Чего, чего?

>Так же не забываем что еще есть static, область стека, ядро сможет проконтроллировать сколько памяти выделить (а точнее отобразить) под стек и static, но все что происходит внутри уже выделенных страниц памяти ядру неподконтрольно.

Гуглить на тему дефрагментации памяти, менеджеров памяти, и т.д, и т.п. Много думать.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

22. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от ___ (??) on 06-Сен-13, 23:14 
>>Ядро может контролировать поведение, но не всегда и не все.
> Всегда и все, или ядро не ядро.
>> Очень упрощенно, вы запросили 1k памяти для массива, ядро в силу страничной организации выделило 4к, все, выход за пределы 1к это сугубо дело вашей программы.
> Чего, чего?

Не путаем выделение памяти в ядре и оптимизации которые может сделать malloc, или другой распределитель памяти в пространстве пользователя.

>>Так же не забываем что еще есть static, область стека, ядро сможет проконтроллировать сколько памяти выделить (а точнее отобразить) под стек и static, но все что происходит внутри уже выделенных страниц памяти ядру неподконтрольно.
> Гуглить на тему дефрагментации памяти, менеджеров памяти, и т.д, и т.п. Много
> думать.

То же самое на тему mmu и страничной адресации.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

27. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от qux (ok) on 07-Сен-13, 14:10 
Простите, влезу.

> Всегда и все, или ядро не ядро.

Hint: почему корректность входящих параметров не проверяется во всех-всех функциях ядра (и не только его)?

> Чего, чего?

А что неясного?

> Гуглить на тему дефрагментации памяти, менеджеров памяти, и т.д, и т.п. Много думать.

Всегда приятно видеть образованных людей. Которые про гугл знают, в смысле.
Ничего, что эти вещи и в юзерспейсе расположены?

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

6. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  –1 +/
Сообщение от linux must _RIP_ on 06-Сен-13, 14:21 
научите gcc не делать трамплины на стеке и будет вам радость с PAX.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от linux must _RIP_ on 06-Сен-13, 14:23 
> grsecurity с PaX все исправит
> Решать проблему нужно на уровне ядра а не софта, хотя оба варианта
> хороши

17.12 Trampolines for Nested Functions

A trampoline is a small piece of code that is created at run time when the address of a nested function is taken. It normally resides on the stack, in the stack frame of the containing function. These macros tell GCC how to generate code to allocate and initialize a trampoline.

после чего запасаемся покорном когда часть софта перестает работать.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +1 +/
Сообщение от Вонни пух on 06-Сен-13, 14:29 
>> grsecurity с PaX все исправит
>> Решать проблему нужно на уровне ядра а не софта, хотя оба варианта
>> хороши
> 17.12 Trampolines for Nested Functions
> A trampoline is a small piece of code that is created at
> run time when the address of a nested function is taken.
> It normally resides on the stack, in the stack frame of
> the containing function. These macros tell GCC how to generate code
> to allocate and initialize a trampoline.
> после чего запасаемся покорном когда часть софта перестает работать.

Делаем ставки на clang + MemorySanitizer + AddressSanitizer  + valgrind и не используем gcc

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

28. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от qux (ok) on 07-Сен-13, 14:21 
А можно несколько примеров, когда без Nested Functions вообще никак? Которые gcc extension и отсутствуют в стандарте С.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

31. "Watchman - новый GCC-фреймворк для защиты от..."  +/
Сообщение от arisu (ok) on 08-Сен-13, 02:48 
> А можно несколько примеров, когда без Nested Functions вообще никак?

можно и вооще без си. и даже без ассемблера — напрямую машинный код фигачить. только зачем? nested functions и compound statements — мегаудобные штуки. ну, нет их в стандарте — что ж теперь, кровью харкать?

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

25. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +1 +/
Сообщение от none7 on 07-Сен-13, 11:55 
>Принцип действия Watchman сводится к добавлению дополнительных случайных данных в кучу и стек, с последующей их периодической проверкой

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

26. "Watchman - новый GCC-фреймворк для защиты от переполнения бу..."  +/
Сообщение от аноня on 07-Сен-13, 12:41 
Грабли Си такие грабли. И это вместо того, чтоб использовать адекватный(е) язык(и).
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру