Переполняющиеся буфера - активные средства защиты

         

псевдокод функции, защищенной Pro-Police (добавленные строки выделены жирным шрифтом)


При всей надежности Pro-Police, отсутствие сторожевых слов между массивами, делает атаку по-прежнему возможной, поскольку затирание нижеследующих массивов порождает целый каскад вторичных переполнений (особенно целочисленных), да и массивы из указателей не такая уж большая редкость. Тем не менее такая проверка (кстати говоря, обещанная в следующих версиях Pro-Police) приведет к существенному падению производительности, что явно пойдет не на пользу ее популярности.

stack-guard

.NET

stack-shield

Pro-police



защищает адрес возврата

да

да

частично

да

защищает указатель кадра

нет

да

нет

да

защищает локальные переменные

нет

нет

частично

да

защищает аргументы

нет

нет

нет

да

защищает буфера

нет

нет

нет

нет

canary word случаен

нет

частично

да

защищает canary word от перезаписи

да

нет

да



Содержание раздела