自动化识别安全检查及其在语义错误检测中的应用
1 引言与背景
操作系统内核不仅处理来自用户空间程序和底层硬件的输入,还负责管理资源并执行复杂的操作,这些操作通常容易出错。为了确保安全性,操作系统内核执行大量的条件语句(如if和switch语句)来验证系统状态。当条件语句用于捕获错误时,它就变成了安全检查。安全检查在揭示关键语义方面非常有信息价值,可以帮助检测操作系统内核中的关键语义错误,如空指针解引用、缺失错误处理和双重获取等。
2 研究动机与目标
识别安全检查是一项挑战,因为缺乏明确的标准以及安全检查的多样性。本文提出了一种主要自动化的方案,用于识别操作系统内核中的安全检查。该方案结合了多种技术,例如识别自定义错误代码和构建标记有FH原语的控制流图。基于识别出的安全检查,我们开发了多个分析器,这些分析器能够检测操作系统内核中三类常见但关键的语义错误:空指针解引用、缺失错误处理和双重获取。
3 相关工作综述
3.1 历史背景
安全检查和语义错误检测领域有着悠久的历史。早期的研究主要集中在静态分析和动态分析工具的开发上,以检测和修复各种类型的漏洞。随着操作系统内核复杂度的增加,传统的分析方法逐渐显现出局限性,特别是在大规模系统中的应用。
3.2 现有方法和技术
目前,已有一些工具和方法用于识别安全检查和检测语义错误。以下是几种典型的方法和技术:
- 静态分析工具 :如EIO和Rubio-González等人提出的静态分析技术,用于检测Linux文件和存储系统中不正确的错误代码传播。这些工具通过静态分析