The OpenNET Project / Index page

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

Watchman - новый GCC-фреймворк для защиты от переполнения буфера

06.09.2013 11:13

Представлена новая надстройка над GCC - Watchman, нацеленная на выявление выходов за допустимые границы памяти и блокирование переполнений буферов в приложениях. Принцип действия Watchman сводится к добавлению дополнительных случайных данных в кучу и стек, с последующей их периодической проверкой. Подобные проверки негативно влияют на производительность, но оправданы в ситуациях, когда безопасности уделяется первостепенное внимание.

  1. Главная ссылка к новости (http://permalink.gmane.org/gma...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/37841-gcc
Ключевые слова: gcc, buffer, security, watchman
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (17) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 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.6, linux must _RIP_ (?), 14:21, 06/09/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    научите gcc не делать трамплины на стеке и будет вам радость с PAX.
     
  • 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 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Грабли Си такие грабли. И это вместо того, чтоб использовать адекватный(е) язык(и).
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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