论文部分内容阅读
随着软件在生活中的普及,人们对软件可靠性的需求越来越高。驱动程序作为操作系统的重要组成部分,运行于内核态,其可靠性对于操作系统的安全可靠非常关键。研究表明,Linux操作系统缺陷中,驱动程序占一半以上。因此,提高驱动程序的质量,是提高软件质量的重要部分。驱动程序需要调用操作系统内核接口与底层硬件接口,接口调用要求可以规约为有限状态机,如何检测驱动程序对于接口的使用满足接口调用要求,是提高驱动程序可靠性的重要问题。程序分析是提高软件可靠性的一个重要途径,符号执行是一种精确的程序分析技术,因其误报少、可行性好等特点,得到了学术界和工业界的广泛关注。本文针对Linux驱动程序,研究基于符号执行的驱动程序缺陷自动检测方法。本文的主要研究内容包括:(1)驱动程序中存在大量复杂的构造元素,例如指针等。然而符号执行工具对指针等的符号化支持不完善,无法对含有这些元素的程序合理地进行符号执行。为此,论文实现了懒初始化算法,能够在符号执行过程中妥善处理复杂数据类型,有效支持驱动程序的符号执行检测,提高了符号执行技术的可扩展性。(2)提出了基于性质制导符号执行的驱动程序缺陷检测框架,以及多性质制导的符号执行方法,支持针对多个缺陷性质的快速缺陷检测。在LLVM和KLEE的基础上实现了提出的框架和方法。(3)总结了驱动程序的部分缺陷特征规律,结合上述方法在实际的Linux驱动程序上开展了初步实验,实验效果表明了方法和检测框架的有效性和高效性。