1.1, Аноним (-), 11:30, 06/09/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Как оно по сравнению с SSP-патчами и защитой на уровне malloc в glibc ? На первый взгляд только проверяет чаще и рандомных данных пишет больше.
| |
|
2.16, pavlinux (ok), 19:50, 06/09/2013 [^] [^^] [^^^] [ответить]
| +/– |
От кривых рук ни один патч не спасёт, особо в С. Так что, foreach in <limits.h> do ... вперед с песней.
| |
|
3.24, AnonuS (?), 00:49, 07/09/2013 [^] [^^] [^^^] [ответить]
| +/– |
> От кривых рук ни один патч не спасёт, особо в С.
> Так что, foreach in <limits.h> do ... вперед с песней.
Павлик, переходи на C++, пользуй STL и BOOST, включи максимальный уровень предупреждений и спасёшься, ибaвaистину...
| |
|
|
1.2, ВовкаОсиист (ok), 12:05, 06/09/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Эм, а использовать онное только для поиска выходов в процессе тестирования/дебага, не? Или виндус вей, выпускаем debug-версию, ибо в релизе падает xD
| |
|
2.23, AnonuS (?), 00:45, 07/09/2013 [^] [^^] [^^^] [ответить]
| +/– |
> ... Или виндус вей, выпускаем debug-версию, ибо в релизе падает xD
Вован, это ты клёво придумал, такой незамысловатый подход наверняка сберёг очень много твоего личного времени и нервов.
| |
|
1.3, Вонни пух (?), 12:51, 06/09/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
grsecurity с PaX все исправит
Решать проблему нужно на уровне ядра а не софта, хотя оба варианта хороши
| |
|
|
|
|
|
Часть нити удалена модератором |
6.18, ___ (??), 21:05, 06/09/2013 [ответить]
| +/– |
Ядро может контролировать поведение, но не всегда и не все. Очень упрощенно, вы запросили 1k памяти для массива, ядро в силу страничной организации выделило 4к, все, выход за пределы 1к это сугубо дело вашей программы. Так же не забываем что еще есть static, область стека, ядро сможет проконтроллировать сколько памяти выделить (а точнее отобразить) под стек и static, но все что происходит внутри уже выделенных страниц памяти ядру неподконтрольно.
| |
|
7.21, Пампарам. (?), 22:25, 06/09/2013 [^] [^^] [^^^] [ответить]
| +/– |
>Ядро может контролировать поведение, но не всегда и не все.
Всегда и все, или ядро не ядро.
> Очень упрощенно, вы запросили 1k памяти для массива, ядро в силу страничной организации выделило 4к, все, выход за пределы 1к это сугубо дело вашей программы.
Чего, чего?
>Так же не забываем что еще есть static, область стека, ядро сможет проконтроллировать сколько памяти выделить (а точнее отобразить) под стек и static, но все что происходит внутри уже выделенных страниц памяти ядру неподконтрольно.
Гуглить на тему дефрагментации памяти, менеджеров памяти, и т.д, и т.п. Много думать.
| |
|
8.22, ___ (??), 23:14, 06/09/2013 [^] [^^] [^^^] [ответить] | +/– | Не путаем выделение памяти в ядре и оптимизации которые может сделать malloc, ил... текст свёрнут, показать | |
8.27, qux (ok), 14:10, 07/09/2013 [^] [^^] [^^^] [ответить] | +/– | Простите, влезу Hint почему корректность входящих параметров не проверяется во... текст свёрнут, показать | |
|
|
|
|
|
|
2.7, linux must _RIP_ (?), 14:23, 06/09/2013 [^] [^^] [^^^] [ответить]
| +/– |
> 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.8, Вонни пух (?), 14:29, 06/09/2013 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> 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
| |
3.28, qux (ok), 14:21, 07/09/2013 [^] [^^] [^^^] [ответить]
| +/– |
А можно несколько примеров, когда без Nested Functions вообще никак? Которые gcc extension и отсутствуют в стандарте С.
| |
|
4.31, arisu (ok), 02:48, 08/09/2013 [^] [^^] [^^^] [ответить]
| +/– |
> А можно несколько примеров, когда без Nested Functions вообще никак?
можно и вооще без си. и даже без ассемблера — напрямую машинный код фигачить. только зачем? nested functions и compound statements — мегаудобные штуки. ну, нет их в стандарте — что ж теперь, кровью харкать?
| |
|
|
|
1.25, none7 (?), 11:55, 07/09/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
>Принцип действия Watchman сводится к добавлению дополнительных случайных данных в кучу и стек, с последующей их периодической проверкой
Случайности не случайны. Это может защитить от ошибок переполнения буфера из за некорректных данных, но от целенаправленной атаки скорей всего не защитит.
| |
1.26, аноня (?), 12:41, 07/09/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Грабли Си такие грабли. И это вместо того, чтоб использовать адекватный(е) язык(и).
| |
|