[发明专利]基于程序切片的软件关联配置错误诊断方法及装置有效
申请号: | 202210096739.1 | 申请日: | 2022-01-26 |
公开(公告)号: | CN114661503B | 公开(公告)日: | 2023-10-27 |
发明(设计)人: | 胡雪;许光全;刘健 | 申请(专利权)人: | 天津大学 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F9/445 |
代理公司: | 北京劲创知识产权代理事务所(普通合伙) 11589 | 代理人: | 王闯 |
地址: | 300354 *** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 程序 切片 软件 关联 配置 错误 诊断 方法 装置 | ||
本发明公开了一种基于程序切片的软件关联配置错误诊断方法及装置。该方法包括:指定软件的源代码中的配置类以及配置项列表,查找所述配置项在所述源代码中对应的配置变量;将配置变量的声明语句作为种子,进行程序切片,找到所述配置变量所影响的程序语句;对所述程序语句进行插桩运行,根据插桩运行的结果定位错误配置项;通过对比各配置项切片的重合度检测各配置项之间的关联度,生成关联配置项列表;通过所述关联配置项列表匹配与所述错误配置项相关联的配置项。可见,本发明基于程序切片通过找出配置项之间的关联关系,从而诊断出涉及该错误的多个关联的配置项,提出准确的建议帮助用户有效解决问题。
技术领域
本发明涉及软件安全领域,特别涉及一种基于程序切片的软件关联配置错误诊断方法、装置、电子设备、计算机可读存储介质。
背景技术
目前,几乎所有的现代系统软件均对用户提供大量可自定义的配置(configuration)项,终端用户可以在不需要重新编译应用程序的情况下,根据自己的需求、结合软件对应的功能特性和硬件环境信息等对应用软件进行深度的定制调整,进而使得计算任务可以顺利完成并输出符合预期的结果。举例而言,配置项可以决定应用程序从哪个路径读取输入文件、让服务器监听哪个端口、亦或是启用软件中的哪些功能组件等等。然而,随着计算机技术和互联网的快速发展,越来越多的系统软件为了提高其灵活性,使用了数量众多的配置参数,例如Apache Hadoop拥有超过400个配置项,而Mozilla Firefox的配置项更是超过了2000个。大量的配置项在提升软件的可定制性的同时,也给软件在实际使用时正确配置带来了更多的困难,软件配置错误问题已给系统运行时的可靠性、可用性和系统性能等带来了巨大挑战。
软件配置错误(misconfiguration)是指:软件源代码和输入都正确无误,但由于配置项中的某个或某些项目设定为了不合理的数值,导致软件无法正常运行(包括无法启动以及中途崩溃等)或最终输出了不符合理论预期的结果。当下,软件配置错误已成为商业互联网服务、工业生产工作等现实场景中威胁软件系统正常运行的重要因素之一。根据Oppenheimer等人的调查研究,现实中的系统运维故障中的50%以上样例是软件配置错误的导致的;而根据Gray等人的研究,在这些系统运维故障中的42%直接导致了系统宕机事故。进一步地,软件配置错误可能会带来灾难性的后果,严重影响应用和服务质量,给企业甚至国家带来经济和声誉等方面的负面影响。
在真实世界的配置错误中,23.4%-61.2%涉及多个配置选项。此外,在有多个选项的情况下,配置选项具有相关性。一个配置选项值的正确性和效果取决于其他配置选项值。换句话说,相关联的配置选项应该放在一起考虑:设置其中一个选项会影响其他选项。多个配置选项之间的依赖关系被认为是软件配置复杂性和易出错性的一个关键来源。系统用户不仅要面对大量选项的配置空间,而且还要了解它们之间的依赖关系。更糟糕的是,配置依赖关系还可能跨越组件边界,一个软件组件中定义的配置选项可能依赖于另一个组件(甚至是另一个项目)中定义的参数。在这些情况下,每个配置选项值单独都是正确的,但是值组合违反了依赖约束。因此,单配置项错误诊断的技术不能有效地处理由配置依赖关系引起的问题。
软件配置错误的诊断与修复已成为软件安全研究方向的一个细分领域,其主要目的是研究如何发现、定位并修复软件错误背后潜藏着的配置错误,进而提高现代软件系统的可靠性和鲁棒性。许多科研机构已经参与到了该领域的研究工作当中,且已经有一些研究成果产出,例如Attariyan等人设计的ConfAid工具,ConfAid针对目标系统采用白盒分析策略,通过细粒度的因果关联分析实现配置错误的诊断。Rabkin提出了ConfAnalyzer,通过静态数据流分析跟踪标签流,如果配置选项的值流到崩溃点,则将其视为根本原因。Zhang针对单个配置项取值错误导致的系统功能异常设计实现了工具ConfDiagnoser。ConfDiagnoser将静态分析、动态分析和统计学习结合在一起,进行配置错误自动诊断。Xu提出了SPEX,SPEX分析源代码来推断配置选项约束,并使用这些约束来诊断软件的错误配置。上述方法都是诊断单配置项错误,对配置依赖关系导致的多配置错误不能有效解决。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学,未经天津大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210096739.1/2.html,转载请声明来源钻瓜专利网。