CN112988624B - 用于保护影子栈的处理器、方法、系统和指令 - Google Patents

用于保护影子栈的处理器、方法、系统和指令 Download PDF

Info

Publication number
CN112988624B
CN112988624B CN202110256487.XA CN202110256487A CN112988624B CN 112988624 B CN112988624 B CN 112988624B CN 202110256487 A CN202110256487 A CN 202110256487A CN 112988624 B CN112988624 B CN 112988624B
Authority
CN
China
Prior art keywords
ssp
shadow stack
instruction
processor
shadow
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN202110256487.XA
Other languages
English (en)
Chinese (zh)
Other versions
CN112988624A (zh
Inventor
V·尚伯格
J·W·布兰德特
R·L·萨希塔
B·E·亨特利
B·V·帕特尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Priority to CN202110256487.XA priority Critical patent/CN112988624B/zh
Publication of CN112988624A publication Critical patent/CN112988624A/zh
Application granted granted Critical
Publication of CN112988624B publication Critical patent/CN112988624B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10—Address translation
    • G06F12/1009—Address translation using page tables, e.g. page table structures
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10—Address translation
    • G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10—Address translation
    • G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10—Address translation
    • G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10—Address translation
    • G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00—Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02—Addressing or allocation; Relocation
    • G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10—Address translation
    • G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577—Assessing vulnerabilities and evaluating computer system security
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601—Interfaces specially adapted for storage systems
    • G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062—Securing storage systems
    • G06F3/0622—Securing storage systems in relation to access
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601—Interfaces specially adapted for storage systems
    • G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629—Configuration or reconfiguration of storage systems
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601—Interfaces specially adapted for storage systems
    • G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671—In-line storage system
    • G06F3/0673—Single storage device
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054—Unconditional branch instructions
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/30101—Special purpose registers
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/30145—Instruction analysis, e.g. decoding, instruction word fields
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802—Instruction prefetching
    • G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10—Providing a specific technical effect
    • G06F2212/1052—Security improvement
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15—Use in a specific computing environment
    • G06F2212/151—Emulated environment, e.g. virtual machine
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65—Details of virtual memory and virtual address translation
    • G06F2212/651—Multi-level translation tables
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65—Details of virtual memory and virtual address translation
    • G06F2212/657—Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Peptides Or Proteins (AREA)
CN202110256487.XA 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令 Active CN112988624B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110256487.XA CN112988624B (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/752,221 US20160381050A1 (en) 2015-06-26 2015-06-26 Processors, methods, systems, and instructions to protect shadow stacks
US14/752,221 2015-06-26
CN201680029980.5A CN107667372A (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令
PCT/US2016/034364 WO2016209533A1 (fr) 2015-06-26 2016-05-26 Processeurs, procédés, systèmes et instructions pour protéger des piles fantômes
CN202110256487.XA CN112988624B (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201680029980.5A Division CN107667372A (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令

Publications (2)

Publication Number Publication Date
CN112988624A CN112988624A (zh) 2021-06-18
CN112988624B true CN112988624B (zh) 2024-10-29

Family

ID=57586232

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202410128866.4A Pending CN117873922A (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令
CN202110256487.XA Active CN112988624B (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令
CN201680029980.5A Pending CN107667372A (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202410128866.4A Pending CN117873922A (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201680029980.5A Pending CN107667372A (zh) 2015-06-26 2016-05-26 用于保护影子栈的处理器、方法、系统和指令

Country Status (5)

Country Link
US (3) US20160381050A1 (fr)
EP (4) EP3314507B1 (fr)
CN (3) CN117873922A (fr)
TW (4) TWI712953B (fr)
WO (1) WO2016209533A1 (fr)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2993605A1 (fr) * 2014-09-02 2016-03-09 Gemalto Sa Système et procédé pour protéger un dispositif contre les attaques sur des flux de traitement à l'aide d'un complément de pointeur de code
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
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
DE102016203283A1 (de) * 2016-02-29 2017-08-31 Robert Bosch Gmbh Verfahren zum Betreiben eines Mikroprozessors
US20180285559A1 (en) * 2017-03-28 2018-10-04 Rodrigo Branco Stack pivot detection systems and methods
US11468168B1 (en) * 2017-04-11 2022-10-11 Apple Inc. Systems and methods for optimizing authentication branch instructions
US10650544B2 (en) * 2017-06-09 2020-05-12 Sony Interactive Entertainment Inc. Optimized shadows in a foveated rendering system
US10740452B2 (en) * 2017-09-15 2020-08-11 Arm Limited Call path dependent authentication
US10885183B2 (en) * 2017-09-28 2021-01-05 International Business Machines Corporation Return oriented programming attack protection
US11275587B2 (en) 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
CN110598406B (zh) * 2018-06-12 2022-08-23 杨力祥 一种数据保护方法及计算装置
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10942863B2 (en) * 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US20200073822A1 (en) * 2018-08-30 2020-03-05 Micron Technology, Inc. Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US10915640B2 (en) * 2018-10-01 2021-02-09 International Business Machines Corporation Cyber security testing for authorized services
US11010479B2 (en) 2018-10-01 2021-05-18 International Business Machines Corporation Cyber security for space-switching program calls
US11544069B2 (en) 2018-10-25 2023-01-03 Micron Technology, Inc. Universal pointers for data exchange in a computer system having independent processors
US20210182390A1 (en) * 2019-03-27 2021-06-17 Mark Winterrowd Memory management to reduce risk of malicious third-party attacks
US11449339B2 (en) * 2019-09-27 2022-09-20 Red Hat, Inc. Memory barrier elision for multi-threaded workloads
FR3105855B1 (fr) * 2019-12-31 2022-01-07 Kalray Processeur à distribution configurable des ressources privilégiées et exceptions aux anneaux de protection
US11336679B2 (en) 2020-01-28 2022-05-17 International Business Machines Corporation Combinatorial test design for optimizing parameter list testing
US11243769B2 (en) * 2020-03-28 2022-02-08 Intel Corporation Shadow stack ISA extensions to support fast return and event delivery (FRED) architecture
US11829807B2 (en) 2020-05-15 2023-11-28 Samsung Electronics Co., Ltd. Method and apparatus for preventing task-signal deadlock due to contention for mutex in RTOS
GB2597249B (en) * 2020-07-16 2022-12-21 Advanced Risc Mach Ltd Authentication code generation/checking instructions
CN112579988B (zh) * 2020-12-10 2022-12-06 海光信息技术股份有限公司 影子栈数据完整性保护方法、装置和计算机设备
CN112580023B (zh) * 2020-12-23 2023-11-21 海光信息技术股份有限公司 影子栈管理方法及装置、介质、设备
EP4356247A1 (fr) * 2021-06-19 2024-04-24 Microsoft Technology Licensing, LLC Pile fantôme circulaire en mode d'audit
CN114266036B (zh) 2021-11-29 2026-01-23 中国科学院计算技术研究所 一种基于Intel CET机制的保护通用内存完整性的方法
US11789737B2 (en) * 2022-03-24 2023-10-17 Intel Corporation Capability-based stack protection for software fault isolation
US11977486B2 (en) 2022-04-04 2024-05-07 International Business Machines Corporation Shadow pointer directory in an inclusive hierarchical cache
FR3147397A1 (fr) * 2023-03-28 2024-10-04 Stmicroelectronics International N.V. Système informatique configuré pour exécuter un programme d’ordinateur
US12461804B2 (en) * 2024-04-29 2025-11-04 Microchip Technology Incorporated Periodically determining a stack error using a direct memory access call
US12585405B2 (en) 2024-06-28 2026-03-24 Arm Limited Address translation for accelerator-triggered memory access request
WO2026003484A1 (fr) * 2024-06-28 2026-01-02 Arm Limited Disponibilité d'accélérateurs matériels pour effectuer des opérations d'accélérateur
US12561087B2 (en) 2024-06-28 2026-02-24 Arm Limited Address translation for accelerator-triggered memory access requests
US12585524B2 (en) 2024-06-28 2026-03-24 Arm Limited Fault handling for accelerator-triggered memory access request

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497494A (en) * 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
WO2015044993A1 (fr) * 2013-09-24 2015-04-02 株式会社 エーティーティーコンサルティング Processeur, dispositif de traitement, et procédé de création d'un programme

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3794980A (en) 1971-04-21 1974-02-26 Cogar Corp Apparatus and method for controlling sequential execution of instructions and nesting of subroutines in a data processor
EP0473714A1 (fr) 1989-05-26 1992-03-11 Massachusetts Institute Of Technology Systeme de traitement parallele de donnees a files multiples
JPH0752576B2 (ja) 1990-07-19 1995-06-05 株式会社東芝 スタックメモリ
CA2074769C (fr) 1991-08-09 2001-03-20 International Business Machines Corporation Processeur a formules
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
US5634046A (en) 1994-09-30 1997-05-27 Microsoft Corporation General purpose use of a stack pointer register
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
DE19701166A1 (de) * 1997-01-15 1998-07-23 Siemens Ag Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
AU7340400A (en) 1999-09-01 2001-03-26 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
US6757771B2 (en) * 2000-08-09 2004-06-29 Advanced Micro Devices, Inc. Stack switching mechanism in a computer system
US6751749B2 (en) 2001-02-22 2004-06-15 International Business Machines Corporation Method and apparatus for computer system reliability
US20030200339A1 (en) 2001-07-02 2003-10-23 Globespanvirata Incorporated Communications system using rings architecture
US7086088B2 (en) * 2002-05-15 2006-08-01 Nokia, Inc. Preventing stack buffer overflow attacks
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
US6996677B2 (en) * 2002-11-25 2006-02-07 Nortel Networks Limited Method and apparatus for protecting memory stacks
US20040168078A1 (en) * 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
US7594111B2 (en) 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
FR2851349A1 (fr) 2003-02-17 2004-08-20 St Microelectronics Sa Procede de gestion d'une pile de microprocesseur pour la sauvegarde de donnees contextuelles
US20050044292A1 (en) * 2003-08-19 2005-02-24 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US7694304B2 (en) 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
DE10349200A1 (de) * 2003-10-23 2005-05-25 Daimlerchrysler Ag System und Verfahren zur Überwachung und Verwaltung prozessinterner Speicher einer Prozessausführungseinheit
US7243193B2 (en) 2004-05-27 2007-07-10 Silverbrook Research Pty Ltd Storage of program code in arbitrary locations in memory
US7478224B2 (en) 2005-04-15 2009-01-13 Atmel Corporation Microprocessor access of operand stack as a register file using native instructions
US20060277396A1 (en) 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
US7844804B2 (en) 2005-11-10 2010-11-30 Qualcomm Incorporated Expansion of a stacked register file using shadow registers
JP4844102B2 (ja) 2005-11-30 2011-12-28 富士ゼロックス株式会社 サブプログラム及びそのサブプログラムを実行する情報処理装置
US7581089B1 (en) * 2006-04-20 2009-08-25 The United States Of America As Represented By The Director Of The National Security Agency Method of protecting a computer stack
WO2008122746A1 (fr) 2007-04-10 2008-10-16 Cambridge Consultants Limited Appareil de traitement de données
US8209757B1 (en) 2008-03-06 2012-06-26 Symantec Corporation Direct call into system DLL detection system and method
US8117660B2 (en) * 2008-06-19 2012-02-14 Microsoft Corporation Secure control flows by monitoring control transfers
WO2010004243A2 (fr) 2008-07-10 2010-01-14 Cambridge Consultants Limited Traitement des interruptions
US8578483B2 (en) 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8051467B2 (en) 2008-08-26 2011-11-01 Atmel Corporation Secure information processing
US7962729B2 (en) * 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
US8392644B2 (en) * 2010-07-30 2013-03-05 Mips Technologies, Inc. System and method for automatic hardware interrupt handling
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US9633407B2 (en) * 2011-07-29 2017-04-25 Intel Corporation CPU/GPU synchronization mechanism
WO2013101217A1 (fr) 2011-12-30 2013-07-04 Intel Corporation Couche d'abstraction de technologie
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
CA2809516C (fr) * 2013-03-13 2016-11-08 Khalid Nawaf Alharbi Prevention des attaques de surcharge de memoire tampon de pile
KR101761498B1 (ko) 2013-03-15 2017-07-25 인텔 코포레이션 추론을 지원하는 게스트 반환 주소 스택 에뮬레이션을 위한 방법 및 장치
US9239801B2 (en) 2013-06-05 2016-01-19 Intel Corporation Systems and methods for preventing unauthorized stack pivoting
US9015835B2 (en) 2013-06-23 2015-04-21 Intel Corporation Systems and methods for procedure return address verification
FR3013869B1 (fr) * 2013-11-22 2016-01-01 Thales Sa Procede de detection des debordements de pile et processeur pour la mise en oeuvre d'un tel procede
US9703948B2 (en) * 2014-03-28 2017-07-11 Intel Corporation Return-target restrictive return from procedure instructions, processors, methods, and systems
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
US20160179538A1 (en) 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor
US9477453B1 (en) 2015-06-24 2016-10-25 Intel Corporation Technologies for shadow stack manipulation for binary translation systems
US9817642B2 (en) 2015-06-25 2017-11-14 Intel Corporation Apparatus and method for efficient call/return emulation using a dual return stack buffer
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US9965619B2 (en) 2015-07-13 2018-05-08 Intel Corporation Return address overflow buffer
US20170090927A1 (en) 2015-09-30 2017-03-30 Paul Caprioli Control transfer instructions indicating intent to call or return
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US9898351B2 (en) 2015-12-24 2018-02-20 Intel Corporation Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
US10157277B2 (en) 2016-10-01 2018-12-18 Intel Corporation Technologies for object-oriented memory management with extended segmentation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497494A (en) * 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
WO2015044993A1 (fr) * 2013-09-24 2015-04-02 株式会社 エーティーティーコンサルティング Processeur, dispositif de traitement, et procédé de création d'un programme

Also Published As

Publication number Publication date
WO2016209533A1 (fr) 2016-12-29
US11656805B2 (en) 2023-05-23
TWI852619B (zh) 2024-08-11
US20230376252A1 (en) 2023-11-23
EP4099158A1 (fr) 2022-12-07
EP3800546A1 (fr) 2021-04-07
TW202127240A (zh) 2021-07-16
TWI712953B (zh) 2020-12-11
EP3314507A1 (fr) 2018-05-02
EP3314507B1 (fr) 2020-11-25
CN112988624A (zh) 2021-06-18
US20210109684A1 (en) 2021-04-15
CN117873922A (zh) 2024-04-12
US12229453B2 (en) 2025-02-18
EP4325352A2 (fr) 2024-02-21
TWI769595B (zh) 2022-07-01
TW201709048A (zh) 2017-03-01
TW202240383A (zh) 2022-10-16
US20160381050A1 (en) 2016-12-29
EP4325352A3 (fr) 2024-06-19
CN107667372A (zh) 2018-02-06
TW202416122A (zh) 2024-04-16
TWI807877B (zh) 2023-07-01
EP3314507A4 (fr) 2019-04-17
EP3800546B1 (fr) 2022-12-28

Similar Documents

Publication Publication Date Title
US12229453B2 (en) Processors, methods, systems, and instructions to protect shadow stacks
CN108463826B (zh) 用于在环转变期间保护栈的处理器扩展
CN105190572B (zh) 用于防止未经授权的堆栈转移的系统和方法
US11663006B2 (en) Hardware apparatuses and methods to switch shadow stack pointers
CN104969199B (zh) 实施黑名单分页结构指示值的处理器、方法,以及系统
US11656873B2 (en) Shadow stack ISA extensions to support fast return and event delivery (FRED) architecture
CN117178256A (zh) 用于在虚拟化环境中管理不受支持的指令集体系结构(isa)特征的装置和方法
CN116917860A (zh) 灵活返回和事件递送
CN116700789A (zh) 用于在执行期间要求栈切换的软件控制的标志

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant