RU2015150173A - Системы и способы проверки адреса возврата процедуры - Google Patents

Системы и способы проверки адреса возврата процедуры Download PDF

Info

Publication number
RU2015150173A
RU2015150173A RU2015150173A RU2015150173A RU2015150173A RU 2015150173 A RU2015150173 A RU 2015150173A RU 2015150173 A RU2015150173 A RU 2015150173A RU 2015150173 A RU2015150173 A RU 2015150173A RU 2015150173 A RU2015150173 A RU 2015150173A
Authority
RU
Russia
Prior art keywords
return address
buffer
processor system
return
pointer
Prior art date
Application number
RU2015150173A
Other languages
English (en)
Other versions
RU2628163C2 (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 RU2015150173A publication Critical patent/RU2015150173A/ru
Application granted granted Critical
Publication of RU2628163C2 publication Critical patent/RU2628163C2/ru

Links

Classifications

    • 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
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection 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
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Claims (39)

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

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/924,591 2013-06-23
US13/924,591 US9015835B2 (en) 2013-06-23 2013-06-23 Systems and methods for procedure return address verification
PCT/US2014/040223 WO2014209541A1 (en) 2013-06-23 2014-05-30 Systems and methods for procedure return address verification

Publications (2)

Publication Number Publication Date
RU2015150173A true RU2015150173A (ru) 2017-05-26
RU2628163C2 RU2628163C2 (ru) 2017-08-15

Family

ID=52112154

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015150173A RU2628163C2 (ru) 2013-06-23 2014-05-30 Системы и способы проверки адреса возврата процедуры

Country Status (6)

Country Link
US (1) US9015835B2 (ru)
EP (1) EP3014461B1 (ru)
CN (1) CN105264513B (ru)
BR (1) BR112015029289B1 (ru)
RU (1) RU2628163C2 (ru)
WO (1) WO2014209541A1 (ru)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9589133B2 (en) * 2014-08-08 2017-03-07 International Business Machines Corporation Preventing return-oriented programming exploits
US9767272B2 (en) * 2014-10-20 2017-09-19 Intel Corporation Attack Protection for valid gadget control transfers
EP3196794B1 (en) * 2014-11-26 2021-09-29 Yulong Computer Telecommunication Scientific (Shenzhen) Co., Ltd. Multimedia file processing method, multimedia file processing apparatus and terminal
US9646154B2 (en) * 2014-12-12 2017-05-09 Microsoft Technology Licensing, Llc Return oriented programming (ROP) attack protection
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
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
US10223527B2 (en) 2016-09-20 2019-03-05 International Business Machines Corporation Protecting computer code against ROP attacks
US10157268B2 (en) 2016-09-27 2018-12-18 Microsoft Technology Licensing, Llc Return flow guard using control stack identified by processor register
CN107608905B (zh) * 2017-09-11 2020-05-12 杭州中天微系统有限公司 擦写Flash数据的方法及装置
US10740452B2 (en) * 2017-09-15 2020-08-11 Arm Limited Call path dependent authentication
RU2666458C1 (ru) * 2017-11-27 2018-09-07 Акционерное общество "МЦСТ" Микропроцессор
US10606771B2 (en) * 2018-01-22 2020-03-31 Infineon Technologies Ag Real time stack protection
US10909046B2 (en) * 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
US11314855B2 (en) * 2018-12-05 2022-04-26 Webroot Inc. Detecting stack pivots using stack artifact verification
RU2724790C1 (ru) * 2018-12-28 2020-06-25 Акционерное общество "Лаборатория Касперского" Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
CN110457744B (zh) * 2019-06-27 2023-01-20 山东方寸微电子科技有限公司 一种sd/sdio设备仿真模型框架及其设计方法
CN112100686B (zh) * 2020-08-28 2022-04-08 浙江大学 一种基于arm指针验证的内核代码指针完整性保护方法
CN112579176B (zh) * 2020-12-17 2023-03-28 成都海光微电子技术有限公司 记录地址历史的装置和方法
CN115913683B (zh) * 2022-11-07 2024-04-30 中国联合网络通信集团有限公司 风险访问记录生成方法、装置、设备及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
US5964868A (en) * 1996-05-15 1999-10-12 Intel Corporation Method and apparatus for implementing a speculative return stack buffer
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
DE19701166A1 (de) * 1997-01-15 1998-07-23 Siemens Ag Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
US7086088B2 (en) 2002-05-15 2006-08-01 Nokia, Inc. Preventing stack buffer overflow attacks
JP3856737B2 (ja) * 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
US20040049666A1 (en) 2002-09-11 2004-03-11 Annavaram Murali M. Method and apparatus for variable pop hardware return address stack
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
US7287283B1 (en) * 2003-09-25 2007-10-23 Symantec Corporation Return-to-LIBC attack blocking system and method
US20050138263A1 (en) * 2003-12-23 2005-06-23 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US20080148399A1 (en) 2006-10-18 2008-06-19 Microsoft Corporation Protection against stack buffer overrun exploitation
CN101241464B (zh) * 2007-02-05 2010-08-18 中兴通讯股份有限公司 一种检测堆栈帧破坏的方法
JP2008299795A (ja) * 2007-06-04 2008-12-11 Nec Electronics Corp 分岐予測制御装置及びその方法

Also Published As

Publication number Publication date
EP3014461A1 (en) 2016-05-04
RU2628163C2 (ru) 2017-08-15
WO2014209541A1 (en) 2014-12-31
BR112015029289A2 (pt) 2017-07-25
CN105264513B (zh) 2018-01-23
EP3014461B1 (en) 2021-04-07
EP3014461A4 (en) 2017-03-01
BR112015029289B1 (pt) 2022-01-11
US9015835B2 (en) 2015-04-21
CN105264513A (zh) 2016-01-20
US20140380468A1 (en) 2014-12-25

Similar Documents

Publication Publication Date Title
RU2015150173A (ru) Системы и способы проверки адреса возврата процедуры
US9530004B2 (en) Secure boot method, semiconductor device and recording medium
JP2019535087A5 (ru)
US9367328B2 (en) Out-of-band host OS boot sequence verification
CN106062708B (zh) 在具有地址空间布局随机化的系统中的二进制转化重用
JP2015507310A5 (ru)
JP2016535373A5 (ru)
MX2017007094A (es) Competencia del conductor durante traspaso autonomo.
BR112017027915A2 (pt) método e aparelho de processamento de dados e dispositivo flash
RU2018136581A (ru) Устройство обработки информации, способ для его управления и носитель хранения данных
RU2017126201A (ru) Способы для понимания неполного запроса на естественном языке
RU2015147646A (ru) Системы и способы предотвращения несанкционированного перемещения стека
RU2014133160A (ru) Генерирование и кэширование кода программного обеспечения
JP2015534184A5 (ja) コンピューティングデバイス、方法、プログラム、および機械可読ストレージ媒体
IN2014CN04600A (ru)
WO2007130932A3 (en) Apparatus and method for booting a computing device from a nand memory device
RU2015134169A (ru) Определение профиля пути, используя комбинацию аппаратных и программных средств
RU2015134172A (ru) Общая распаковка приложений для обнаружения вредоносных программ
EP2587362A3 (en) Systems and methods for obtaining and using nonvolatile memory health information
CN110457236A (zh) 存储系统以及对存储系统执行和验证写保护的方法
JP2015515694A5 (ru)
RU2014118856A (ru) Определение длины группы символьных данных, содержащей символ окончания
WO2013016567A3 (en) System and method for virtual partition monitoring
RU2014150416A (ru) Система и способ определения уклона дороги
JP2016515265A5 (ru)

Legal Events

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

Effective date: 20190531