RU2015147646A - Системы и способы предотвращения несанкционированного перемещения стека - Google Patents
Системы и способы предотвращения несанкционированного перемещения стека Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/145—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register 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. Машинный постоянный носитель информации, содержащий исполняемые команды, при выполнении которых системой обработки данных эта система обработки данных выполняет следующие операции:
сохраняют первый адрес памяти в регистре нижней границы стека, причем первый адрес памяти обозначает нижнюю границу памяти, адресуемой через сегмент стека;
сохраняют второй адрес памяти в регистре верхней границы стека, причем второй адрес памяти обозначает верхнюю границу памяти, адресуемой через сегмент стека;
определяют обращение к памяти через сегмент стека; и
сравнивают адрес памяти, к которому обращаются через сегмент стека, по меньшей мере с первым адресом и вторым адресом, чтобы обнаружить попытку нарушения границ стека.
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)
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)
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 |
-
2013
- 2013-06-05 US US13/910,333 patent/US9239801B2/en active Active
-
2014
- 2014-05-30 CN CN201480025410.XA patent/CN105190572B/zh not_active Expired - Fee Related
- 2014-05-30 KR KR1020157029415A patent/KR101706496B1/ko active IP Right Grant
- 2014-05-30 BR BR112015027846A patent/BR112015027846A2/pt active Search and Examination
- 2014-05-30 WO PCT/US2014/040209 patent/WO2014197310A1/en active Application Filing
- 2014-05-30 EP EP14808307.4A patent/EP3005127B1/en not_active Not-in-force
- 2014-05-30 RU RU2015147646A patent/RU2629442C2/ru not_active IP Right Cessation
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 |