原文作者:Wang Li , Zhouyang Jia , Shanshan Li , Yuanliang Zhang , Teng Wang , Erci Xu , Ji Wang, Xiangke Liao
原文标题:Challenges and Opportunities: An In-Depth Empirical Study on Configuration Error Injection Testing
原文链接:https://dl.acm.org/doi/abs/10.1145/3460319.3464799
笔记作者:[email protected]
文章小编:[email protected]
该文为发表于ISSTA 2021的Challenges and Opportunities: An In-Depth Empirical Study on Configuration Error Injection Testing。配置错误注入测试(CEIT)可以系统地评估软件可靠性和运行时配置错误的可诊断性。但是,现在还有相当多的测试用例没有被先前的研究工作所研究。这些潜在的错误配置将会成为软件系统中的定时炸弹并导致严重损坏。在本篇论文中,作者团队构建了一个名为CeitInspector的CEIT框架来试验各种CEIT技术。并使用此框架对先前研究工作所研究的案例进行深入研究,以揭示存在缺陷的根本原因,并探索可能的补救措施,最后提出可行建议,以提高现有CEIT技术的有效性和效率。
如下图所示,CeitInspector框架主要有下面几个模块组成:错误配置生成、配置注入、系统运行、日志分析。
对于配置生成模块主要有三种方法:随机法、突变法和基于规则的方法。随机法是最简单的,既生成一个随机字符串作为错误配置;突变法是使用最广泛的错误配置生成方法,其关键思想在于基于配置给定的默认值以及以预定义的变异规则(例如遗漏、大小写更改)生成错误值,以模拟各种类型的人为错误;还可以通过一些规则来生成配置错误,例如如果配置值的基本类型是整数,则根据规则生成字符串、浮点数和越界值作为错误配置,如果配置项是一个地址,则可以根据规则生成一个不存在的文件、访问权限不足的文件或者目录文件。在错误配置生成之后,CeitInspector需要将错误配置进行注入。作者基于Augeas构建了一个通用的配置错误注入器。CeitInspector使用Augeas解析配置文件并将其转换为基于树的中间表示之后通过修改对应的树节点注入生成的配置错误,再将修改后的树转换回配置文件。最后,CeitInspector运行测试用例,记录系统日志并进行分析。
在实验阶段,作者使用CeitInspector框架对多种CEIT方法和流行软件系统进行测试,测试结果如下表所示。
作者将测试结果分为四类:配置错误被自动纠正为有效值;错误配置没有通过测试,但有精确的日志;错误配置没有通过测试;测试框架没有反应。由上表所示,CEIT工具能够分别使用随机、突变和基于规则的方法产生错误配置,每1000次注入分别暴露10、3和8个漏洞。其中,随机生成错误配置是最有效的方法,这表明一些软件的语法检查代码很差,即使是简单的随机值也会引发意外的系统故障。此外,这三种方法每1000次测试平均耗时约21.4小时。因此,使用随机、突变和基于规则的测试效率分别约为0.47、0.14和0.37个漏洞/小时。
针对当前方法无法正确检测出错误配置,主要出于三种原因:
总的来讲,作者使用CeitInspector研究了配置错误注入测试的有效性和效率,以评估软件对配置错误的反应。如测试结果所示,作者在六个成熟的服务器应用程序上试验了三种主要的配置错误生成方法,并针对其有效性和效率进行了比较研究。针对错误配置漏洞,作者也给出了三个改善思路,分别是改善受测系统、改善错误配置生成方法和改善测试用例。
安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com