RU2015147646A - Системы и способы предотвращения несанкционированного перемещения стека - Google Patents

Системы и способы предотвращения несанкционированного перемещения стека Download PDF

Info

Publication number
RU2015147646A
RU2015147646A RU2015147646A RU2015147646A RU2015147646A RU 2015147646 A RU2015147646 A RU 2015147646A RU 2015147646 A RU2015147646 A RU 2015147646A RU 2015147646 A RU2015147646 A RU 2015147646A RU 2015147646 A RU2015147646 A RU 2015147646A
Authority
RU
Russia
Prior art keywords
stack
register
memory address
memory
processing system
Prior art date
Application number
RU2015147646A
Other languages
English (en)
Other versions
RU2629442C2 (ru
Inventor
Байджу В. ПАТЕЛ
Сяонин ЛИ
Х.П. Энвин
Асит К. МЕЛЛИК
Гилберт НЕЙДЖЕР
Джеймс Б. КРОССЛЕНД
Тоуби ОПФЕРМЕН
Атул А. КХАРЕ
Джейсон В. БРЕНДТ
Джеймс С. КОУК
Брайан Л. ВАЙДА
Original Assignee
Интел Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интел Корпорейшн filed Critical Интел Корпорейшн
Publication of RU2015147646A publication Critical patent/RU2015147646A/ru
Application granted granted Critical
Publication of RU2629442C2 publication Critical patent/RU2629442C2/ru

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Claims (51)

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. Машинный постоянный носитель информации, содержащий исполняемые команды, при выполнении которых системой обработки данных эта система обработки данных выполняет следующие операции:
сохраняют первый адрес памяти в регистре нижней границы стека, причем первый адрес памяти обозначает нижнюю границу памяти, адресуемой через сегмент стека;
сохраняют второй адрес памяти в регистре верхней границы стека, причем второй адрес памяти обозначает верхнюю границу памяти, адресуемой через сегмент стека;
определяют обращение к памяти через сегмент стека; и
сравнивают адрес памяти, к которому обращаются через сегмент стека, по меньшей мере с первым адресом и вторым адресом, чтобы обнаружить попытку нарушения границ стека.
RU2015147646A 2013-06-05 2014-05-30 Системы и способы предотвращения несанкционированного перемещения стека RU2629442C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/910,333 2013-06-05
US13/910,333 US9239801B2 (en) 2013-06-05 2013-06-05 Systems and methods for preventing unauthorized stack pivoting
PCT/US2014/040209 WO2014197310A1 (en) 2013-06-05 2014-05-30 Systems and methods for preventing unauthorized stack pivoting

Publications (2)

Publication Number Publication Date
RU2015147646A true RU2015147646A (ru) 2017-05-11
RU2629442C2 RU2629442C2 (ru) 2017-08-29

Family

ID=52006500

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015147646A RU2629442C2 (ru) 2013-06-05 2014-05-30 Системы и способы предотвращения несанкционированного перемещения стека

Country Status (7)

Country Link
US (1) US9239801B2 (ru)
EP (1) EP3005127B1 (ru)
KR (1) KR101706496B1 (ru)
CN (1) CN105190572B (ru)
BR (1) BR112015027846A2 (ru)
RU (1) RU2629442C2 (ru)
WO (1) WO2014197310A1 (ru)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809391B (zh) * 2014-01-26 2018-08-14 华为技术有限公司 缓冲区溢出攻击检测装置、方法和安全防护系统
US9501637B2 (en) * 2014-09-26 2016-11-22 Intel Corporation Hardware shadow stack support for legacy guests
US9767272B2 (en) * 2014-10-20 2017-09-19 Intel Corporation Attack Protection for valid gadget control transfers
US9946588B2 (en) * 2014-12-17 2018-04-17 International Business Machines Corporation Structure for reducing power consumption for memory device
US20160381050A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
GB2541714B (en) 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
CN106682492B (zh) * 2015-11-06 2019-08-16 大唐移动通信设备有限公司 一种内存越界的管理方法及装置
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
GB2547893B (en) * 2016-02-25 2018-06-06 Advanced Risc Mach Ltd Combining part of an offset with a corresponding part of a base address and comparing with a reference address
CN106919366B (zh) * 2017-02-15 2019-06-04 杭州中天微系统有限公司 实现堆栈自适应保护的处理器
US20180285559A1 (en) * 2017-03-28 2018-10-04 Rodrigo Branco Stack pivot detection systems and methods
US10795997B2 (en) * 2017-06-21 2020-10-06 Intel Corporation Hardened safe stack for return oriented programming attack mitigation
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
US11055402B2 (en) 2017-09-29 2021-07-06 Qualcomm Incorporated Dynamically generated code process sandboxing using authenticated pointers
CN108509791B (zh) * 2018-02-09 2021-06-04 清华大学 检测处理器的方法、检测装置以及检测系统
US10642536B2 (en) * 2018-03-06 2020-05-05 Western Digital Technologies, Inc. Non-volatile storage system with host side command injection
US10831679B2 (en) * 2018-03-23 2020-11-10 Intel Corporation Systems, methods, and apparatuses for defending against cross-privilege linear probes
CN113835645A (zh) * 2021-11-26 2021-12-24 深圳市华澜微电子有限公司 数据处理方法、装置、设备及存储介质
US20230281016A1 (en) * 2022-03-02 2023-09-07 Intel Corporation Software-controlled flag to require a stack switch during execution
CN115237475B (zh) * 2022-06-23 2023-04-07 云南大学 一种Forth多核堆栈处理器及指令集
CN117539543A (zh) * 2024-01-10 2024-02-09 北京中科昊芯科技有限公司 一种更新返回地址栈中数据的装置及应用产品

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1035609A1 (ru) * 1982-03-09 1983-08-15 Калининский Ордена Трудового Красного Знамени Политехнический Институт Устройство защиты стековой пам ти
US5003466A (en) * 1987-02-06 1991-03-26 At&T Bell Laboratories Multiprocessing method and arrangement
US5109329A (en) * 1987-02-06 1992-04-28 At&T Bell Laboratories Multiprocessing method and arrangement
DE3726192A1 (de) * 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
RU2022343C1 (ru) * 1990-08-01 1994-10-30 Серпуховское высшее военное командно-инженерное училище ракетных войск им.Ленинского комсомола Устройство защиты памяти
US5469566A (en) * 1992-03-12 1995-11-21 Emc Corporation Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units
WO1994003860A1 (en) * 1992-08-07 1994-02-17 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US20040168078A1 (en) 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
US7716495B2 (en) 2003-12-31 2010-05-11 Microsoft Corporation Protection against runtime function attacks
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7962731B2 (en) * 2005-10-20 2011-06-14 Qualcomm Incorporated Backing store buffer for the register save engine of a stacked register file
US8176567B2 (en) 2005-12-22 2012-05-08 Pitney Bowes Inc. Apparatus and method to limit access to selected sub-program in a software system
US9183114B2 (en) * 2005-12-27 2015-11-10 International Business Machines Corporation Error detection on the stack
CN101226468A (zh) * 2008-01-30 2008-07-23 中国科学院计算技术研究所 一种risc处理器装置及其有界访存方法
US8209757B1 (en) 2008-03-06 2012-06-26 Symantec Corporation Direct call into system DLL detection system and method
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions

Also Published As

Publication number Publication date
KR101706496B1 (ko) 2017-02-13
EP3005127A1 (en) 2016-04-13
EP3005127B1 (en) 2018-06-27
US20140365742A1 (en) 2014-12-11
BR112015027846A2 (pt) 2018-04-10
EP3005127A4 (en) 2017-01-25
CN105190572A (zh) 2015-12-23
WO2014197310A1 (en) 2014-12-11
RU2629442C2 (ru) 2017-08-29
CN105190572B (zh) 2018-07-24
US9239801B2 (en) 2016-01-19
KR20150130536A (ko) 2015-11-23

Similar Documents

Publication Publication Date Title
RU2015147646A (ru) Системы и способы предотвращения несанкционированного перемещения стека
US20140281354A1 (en) Continuous run-time integrity checking for virtual memory
KR100873943B1 (ko) 비휘발성 컴퓨터 메모리를 독출하기 위한 시스템 및 방법
US20160253497A1 (en) Return Oriented Programming Attack Detection Via Memory Monitoring
CN105637492B (zh) 多核异构系统转换后备缓冲器相干性
US20210351911A1 (en) Techniques for preventing memory timing attacks
JP2020500365A5 (ru)
KR102383900B1 (ko) 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산
US10824362B2 (en) File migration to persistent memory
EP2598997B1 (en) Method and apparatus to protect segments of memory
RU2015151131A (ru) Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы
JP2005339561A5 (ru)
TWI721996B (zh) 安全模式狀態下之資料存取追蹤
JP2021503127A5 (ru)
GB2582097A (en) Protecting in-memory configuration state registers
JP5922317B2 (ja) 変換索引バッファ(tlb)のための重複検査
EP3757860A1 (en) Providing improved efficiency for metadata usages
EP1974272A1 (en) Method and apparatus for detecting a fault condition and restoration thereafter using user context information
CA2561204A1 (en) System and method for recovering from a software processing error
US20070240021A1 (en) Method, system and program product for autonomous error recovery for memory devices
JP2013513162A5 (ru)
CN103226499A (zh) 一种恢复内部存储器中的异常数据的方法及装置
JP2018067047A (ja) 制御装置
US20130262947A1 (en) Information processing apparatus, and method of controlling information processing apparatus
US11366895B2 (en) Mitigating side-channel attacks using executable only memory (XOM)

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190531