CN113687968A - 一种适用通用操作系统sil4栈检测方法 - Google Patents
一种适用通用操作系统sil4栈检测方法 Download PDFInfo
- Publication number
- CN113687968A CN113687968A CN202110835650.8A CN202110835650A CN113687968A CN 113687968 A CN113687968 A CN 113687968A CN 202110835650 A CN202110835650 A CN 202110835650A CN 113687968 A CN113687968 A CN 113687968A
- Authority
- CN
- China
- Prior art keywords
- stack
- array
- sil4
- detection method
- operating system
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种适用通用操作系统SIL4栈检测方法,包括如下步骤:步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组以及栈保护区段StackGuard2数组;步骤S3、根据同一个栈数组的起始、结束位置判定运行环境在栈上是使用地址向上生长还是向下生长;步骤S4、按栈数组的大小排序,main函数将安全程序所使用的栈空间写入特定的值并对全栈数组进行内存检测;步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测。栈检测方法通用性强,动态适应各种CPU、操作系统、编译器,从而实现SIL4级栈内存检测。
Description
技术领域
本发明涉及计算机数据结构技术领域,具体的,涉及一种适用通用操作系统SIL4栈检测方法。
背景技术
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,最后一个数据被第一个读出来。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针;一些嵌入式操作系统提供了固定栈空间大小,栈检测的功能,栈溢出作为栈检测的一项重要检测项,栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围;在系统出现异常时,无接口通知SIL4安全程序;对于闭源的操作系统,无法感知其处理是否符合SIL4要求;另外一些操作系统无栈检测功能,在有足够的资源下,可以任意分配随意多的栈空间,然而SIL4安全程序无法感知到栈是否出现越界等异常。
发明内容
针对上述弊端,本发明的目的是提出一种适用通用操作系统SIL4栈检测方法,通过栈只往一个方向生长以及预先分配的事实,动态适应各种CPU、操作系统、编译器,从而实现SIL4级栈内存检测。
为实现上述技术目的,本发明提供的一种技术方案是,一种适用通用操作系统SIL4栈检测方法,包括如下步骤:
步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;
步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组,以及栈保护区段StackGuard2数组;
步骤S3、根据同一个栈数组的起始、结束位置判定运行环境在栈上是使用地址向上生长还是向下生长;同时根据三个栈数组的先后顺序获知对多个栈变量的分配是向上生长还是向下生长;
步骤S4、按栈数组的大小排序,main函数将安全程序所使用的栈空间写入特定的值;并对全栈数组进行符合SIL4标准的内存检测;
步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;
步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测,比较判定其值是否仍然为预先设置的特定值;如否,则判定栈异常,从而进行导向安全处理;如是,则栈异常,不报警。
作为优选,步骤S1还包括:利用全局变量P3记录StackGuard1数组的起始位置以及利用全局变量P4记录StackGuard1数组结束位置。
作为优选,步骤S2还包括:利用全局变量P1记录Stack数组的起始位置以及利用全局变量P2记录Stack数组结束位置,然后返回。
作为优选,步骤S2还包括:利用全局变量P5记录StackGuard2数组起始位置以及利用全局变量P6记录StackGuard2数组结束位置,然后返回。
作为优选,同一个栈数组为Stack数组、StackGuard1数组或者StackGuard2数组三者任一一个。
作为优选,Fsafety所使用的栈与Finit声明的Stack数组为相同的内存空间。
作为优选,按栈数组的大小排序表示为:P1<P2<P3<P4<P5<P6,其中区段[P1,P2]和[P5,P6]为安全程序所使用的栈空间,区段[P3,P4]为栈保护的栈空间。
本发明的有益效果:本发明一种适用通用操作系统SIL4栈检测方法的通用性强,不依赖于安全程序所运行的操作系统,不依赖于目标CPU,也不依赖于所使用的编译器对栈生长方向的分配。SIL4安全程序能够按需调整栈保护的空间大小,进行特定值选择,通过栈检测算法Fcheck对安全程序所使用的栈空间进行检测,通过比较特征值的异同判定异常情况。
附图说明
图1为本发明的一种适用通用操作系统SIL4栈检测方法的流程图。
具体实施方式
为使本发明的目的、技术方案以及优点更加清楚明白,下面结合附图和实施例对本发明作进一步详细说明,应当理解的是,此处所描述的具体实施方式仅是本发明的一种最佳实施例,仅用以解释本发明,并不限定本发明的保护范围,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例:如图1所示,一种适用通用操作系统SIL4栈检测方法的流程图,包括如下步骤;
步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;利用全局变量P3记录StackGuard1数组的起始位置以及利用全局变量P4记录StackGuard1数组结束位置。
步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组以及栈保护区段StackGuard2数组;其中,利用全局变量P1记录Stack数组的起始位置以及利用全局变量P2记录Stack数组结束位置,然后返回;利用全局变量P5记录StackGuard2数组起始位置以及利用全局变量P6记录StackGuard2数组结束位置,然后返回。
步骤S3、根据同一个栈数组(Stack数组、StackGuard1数组或者StackGuard2数组三者任一一个)的起始、结束位置判定运行环境在栈上是使用地址向上生长(内存地址变大)还是向下生长(内存地址变小);同时根据三个栈数组的先后顺序获知运行环境对多个栈变量的分配是向上生长(内存地址变大)还是向下生长(内存地址变小)。
步骤S4、按栈数组的大小排序,表示为:P1<P2<P3<P4<P5<P6,其中区段[P1,P2]和[P5,P6]为安全程序所使用的栈空间,区段[P3,P4]为栈保护的栈空间;main函数将安全程序所使用的栈空间写入特定的值;并对全栈数组进行符合SIL4标准的内存检测。
步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;Fsafety所使用的栈与Finit声明的Stack数组为相同的内存空间。
步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测,比较判定其值是否仍然为预先设置的特定值;如否,则判定栈异常(栈溢出或者被OS损坏),从而进行导向安全处理;如是,则栈异常,不报警。
以上所述之具体实施方式为本发明一种适用通用操作系统SIL4栈检测方法的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明之形状、结构所作的等效变化均在本发明的保护范围内。
Claims (7)
1.一种适用通用操作系统SIL4栈检测方法,其特征在于:包括如下步骤:
步骤S1、安全程序运行时,入口函数main声明栈保护区段StackGuard1数组;
步骤S2、main调用函数Finit;Finit在内部声明整个安全程序最大使用的栈空间Stack数组以及栈保护区段StackGuard2数组;
步骤S3、根据同一个栈数组的起始、结束位置判定运行环境在栈上是使用地址向上生长还是向下生长;同时根据三个栈数组的先后顺序获知运行环境对多个栈变量的分配是向上生长还是向下生长;
步骤S4、按栈数组的大小排序,main函数将安全程序所使用的栈空间写入特定的值;并对全栈数组进行符合SIL4标准的内存检测;
步骤S5、检测结束后,周期调用安全业务程序Fsafety以及栈检测算法Fcheck;
步骤S6、栈检测算法Fcheck对安全程序所使用的栈空间进行检测,比较判定其值是否仍然为预先设置的特定值;如否,则判定栈异常,从而进行导向安全处理;如是,则栈异常,不报警。
2.根据权利要求1所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
步骤S1还包括:利用全局变量P3记录StackGuard1数组的起始位置以及利用全局变量P4记录StackGuard1数组结束位置。
3.根据权利要求1或2所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
步骤S2还包括:利用全局变量P1记录Stack数组的起始位置以及利用全局变量P2记录Stack数组结束位置,然后返回。
4.根据权利要求3所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
步骤S2还包括:利用全局变量P5记录StackGuard2数组起始位置以及利用全局变量P6记录StackGuard2数组结束位置,然后返回。
5.根据权利要求或1或2所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
同一个栈数组为Stack数组、StackGuard1数组或者StackGuard2数组三者任一一个。
6.根据权利要求1所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
Fsafety所使用的栈与Finit声明的Stack数组为相同的内存空间。
7.根据权利要求4所述的一种适用通用操作系统SIL4栈检测方法,其特征在于:
按栈数组的大小排序表示为:P1<P2<P3<P4<P5<P6,其中区段[P1,P2]和[P5,P6]为安全程序所使用的栈空间,区段[P3,P4]为栈保护的栈空间。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110835650.8A CN113687968B (zh) | 2021-07-23 | 2021-07-23 | 一种适用通用操作系统sil4栈检测方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110835650.8A CN113687968B (zh) | 2021-07-23 | 2021-07-23 | 一种适用通用操作系统sil4栈检测方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN113687968A true CN113687968A (zh) | 2021-11-23 |
| CN113687968B CN113687968B (zh) | 2024-11-26 |
Family
ID=78577750
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202110835650.8A Active CN113687968B (zh) | 2021-07-23 | 2021-07-23 | 一种适用通用操作系统sil4栈检测方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN113687968B (zh) |
Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6578094B1 (en) * | 2000-03-02 | 2003-06-10 | International Business Machines Corporation | Method for preventing buffer overflow attacks |
| JP2010198147A (ja) * | 2009-02-24 | 2010-09-09 | Mitsubishi Heavy Ind Ltd | コンピュータメモリにおけるスタック領域のデータの保護方法 |
| CN103294517A (zh) * | 2012-02-22 | 2013-09-11 | 国际商业机器公司 | 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置 |
| CN106547606A (zh) * | 2016-10-25 | 2017-03-29 | 交控科技股份有限公司 | 堆栈自检方法及装置 |
| CN108268770A (zh) * | 2018-02-05 | 2018-07-10 | 烽火通信科技股份有限公司 | 一种栈溢出检测系统及方法 |
| CN109214169A (zh) * | 2017-06-30 | 2019-01-15 | 芜湖美的厨卫电器制造有限公司 | 堆栈溢出检测方法、装置及家用电器 |
| CN112286684A (zh) * | 2020-10-29 | 2021-01-29 | 苏州浪潮智能科技有限公司 | 一种内存使用量控制方法、装置、设备及介质 |
| CN112631510A (zh) * | 2020-12-02 | 2021-04-09 | 海光信息技术股份有限公司 | 堆栈区域扩充的方法、装置及硬件平台 |
-
2021
- 2021-07-23 CN CN202110835650.8A patent/CN113687968B/zh active Active
Patent Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6578094B1 (en) * | 2000-03-02 | 2003-06-10 | International Business Machines Corporation | Method for preventing buffer overflow attacks |
| JP2010198147A (ja) * | 2009-02-24 | 2010-09-09 | Mitsubishi Heavy Ind Ltd | コンピュータメモリにおけるスタック領域のデータの保護方法 |
| CN103294517A (zh) * | 2012-02-22 | 2013-09-11 | 国际商业机器公司 | 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置 |
| CN106547606A (zh) * | 2016-10-25 | 2017-03-29 | 交控科技股份有限公司 | 堆栈自检方法及装置 |
| CN109214169A (zh) * | 2017-06-30 | 2019-01-15 | 芜湖美的厨卫电器制造有限公司 | 堆栈溢出检测方法、装置及家用电器 |
| CN108268770A (zh) * | 2018-02-05 | 2018-07-10 | 烽火通信科技股份有限公司 | 一种栈溢出检测系统及方法 |
| CN112286684A (zh) * | 2020-10-29 | 2021-01-29 | 苏州浪潮智能科技有限公司 | 一种内存使用量控制方法、装置、设备及介质 |
| CN112631510A (zh) * | 2020-12-02 | 2021-04-09 | 海光信息技术股份有限公司 | 堆栈区域扩充的方法、装置及硬件平台 |
Non-Patent Citations (2)
| Title |
|---|
| GANG CHEN ET AL: "SafeStack: Automatically Patching Stack-based Buffer Overflow Vulnerabilities", 《IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING》, vol. 10, no. 6, 30 November 2013 (2013-11-30), pages 1 - 14, XP011535818, DOI: 10.1109/TDSC.2013.25 * |
| 刘勇 等: "一种简便的栈式片上内存动态管理方法", 《计算机工程与科学》, vol. 32, no. 9, 30 September 2010 (2010-09-30), pages 111 - 114 * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN113687968B (zh) | 2024-11-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8001273B2 (en) | Parallel processing of input data to locate landmarks for chunks | |
| US7167881B2 (en) | Method for heap memory management and computer system using the same method | |
| CN109271343B (zh) | 一种应用于键值存储系统中的数据合并方法和装置 | |
| US20160034262A1 (en) | Transmission point pattern extraction from executable code in message passing environments | |
| CN103839007B (zh) | 一种检测异常线程的方法及系统 | |
| US20110145536A1 (en) | Memory leak detection during dynamic memory allocation | |
| US11144227B2 (en) | Content-based post-process data deduplication | |
| CN107025230B (zh) | 网络爬虫的处理方法及装置 | |
| CN103150260A (zh) | 重复数据删除方法和装置 | |
| CN104102695A (zh) | 智能设备启动过程的数据处理方法及智能设备 | |
| US8914381B2 (en) | Correlation filter | |
| CN108710475B (zh) | 增强固态硬盘低温鲁棒性的方法、装置及计算机设备 | |
| CN117725035A (zh) | 一种针对lsm树的文件合并方法及相关设备 | |
| CN107193498B (zh) | 一种对数据进行去重复处理的方法及装置 | |
| EP0604310B1 (fr) | Procédé de gestion d'une mémoire tampon, et système informatique l'incorporant | |
| CN113687968A (zh) | 一种适用通用操作系统sil4栈检测方法 | |
| WO2024078122A1 (zh) | 数据库表扫描的方法、装置以及设备 | |
| US11789899B2 (en) | High-performance data lake system and data storage method | |
| KR20170131374A (ko) | 해제후 사용 메모리 손상 버그들의 근본 원인 식별 기술들 | |
| CN120144594B (zh) | 基于计算存储设备的键值数据库近存储计算系统 | |
| CN108520178B (zh) | 一种基于CFSFDP聚类的Android平台入侵检测方法 | |
| EP3001312A1 (en) | Method, device and computer program product for detecting data dependencies within a program | |
| CN115469796A (zh) | 数据存储方法、装置、设备及存储介质 | |
| US8381234B2 (en) | System and method for managing applications having logical pointer and flag | |
| WO2012081165A1 (ja) | データベース管理装置及びデータベース管理方法 |
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 |