СИСТЕМЫ И СПОСОБЫ ПРЕДОТВРАЩЕНИЯ НЕСАНКЦИОНИРОВАННОГО ПЕРЕМЕЩЕНИЯ СТЕКА

1. Система обработки данных, содержащая:
регистр нижней границы стека, выполненный с возможностью хранить первый адрес памяти, причем первый адрес памяти обозначает нижнюю границу памяти, адресуемой через сегмент стека;
регистр верхней границы стека, выполненный с возможностью хранить второй адрес памяти, причем второй адрес памяти обозначает верхнюю границу памяти, адресуемой через сегмент стека; и
логическую схему проверки границ стека, выполненную с возможностью определять несанкционированное, перемещение стека путем сравнения адреса памяти, к которому обращаются через сегмент стека, по меньшей мере с первым адресом памяти и вторым адресом памяти.
2. Система обработки данных по п. 1, в которой логическая схема проверки границ стека содержит:
первый сумматор, выполненный с возможностью сравнивать адрес памяти, к которому обращаются через сегмент стека, с первым адресом памяти; и
второй сумматор, выполненный с возможностью сравнивать адрес памяти, к которому обращаются через сегмент стека, со вторым адресом памяти.
3. Система обработки данных по п. 1, в которой логическая схема проверки границ стека также сконфигурирована так, чтобы генерировать исключение ошибки стека в ответ по меньшей мере на одно из следующего: определение, что адрес памяти, к которому обращаются через сегмент стека, меньше, чем первый адрес памяти, или определение, что адрес памяти, к которому обращаются через сегмент стека, больше, чем второй адрес памяти.
4. Система обработки данных по п. 1, также содержащая регистр состояния стека;
причем логическая схема проверки границ стека также сконфигурирована так, чтобы хранить в регистре состояния стека адрес памяти, к которому обращаются через сегмент стека.
5. Система обработки данных по п. 1, причем система обработки данных сконфигурирована так, чтобы работать по меньшей мере в одном из следующих режимов: 32-битовый пользовательский режим, 64-битовый пользовательский режим или привилегированный режим; и
при этом система обработки данных содержит по меньшей мере одно из следующего: первый регистр нижней границы стека и первый регистр верхней границы
стека для 32-битового пользовательского режима, второй регистр нижней границы стека и второй регистр верхней границы стека для 64-битового пользовательского режима, и третий регистр нижней границы стека и третий регистр верхней границы стека для привилегированного режима.
6. Система обработки данных по п. 1, в которой логическая схема проверки границ стека также сконфигурирована так, чтобы в ответ на получение команды сохранения состояния процессора сохранять в специальной ячейке памяти значения регистра нижней границы стека и регистра верхней границы стека.
7. Система обработки данных по п. 1, в которой логическая схема проверки границ стека также сконфигурирована так, чтобы в ответ на получение команды восстановления состояния процессора загружать из специальной ячейки памяти значения регистра нижней границы стека и регистра верхней границы стека.
8. Система обработки данных по п. 7, в которой логическая схема проверки границ стека также сконфигурирована так, чтобы проверять, совпадает ли значение проверки целостности со значением заданной хеш-функции от значения регистра нижней границы стека, значения верхней границы стека и заданного значения ключа.
9. Система обработки данных по п. 1, также сконфигурированная так, чтобы работать по меньшей мере в одном из следующих режимов: пользовательский режим или привилегированный режим; и
в которой логическая схема проверки границ стека сконфигурирована так, чтобы отключать изменение значений регистра нижней границы стека и регистра верхней границы стека при работе в пользовательском режиме.
10. Система обработки данных по п. 1, дополнительно содержащая следующее:
регистр базового указателя (BP); и
регистр указателя стека (SP);
в которой логическая схема проверки границ стека сконфигурирована так, чтобы сохранять адрес памяти, к которому обращаются через сегмент стека, используя SP регистр или BP регистр.
11. Система обработки данных по п. 10, в которой логическая схема проверки границ стека также сконфигурирована так, чтобы задействовать определение несанкционированного перемещения стека, если адрес памяти, к которому обращаются, сохранен с использованием SP регистра; и
в которой логическая схема проверки границ стека также сконфигурирована так, чтобы отключать определение несанкционированного перемещения стека, если адрес памяти, к которому обращаются, сохранен с использованием BP регистра.
12. Система обработки данных по п. 1, в которой логическая схема проверки границ стека также сконфигурирована так, чтобы:
в ответ на получение команды задействования проверки стека задействовать определение несанкционированного перемещения стека; и
в ответ на получение команды отключения проверки стека отключать определение несанкционированного перемещения стека.
13. Способ, содержащий следующее:
посредством системы обработки данных сохраняют первый адрес памяти в регистре нижней границы стека, причем первый адрес памяти обозначает нижнюю границу памяти, адресуемой через сегмент стека;
сохраняют второй адрес памяти в регистре верхней границы стека, причем второй адрес памяти обозначает верхнюю границу памяти, адресуемой через сегмент стека; определяют обращение к памяти через сегмент стека; и
сравнивают адрес памяти, к которому обращаются через сегмент стека, по меньшей мере с первым адресом памяти и вторым адресом памяти, чтобы обнаружить несанкционированное перемещение стека.
14. Способ по п. 13, дополнительно содержащий следующее:
сохраняют в регистре состояния стека адрес памяти, к которому обращаются через сегмент стека.
15. Способ по п. 13, дополнительно содержащий следующее:
определяют, что адрес памяти, к которому обращаются через сегмент стека, меньше, чем первый адрес памяти; и
генерируют исключение ошибки стека.
16. Способ по п. 13, дополнительно содержащий следующее:
определяют, что адрес памяти, к которому обращаются через сегмент стека, больше, чем второй адрес памяти; и
генерируют исключение ошибки стека.
17. Способ по п. 13, дополнительно содержащий следующее: принимают команду сохранения состояния процессора; и
сохраняют в памяти значение регистра нижней границы стека и значение регистра верхней границы стека.
18. Способ по п. 13, дополнительно содержащий следующее: принимают команду восстановления состояния процессора; и
загружают из памяти значение регистра нижней границы стека и значение регистра верхней границы стека.
19. Способ по п. 13, дополнительно содержащий следующее: принимают команду восстановления состояния процессора;
определяют, что значение проверки целостности совпадает со значением заданной хеш-функции от значения регистра нижней границы стека, значения верхней границы стека и заданного значения ключа; и
загружают значения границ стека в регистр нижней границы стека и регистр верхней границы стека.
20. Машинный постоянный носитель информации, содержащий исполняемые команды, при выполнении которых системой обработки данных эта система обработки данных выполняет следующие операции:
сохраняют первый адрес памяти в регистре нижней границы стека, причем первый адрес памяти обозначает нижнюю границу памяти, адресуемой через сегмент стека;
сохраняют второй адрес памяти в регистре верхней границы стека, причем второй адрес памяти обозначает верхнюю границу памяти, адресуемой через сегмент стека;
определяют обращение к памяти через сегмент стека; и
сравнивают адрес памяти, к которому обращаются через сегмент стека, по меньшей мере с первым адресом и вторым адресом, чтобы обнаружить попытку нарушения границ стека.