论文部分内容阅读
随着信息系统在社会生活各个领域的广泛应用,信息系统的安全性研究已成为信息技术研究中不可或缺的一部分。进一步说,操作系统安全是保障整个信息系统安全的根本所在,而操作系统的安全测试与安全测评则是操作系统安全可靠的必要手段和基本保障。其间,系统调用作为操作系统内核向用户或用户程序提供服务的基本接口,其安全性构成操作系统安全测试的主要内容。本文以Linux 2.6.29.4内核源代码为分析对象,讨论了Linux系统调用实现机制,给出了系统执行从用户态陷入内核态的具体过程及所涉及到的各种源程序文件和函数。同时,将其与Linux 2.4.18内核版本的系统调用陷入机制进行对照和分析研究,以期改进现有的系统调用安全测试自动化原型系统,使其真正实现对相应系统调用内核函数的直接调用,确保测试结果的可信和可靠。Linux系统调用数量众多,仅Linux 2.6.29.4内核就有332个系统调用,所以本文选取了与文件系统密切相关的六个系统调用open、creat、access、faccessat、read、write的内核源码展开具体分析和研究。其中着重以open系统调用为例,详细分析了文件打开的整个执行过程以及其间所调用的函数。文中还给出了creat、access、faccessat、read、write等系统调用实现的基本过程和函数调用关系,以及涵盖上述系统调用的访问检查图和依赖关系分类。众所周知,测试用例的设计对于测试而言至关重要,其关系到测试的工作量和覆盖范围,对于Linux内核安全测试更是如此。本文在Linux 2.6.29.4这个测试环境中启用了强制访问控制机制SELinux,同时结合前面对系统调用访问检查图和依赖关系的分析结果,就冗余测试用例消除的各种方法举例进行了分析说明以及验证,其中所涉及系统调用有access、open、read、write、close、fcntl。最后,对本文所做工作进行了总结,并给出了后续的工作建议。