CN102193556A - 汽车电子器件中断安全隐患检测系统及其检测方法 - Google Patents
汽车电子器件中断安全隐患检测系统及其检测方法 Download PDFInfo
- Publication number
- CN102193556A CN102193556A CN 201110096707 CN201110096707A CN102193556A CN 102193556 A CN102193556 A CN 102193556A CN 201110096707 CN201110096707 CN 201110096707 CN 201110096707 A CN201110096707 A CN 201110096707A CN 102193556 A CN102193556 A CN 102193556A
- Authority
- CN
- China
- Prior art keywords
- code
- safety hazard
- potential safety
- interruption
- model
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种汽车电子器件中断安全隐患检测系统,包括:代码预处理模块,其对汽车电子器件机器码进行代码切片;模型生成模块,其为切片后的代码建立抽象模型;代码验证与分析模块,其检测所述抽象模型是否存在中断安全隐患。本发明还提供汽车电子器件中断安全隐患检测系统的检测方法,从机器码层面上进行错误检测,避免使用编译器编译高级语言可能带来的错误,对机器码切片,截取机器码局部有用的代码,很好地避免模型检查时的状态爆炸问题,并在原有正确性的基础上对汽车操作系统提出更高层次的要求。
Description
技术领域
本发明涉及操作系统软件技术领域,具体涉及一种汽车电子器件中断安全隐患检测系统及其检测方法。
背景技术
由于中断具有很多非确定性特点,导致在处理的过程中常会遇到一系列的问题而难于对其有一个比较好的计算机制。在操作系统中,中断提供了一种快速的基于事件的服务程序处理机制,但同时也给操作系统的运行带来了很多的不确定因素,正是由于这些不确定的因素与不同事件处理程序的处理方法的不同,使得原来确定的操作系统行为变得非常不确定。
中断引发的问题主要有两种:第一种是溢出类问题,无论是堆栈的溢出还是引发的全局变量内容的溢出,都将会使进入非正常的状态之中。第二种是数据操作错误,由于中断程序的特殊调用过程与调用的时间的不确定性,造成了原有的数据操作的事务性特征无法得到比较好的保持,从而产生了数据操作错误。这种错误又可以分为数据误读错误与数据脏读错误。
从这两类安全隐患中,可以分别概括出中断的调用性安全性质与数据操作性安全性质。安全性质主要包括三部分内容:
(1)中断只被允许存在于指定上限的嵌套调用。
在处理中断的过程中,应该允许指定上限的嵌套中断处理,过多的中断处理将如上面描述的那样产生堆栈溢出与其它判断条件与保护机制的失效。此类错误同时可能会产生除中断嵌套层数变量与堆栈指针溢出以外的问题,与中断嵌套变量及堆栈指针有关的其它逻辑判断变量值都有可能会产生错误的结果。
(2)中断程序不可修改被打断任务访问的数据环境。
在中断的处理程序中,不许可操作(修改)被中断的任务的数据环境。例如在被中断程序P中,在中断点后使用了全局变量v1,在中断处理程序INTP中,将不能许可对v1进行写操作。否则将会产生中断数据误读的错误。
(3)中断程序不可访问事务性任务操作的数据环境。
在中断的处理程序中,不许可访问(读取)被中断的事务性任务将操作的数据环境。例如在被中断的事务性任务P中,在中断点后操作(修改)了全局变量v1,在中断处理程序INTP中,将不能许可对v1进行读操作。否则将有可能产生中断数据脏读的错误。
根据以上的安全性质,本发明克服了现有技术存在的缺陷,比如传统测试工具很难做到路径全覆盖,无法对中断错误进行完全检测,本发明提供了一种汽车电子器件中断安全隐患检测系统及其检测方法,具有路径全覆盖、检测自动化的有益效果。
发明内容
本发明提供一种汽车电子器件中断安全隐患检测系统,包括:代码预处理模块,其对器件机器码进行代码切片;模型生成模块,其为切片后的代码建立抽象模型;代码验证与分析模块,其检测抽象模型中是否存在中断安全隐患。
本发明还提供一种汽车电子器件中断安全隐患检测系统的检测方法,包括如下步骤:
步骤一:在代码预处理模块中对机器码进行代码切片;
步骤二:在模型生成模块中,为步骤一所得切片后的代码建立抽象模型;
步骤三:在代码验证与分析模块中,检测抽象模型中是否存在中断安全隐患;若存在中断安全隐患,输出缺陷报告;若不存在中断安全隐患,输出安全报告。
其中,步骤一中对机器码进行代码切片,是指保留机器码中的指令包括:读写指令、跳转指令、函数调用指令和中断开闭指令。
步骤三中的中断安全隐患是指代码中因中断发生导致执行错误的指令。
其中,步骤三中断安全隐患的检测是将自动机模型插入机器码中的可中断点,覆盖所有函数可能执行路径,利用模型检测工具进行检测。
其中,模型检测工具包括SPIN model checker、NuSMV、UPPAAL等。
本发明中为了避免编译器的可能引发的错误,从机器码级别用模型检测的方法保证程序的中断安全性。检测是否存在中断安全隐患需要对中断安全隐患满足的条件进行形式化的性质描述,在形式化的性质描述的过程中可以结合自动机模型,本发明使用时态逻辑进行描述。
本发明克服现有技术存在的缺陷,其有益效果包括:可以从机器码层面上开始进行错误检测,从而避免因编译器可能带来的错误;其次,通过检测系统的中断安全隐患有助于在原有正确性的基础上对汽车操作系统提出更高层次的要求;同时,通过对机器码进行切片并选择性地截取机器码局部有用的代码,可以有效地避免模型检查时的状态爆炸问题。
附图说明
图1是本发明汽车电子器件中断安全隐患检测系统的模块示意图;
图2是本发明汽车电子器件中断安全隐患检测系统的检测方法的工作流程图。
具体实施方式
以下结合附图和实施例进一步详细阐述本发明,但实施例并不是对本发明的限制。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中。
参考图1,是本发明汽车电子器件中断安全隐患检测系统的模块示意图。
本实施例中汽车电子器件中断安全隐患检测系统应用于检测OSEK OS 2.2.3标准的一个操作系统实例。本实施例汽车电子器件中断安全隐患检测系统包括:代码预处理模块1,模型生成模块2,代码验证与分析模块3。其中,代码预处理模块1是对机器码4进行代码切片;模型生成模块2为切片后的代码5建立抽象模型6;代码验证与分析模块3检测抽象模型6中是否存在中断安全隐患。
参考图2,本实施例汽车电子器件中断安全隐患检测系统的检测方法具体步骤如下:
步骤一S1:在代码预处理模块1中对机器码4进行代码切片。
在代码预处理过程中,先将源代码编译为机器码4,并且在机器码4上提取信息,获得全局变量和函数与其内存地址的对照符号表。然后,通过分析函数对应的机器指令,将函数信息保存在数据结构中,这些信息可以包括函数的名字、入口地址、切片后的机器指令、调用的函数、使用的全局变量等。代码切片保留机器码4中影响中断安全性的指令,包括读写指令、跳转指令、函数调用指令和中断开闭指令。保留程序的控制结构,如循环结构,分支结构等,以及将对某个变量的内存地址的读写操作以及对验证函数中断安全性可能造成影响的跳转指令,函数调用指令和中断开闭指令。
步骤二S2:在模型生成模块2中为步骤一S1中切片后的代码5建立抽象模型6。
在模型生成过程中,建立函数路径表,根据函数之间的变量依赖关系为可能存在数据冲突的函数建立抽象模型6。本发明中的抽象模型6就是函数路径表和函数信息表的建立,抽象模型6覆盖代码所有执行路径。
步骤三S3:在代码验证与分析模块3中检测抽象模型6中是否存在中断安全隐患;若存在中断安全隐患,输出缺陷报告,给出缺陷路径;若不存在中断安全隐患,输出安全报告。
中断安全隐患是指代码中因中断发生导致执行不应执行的指令。
在步骤三S3的代码验证与分析过程中,依次在中断函数的抽象模型6中的可中断点插入中断代码(中断代码是指被检查函数本身),对所有函数可能执行路径进行全覆盖,利用模型检测工具,例如:SPIN model checker、NuSMV、UPPAAL。检查函数之间是否存在误读、脏读的安全隐患。如果发现存在这样的安全隐患,通过机器指令与源代码的关系,将可能出现的数据竞争的源代码以文件形式输出。得到缺陷报告后,可根据缺陷报告查出造成中断安全隐患的代码,修补对应的漏洞,从而有助于建立具备中断安全性的系统。
本发明主要检测两种中断安全隐患的情况:第一种是溢出类问题,无论是堆栈的溢出还是引发的全局变量内容的溢出,都将会使进入非正常的状态之中。第二种是数据操作错误,由于中断程序的特殊调用过程与调用的时间的不确定性,造成了原有的数据操作的事务性特征无法得到比较好的保持,从而产生了数据操作错误;这种错误又可以分为数据误读错误与数据脏读错误。
本实施例运用本发明汽车电子器件中断安全隐患检测系统及其检测方法检测出OSEK OS 2.2.3标准操作系统有30余个操作系统中断安全性错误。
综上所述仅为本发明的较佳实施例,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应属于本发明的技术范畴。
Claims (5)
1.一种汽车电子器件中断安全隐患检测系统,其特征在于,包括:
代码预处理模块,其对机器码进行代码切片;
模型生成模块,其为切片后的所述代码建立抽象模型;
代码验证与分析模块,其检测所述抽象模型中是否存在中断安全隐患。
2.如权利要求1所述汽车电子器件中断安全隐患检测系统的检测方法,其特征在于,包括如下步骤:
步骤一:在代码预处理模块中对机器码进行代码切片;
步骤二:在模型生成模块中,为步骤一所得切片后的所述代码建立抽象模型;
步骤三:在代码验证与分析模块中,检测所述抽象模型中是否存在中断安全隐患;若存在中断安全隐患,输出缺陷报告;若不存在中断安全隐患,输出安全报告。
3.如权利要求2所述汽车电子器件中断安全隐患检测系统的检测方法,其特征在于,所述步骤一中对机器码进行代码切片是指保留机器码中的指令包括:读写指令、跳转指令、函数调用指令和中断开闭指令。
4.如权利要求2所述汽车电子器件中断安全隐患检测系统的检测方法,其特征在于,所述步骤三中的中断安全隐患是指代码中因中断发生导致执行错误的指令。
5.如权利要求2所述汽车电子器件中断安全隐患检测系统的检测方法,其特征在于,所述步骤三中所述中断安全隐患的检测是通过将中断代码插入机器码中的可中断点,覆盖所有函数可能执行路径,利用模型检测工具检测中断安全隐患。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100967073A CN102193556B (zh) | 2011-04-18 | 2011-04-18 | 汽车电子器件中断安全隐患检测系统及其检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100967073A CN102193556B (zh) | 2011-04-18 | 2011-04-18 | 汽车电子器件中断安全隐患检测系统及其检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102193556A true CN102193556A (zh) | 2011-09-21 |
CN102193556B CN102193556B (zh) | 2012-10-31 |
Family
ID=44601759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100967073A Expired - Fee Related CN102193556B (zh) | 2011-04-18 | 2011-04-18 | 汽车电子器件中断安全隐患检测系统及其检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102193556B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183552A (zh) * | 2015-09-25 | 2015-12-23 | 东华大学 | 操作系统中断安全隐患定位系统及其应用 |
CN108509336A (zh) * | 2018-03-05 | 2018-09-07 | 华东师范大学 | 一种操作系统规范形式化验证与测试方法 |
CN109240902A (zh) * | 2017-05-27 | 2019-01-18 | 腾讯科技(深圳)有限公司 | 一种获取电子设备的固件代码的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050050534A1 (en) * | 2003-09-02 | 2005-03-03 | Chi-Keung Luk | Methods and apparatus to pre-execute instructions on a single thread |
CN101162491A (zh) * | 2007-08-14 | 2008-04-16 | 电子科技大学 | 基于代码切片的虚拟执行系统与方法 |
US7620946B2 (en) * | 2003-05-05 | 2009-11-17 | Jeffry Thomas Russell | Program slicing for codesign of embedded systems |
CN101588363A (zh) * | 2009-06-18 | 2009-11-25 | 天津大学 | 建立基于程序切片的Web服务安全分析模型的方法 |
-
2011
- 2011-04-18 CN CN2011100967073A patent/CN102193556B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620946B2 (en) * | 2003-05-05 | 2009-11-17 | Jeffry Thomas Russell | Program slicing for codesign of embedded systems |
US20050050534A1 (en) * | 2003-09-02 | 2005-03-03 | Chi-Keung Luk | Methods and apparatus to pre-execute instructions on a single thread |
CN101162491A (zh) * | 2007-08-14 | 2008-04-16 | 电子科技大学 | 基于代码切片的虚拟执行系统与方法 |
CN101588363A (zh) * | 2009-06-18 | 2009-11-25 | 天津大学 | 建立基于程序切片的Web服务安全分析模型的方法 |
Non-Patent Citations (1)
Title |
---|
《计算机应用研究》 20070531 孙继荣等 程序切片技术在软件测试中的应用 第24卷, 第5期 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183552A (zh) * | 2015-09-25 | 2015-12-23 | 东华大学 | 操作系统中断安全隐患定位系统及其应用 |
CN109240902A (zh) * | 2017-05-27 | 2019-01-18 | 腾讯科技(深圳)有限公司 | 一种获取电子设备的固件代码的方法和装置 |
CN109240902B (zh) * | 2017-05-27 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 一种获取电子设备的固件代码的方法和装置 |
CN108509336A (zh) * | 2018-03-05 | 2018-09-07 | 华东师范大学 | 一种操作系统规范形式化验证与测试方法 |
CN108509336B (zh) * | 2018-03-05 | 2021-05-25 | 华东师范大学 | 一种操作系统规范形式化验证与测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102193556B (zh) | 2012-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Schäfer et al. | An empirical evaluation of using large language models for automated unit test generation | |
US8875110B2 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
US8943423B2 (en) | User interface indicators for changed user interface elements | |
CN103257919B (zh) | 脚本程序检查方法和装置 | |
CN109871319A (zh) | 项目代码扫描方法、装置、计算机设备及存储介质 | |
CN104899147A (zh) | 一种面向安全检查的代码静态分析方法 | |
CN100561445C (zh) | 一种根据程序内容自动生成测试数据集的方法和装置 | |
CN102184138A (zh) | 一种软件错误自动重现和定位的方法及系统 | |
CN109710518A (zh) | 脚本审核方法及装置 | |
CN113901745A (zh) | 芯片测试方法、装置、电子设备及计算机可读存储介质 | |
CN102054100A (zh) | 一种基于静态分析的rtl设计错误检测方法和系统 | |
JP3822044B2 (ja) | 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体 | |
CN103914379A (zh) | 故障自动注入与故障检测的方法及其系统 | |
CN102193556B (zh) | 汽车电子器件中断安全隐患检测系统及其检测方法 | |
CN112925524A (zh) | 一种检测驱动程序中不安全直接存储器访问的方法及装置 | |
CN103365772B (zh) | 软件测试自动评价装置以及方法 | |
CN103778062A (zh) | 基于抽象解释的多中断程序数据访问冲突检测方法 | |
CN114579972A (zh) | 嵌入式开发程序的漏洞识别方法及系统 | |
CN102169458A (zh) | 汽车电控部件的软件正确性验证系统及其验证方法 | |
US20120124428A1 (en) | Method and system for testing software on programmable devices | |
CN107291622A (zh) | C25汇编代码静态分析方法 | |
CN115795489A (zh) | 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 | |
CN112559359B (zh) | 一种基于s2ml的安全攸关系统分析与验证方法 | |
CN102043708A (zh) | Erp软件测试系统 | |
CN114579431A (zh) | 一种基于混合分析的除零错误检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121031 Termination date: 20180418 |
|
CF01 | Termination of patent right due to non-payment of annual fee |