Интернет магазин китайских планшетных компьютеров



Компьютеры - NX bit - Технические детали

07 мая 2011


Оглавление:
1. NX bit
2. Технические детали



Переполнение буфера часто возникает, когда разработчик программы выделяет некоторую область данных фиксированной длины, считая, что этого будет достаточно, но потом, манипулируя данными никак не проверяет выход за её границы. В результате поступающие данные займут области памяти им не предназначенные, уничтожив имеющуюся там информацию. Очень часто временные буферы выделяются внутри процедур, память для которых выделяется в программном стеке, в котором также хранятся адреса возвратов в вызывающую подпрограмму. Тщательно изучив код программы, злоумышленник может обнаружить такую ошибку, и теперь ему достаточно передать в программу такую последовательность данных, обработав которую программа ошибочно заменит адрес возврата в стеке на адрес, требуемый злоумышленнику, который также передал под видом данных некоторый программный код. После завершения подпрограммы инструкция возврата вытолкнет из стека в указатель команд адрес входа в процедуру злоумышленника. Контроль над компьютером получен.

Благодаря атрибуту NX такое становится невозможным. Область стека помечается NX-битом и любое выполнение кода в нём запрещено. Теперь же, если передать управление стеку, то сработает защита. Хоть программу и можно заставить аварийно завершиться, но использовать её для выполнения произвольного кода становится очень сложно.

Однако, некоторые программы используют выполнение кода в стеке или куче. Такое решение может быть связано с оптимизацией, динамической компиляцией или просто оригинальным техническим решением. Обычно, операционные системы предоставляют системные вызовы для запроса памяти с разрешенной функцией исполнения как раз для таких целей, однако многие старые программы всегда считают всю память исполнимой. Для запуска таких программ под Windows приходится отключать функцию NX на весь сеанс работы, и чтобы включить её вновь, требуется перезагрузка. Хотя в Windows и предусмотрен механизм белого списка приложений, для которых отключен DEP, тем не менее данный метод не всегда работает корректно. Примером такой программы может служить Iris.

NX-бит является самым старшим разрядом элемента 64-битных таблиц страниц, используемых процессором для распределения памяти в адресном пространстве. 64-разрядные таблицы страниц используются операционными системами, работающими в 64-битном режиме, либо с включенным расширением физических адресов. Если ОС использует 32-разрядные таблицы, то возможности использовать защиту страниц от исполнения нет.



Просмотров: 2753


<<< Страничная память
Защищённый режим >>>