software-strategy-book/Ch2-8-Quality&Security.tex

170 lines
35 KiB
TeX
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

软件学科是一门工程技术型学科,质量自从软件诞生之日起就是被关注的重点。经典的软件质量核心价值观强调“绝对正确”,涵盖了正确性、易用性、高效性、可靠性、鲁棒性、(易)理解性、维护性、复用性、移植性、测试性等一系列属性,强调在客观证明基础之上形成对软件质量的客观认识。
在“软件定义一切”的时代,一方面人机物融合应用场景使得软件的使能空间被进一步大幅度扩展,导致软件系统的规模和复杂性进一步增大,软件开发和演化的成本进一步上升;另一方面动态开放的运行环境使得安全性成为十分重要的质量属性,专门针对性的保障措施成为迫切需求;进一步,由于软件日益成为实现应用价值的核心载体,各类利益相关者的价值实现被纳入软件质量属性的范围。由于受到可投入成本的限制,人们越来越清楚地认识到在客观证明基础之上形成对软件质量的客观认识是现实达不到的理想目标,因而软件质量的核心价值观转变为强调“相对可信”,即在客观证据(包括部分客观证明)的基础上形成对软件质量的主观判断。
在建立价值观的基础上要进一步建立各类软件质量保障措施,也即围绕各类软件质量关注点提供解决问题的方法和技术。从系统观与生态观的角度看,软件质量的考虑涉及更宽广的范畴。例如,从系统工程的角度看,如何在经济可行条件约束下通过综合集成的方法,用可担负质量的部件实现高质量的系统。又如,如何认识在软件生态系统中质量的依赖与传播规律;考虑到软件生态中各类利益相关者的价值差异和冲突,软件及其服务的质量如何取舍权衡等等。以上内容相关的质量保障措施值得进一步研究,但由于篇幅有限,本章主要关注以下更加迫切、更具挑战性的软件质量与安全保障问题。
随着软件质量的核心价值观从“绝对正确”转变为“相对可信”,可信软件的度量与评估成为软件质量保障的基础性挑战问题。随着人机物融合程度的加深,实时混成、云端融合、复杂异构、动态聚合、智能适应等非经典需求与应用场景层出不穷,软件系统设计、实现和运行过程中需要采用更具针对性的质量保障措施。大规模复杂系统的安全保障变得更重要但又更困难,迫切需要新的技术突破;确保物联网软件安全上升到了国家安全高度,亟需系统深入的研究工作。特别地,数据驱动的智能软件日益成为一类重要的软件形态,不同于传统软件,这类软件基于概率化的归纳推理来实现智能行为,对各类不确定性的驾驭是其内在的要求,如何有效评估和保障这类智能化软件系统与服务的质量也是亟待研究的问题。
\section{重大挑战问题}
软件质量与安全保障面临的重大挑战问题主要集中以下几个方面:一是在人工智能时代,数据驱动的智能软件系统因为依赖于外部数据、内置模型等鲜明的新特性,如何才能有效保障其质量;二是可信增强,人机物融合场景下的规模化、定义化的软件系统,如何才能将针对传统静态、封闭、开发阶段的可信度量、评估和增强技术,支持动态、开放、演化的软件;三是软件与系统安全,现阶段遇到的挑战主要在于如何针对大规模复杂软件系统和无处不在的物联网软件,有效检测安全缺陷或漏洞,并通过构建准确、高效的缺陷修复技术及漏洞防御机制保障安全。
\subsection{数据驱动的智能软件系统质量保障}
越来越多的软件系统采用人工智能技术基于大规模数据分析进行计算、推理及决策,即综合利用统计分析算法、数据处理、并行计算等技术,从海量、多态的数据中,挖掘知识、实现数据价值的最大化。随着数据驱动的智能软件系统越来越广泛地应用在工业生产、社会生活、金融经济、行政管理的方方面面,其可靠性、鲁棒性、安全性等问题如不能有效地加以防范,将造成重大损失甚至灾难性后果。与传统软件相比,数据驱动的智能软件系统在高度复杂的数据依赖、软件行为不确定性、计算结果鲁棒性方面,对质量保证研究提出了新的挑战。
(1) 数据和模型质量成为瓶颈。数据驱动的智能软件系统中,往往以数据为核心,围绕数据的处理、分析、挖掘、学习等各种任务设计算法,被称为“面向数据编程”的模式。因此,与传统软件侧重“逻辑正确”不同,数据和模型的质量是数据驱动的智能软件系统可信性的基础和关键。一方面,数据的质量难以保证,噪音会严重干扰模型的有效性;另一方面,鉴于认知系统和认知过程的复杂性,模型有可能不完整、不精确、模型假设存在偏差,算法应具备一定的鲁棒性,不受模型中噪音的干扰,给出可信的决策结果,在数据分布特征等方面,训练数据集与实际应用或是预期的数据集可能存在不一致性,即数据集偏差、歧视、或是样本迁移问题,直接影响模型的可靠性。数据和模型的错误和失效,将造成智能算法判断和决策错误、软件失效。
(2) 数据依赖严重且依赖关系复杂、多变,软件行为难以预测。数据驱动的智能软件系统数据、模型之间存在着错综复杂的依赖关系,这些依赖关系可能是隐形的、间接的、动态多变的,数据、模型依赖及其与代码之间的相互关联难以分析和维护,错误难以定位和隔离。相比于代码分析,数据、模型和代码之间依赖和追踪关系的研究还非常有限,尚缺乏有效的技术和工具。由于程序逻辑高度依赖于数据,算法对数据、模型的变化敏感,基于概率分析和动态学习的决策过程,使得软件行为具有很大的不确定性。
(3) 数据驱动智能软件系统的异常监控和容错。运行在安全关键场景下的数据驱动的智能软件系统一旦出现质量问题,将会导致严重后果,例如,无人驾驶汽车的识别错误时将会导致事故。如何通过有效的手段,监控系统运行时的数据和行为,及时预判系统行为异常,以便采取有效措施,保障系统能够正常运行。进而,如何通过相关容错手段,确保数据驱动的智能软件系统在运行时出现故障的情况下,保障系统的行为符合预期。
\subsection{人机物融合场景下的软件系统可信增强}
与传统系统不同,人机物融合场景下的软件系统将计算部件与物理环境进行一体化整合,将大量独立的异构设备(及其数据)进行智能化的连接,并针对当前系统、场景等的实时变化根据任务需求对计算逻辑,乃至系统架构进行自动调整与配置。这样,计算设备可以更精确的获取外界信息并做出针对性、智能化的实时反映,从而提高计算的性能与质量,给出及时、精确并且安全可靠的服务,实现物理世界与信息系统的整合统一[20]。显然,列车、电网、航天等典型安全攸关系统均具有鲜明的人机物融合特质。如何对相关系统的可信性进行保障对相关系统的正确运行具有重要意义。然而,在人机物融合的场景下,相关异构、组合、动态等特性也给系统行为可信保障带来了新的挑战与需求。
(1) 人机物融合场景下组件间将进行频繁的通信、合作与协同,去完成复杂的任务。因此,相关系统是一个典型的组合系统。长期以来,对大规模组合系统进行分析、测试、验证一直是相关领域难点所在。此外,由于在人机物融合场景下不确定性、概率性行为、实时连续行为越来越常见。如何在建模阶段对随机、不确定、连续行为进行描述,并在分析中对相关行为进行研究,也是对相关复杂不确定系统进行可信增强的一个重要挑战。
(2) 相较于一般静态可预测系统,人机物融合场景下系统行为更加强调于实时捕获、采集环境或者其他协作成员的运行时参数,从而进行自身策略,乃至组件间拓扑结构的智能化调整。在开放环境下,相关外界参数取值随时间变化,难以准确离线刻画。因此,从传统的静态测试、分析、验证等角度出发,难以遍历枚举相关开放动态行为中可能出现的所有场景,无法给出完整状态空间描述与安全保障。在此情况下,如何从运行时监控角度应对开放环境带来的连续动态行为是相关领域重要关注问题。
(3) 从系统观来认识人机物融合系统,我们会发现在人机物融合场景下,相关系统的多组件行为呈现出典型的分布式、异构式特征。在组件内部行为难以描述,组件间相互规格和工作方式差异巨大,难以整体把控的情况下,如何从体系结构角度对系统可信增强进行考虑,设计面向容错的新型协同设计方式及异构系统体系结构[31],为相关软件设计提出了新的挑战。
\subsection{大规模复杂系统安全缺陷检测与保障}
现代软件系统因需求的快速迭代而增量构建、经过频繁重构和演化、规模庞大、复杂度高,都是典型的大规模复杂系统,在企业应用、城市交通、航空航天、智能电网、医疗、指挥控制等重要领域已经成为了不可或缺的一部分,但其实现中存在漏洞或恶意代码等安全缺陷,是导致大规模复杂系统安全性问题的主要根源,而要想保障其安全,需要即时检测并排除安全缺陷,但随着软件的规模和复杂性的不断增大,现有软件安全保障技术与工具的有效性和可扩展性受到了严重制约,软件安全缺陷检测和排除以人为中心、侧重经验的实践现状尚未改变,尚未能形成自动化、客观化的解决方案。综上所述,软件安全保障所面临的新挑战主要包括:
(1) 安全缺陷统一建模。安全缺陷中,漏洞属于实现中存在遗漏,而恶意代码属于多余的实现,经过几十年的发展,已经公开了大量的安全缺陷,软件安全缺陷具有程序设计语言依赖、系统依赖等特征,有时还依赖于特定的硬件平台与体系结构,安全缺陷形态、机理各异。针对特定的安全缺陷,研究相应的检测方法进行精准制约化检测,虽在特定场景下可行,但已不能满足实际的安全需求。面临的挑战主要在于如何统一表达安全缺陷的语法、语义特征、触发规则、行为特征等问题,使得能够通过相关检测算法高效、精准识别安全缺陷;在此基础上,解决安全缺陷检测方法的平台化、引擎化、定制化,以便检测已有的重要安全缺陷,并具备扩展能力,检测新的安全缺陷。
(2) 大规模复杂系统安全缺陷检测方法的效率和资源有效协同。根据已公开的安全缺陷特征通过静态分析、测试和验证等方法检测潜在安全缺陷是目前被普遍采用的技术。但随着软件系统规模越来越大、系统功能日趋复杂公开安全缺陷的数量也急剧上升安全缺陷检测方法的精准性和规模化能力是难点问题。面临的挑战主要包括1需要平衡在处理大规模程序时在精度和可扩展性之间取舍。高精度的检测方法需要更多的资源开销并且受到程序规模的制约而为了适应大规模程序的安全缺陷检测采用保守的策略会导致大量的误报且需要人工进一步确认从而降低了检测方法的可用性 2需要平衡协同计算资源的消耗与检测效率。安全缺陷检测方法可以提升精度但增加复杂度且需要更高的计算资源可以利用大数据处理、硬件加速、并行化等技术优化检测算法依据特定的规则将大规模代码进行切分将检测任务并行化处理、并将其分配到不同的计算资源上完成检测工作。
(3) 安全缺陷检测过程中大规模状态空间的充分探索。在安全缺陷检测过程需要尽快探索到目标程序的状态空间以检测潜在的安全缺陷由于复杂软件系统的程序状态空间十分庞大如何有效地探索程序的状态空间是需要解决的关键问题具体包括以下几个方面1程序分支和循环结构的深度覆盖通过探索程序状态空间过程中历史覆盖、缺陷检测、冗余等信息有效地制导探索过程尽早覆盖关键的程序状态空间2多元信息制导的模糊测试输入生成利用程序结构、安全缺陷特征、执行结果反馈等信息有效地制导模糊测试使其能够产生覆盖多样性目标的输入空间从而快速覆盖程序状态空间到达能够触发安全缺陷的程序行为路径。
(4) 历史漏洞机理和安全专家经验难以复用。在现有安全缺陷检测的分析和测试过程中多个环节存在不确定性需要人工决策而机器学习、深度学习等人工智能技术。这些专家经验以及历史漏洞的机理分析对后续分析能够起到很大作用。但遗憾的是这些经验在现阶段难以复用。另一方面在文本、图像、语音等信息的处理方面已经具备人的智能而实现自主决策。因此如何在安全缺陷检测和预警的各个环节中引入智能化技术是现阶段所面临的重要挑战具体包括以下两个方面1安全缺陷检测历史信息的智能化将安全缺陷检测历史信息及其统计特征知识化以便在安全缺陷检测过程中使用机器学习方法进行智能化预测如何将深度学习技术应用到安全缺陷检测样本代码相似度映射中以便实现同源安全缺陷检测和挖掘的智能化应用到输入域、程序结构的映射中实现模糊测试中输入生成的智能化2安全专家经验的知识化和智能化利用利用安全缺陷检测过程中的安全专家经验并抽象其为安全缺陷检测的启发式规则以便在安全缺陷检测过程中根据自动搜索经验知识空间实现安全缺陷检测的智能化。
(5) 面向安全保障的缺陷自动修复与验证。及时修复软件中存在的安全缺陷是保障软件安全的主要手段先阶段主要依靠人工修复软件安全缺陷需要花费大量的时间精力阅读理解程序代码、定位安全缺陷并修复非常耗时耗力。面临的挑战主要在于1如何针对安全缺陷实现自动修复。基于遗传算法、程序搜索、程序合成等手段的软件缺陷的自动修复方法面临在实际系统中应用的可扩展性、可用性等方面的挑战。2如何自动验证修复。目前存在一些修复方法在某些实验途径上可以证实有效性但缺少理论基础无法保障其完备性需要有手段保证安全缺陷修复措施符合预期。
\subsection{物联网软件安全保障}
物联网是移动互联网、云计算、大数据技术和人工智能等新一代信息技术,在人类社会的具体应用领域中,通过人机物融合实现计算、信息、通讯、控制等任务的一体化的产物。物联网软件是其核心使能组成部分,也是软件产业的一个新兴领域。物联网高速发展的同时,也带来新的问题,特别是物理设备实现移动互联后,导致所有物联网终端设备直接暴露在互联网上、处于不安全状态,使得设备自身安全、其拥有和传输的数据的机密性、完整性和可获得性,都面临安全挑战。任一物联网终端软件一旦遭受攻击,将会导致软件崩溃、设备失效、威胁用户隐私、冲击关键信息基础设施等安全事故,对整个物联网系统造成严重的破坏性。但现阶段,全面保障物联网软件与系统安全,需要检测物联网软件的所有潜在安全薄弱环节,实施有针对性的保障措施。但由于物联网软件的复杂性、异构性、人机物融合等特性,仍然需要重点解决如下重大挑战问题:
(1) 面向复杂异构物联网终端控制软件的安全缺陷检测。在复杂物联网系统中,计算、通信和控制设备由于其各自所执行的任务不同,往往由完全不同的软硬件构成,同时不同设备间的相互协作关系也由于系统的庞大而变得十分复杂,有时还可能存在动态变化,这导致对复杂物联网系统中异构的终端设备控制软件进行安全性检测变得异常困难。如何改进现有的静态分析与动态测试技术以适应物联网软件依赖的芯片、硬件外设、操作系统、指令集、外部库、交互接口、外部输入等异构性,是面向复杂异构物联网终端软件进行安全缺陷检测亟需解决的关键问题。
(2) 面向完整物联网软件系统的模糊测试。物联网边界模糊、设备异构,物联网软件实现了控制、计算与通信的集成,使其在处理能力不断强大的同时,内部结构也变得愈加庞杂且与外部世界的交互变得愈加频繁,而现有的模糊测试方法主要针对物联网软件系统自身故障进行安全检测,面临的挑战在于如何针对物联网系统与环境,探索使用基于人工智能技术、深度学习方法,构建智能化模糊测试方法,将物联网状态空间中搜索安全缺陷的问题转化为目标制导模糊测试与优化问题。
(3) 面向动态安全检测的物联网软件仿真与虚拟化技术。现有物联网软件测试需要互联网环境支撑、动态执行设备并依据获取的运行时反馈信息进行分析使得运行时安全检测面临驱动设备运行困难、捕获设备反馈困难、识别安全缺陷困难等问题具体包括1物联网软件仿真技术。由于物联网软件依赖的终端硬件、体系架构、指令集、部署配置的多样性如何在支持相应固件体系结构、指令集的模拟器的基础上构建通用仿真执行支撑环境如何针对基于特定外设基于适配接口构建物理设备运行驱动环境从而实现能对典型设备进行运行驱动的支撑如何利用通用仿真环境和物理环境的支撑捕获运行时的物理设备的状态、仿真环境下覆盖等反馈信息便于安全缺陷检测过程。 2物联网系统环境建模与虚拟化技术物联网软件需要通过外设、互联网接口与外界交互如何基于各类网络协议对多类交互输入接口进行虚拟化和数字化的基础上统一建模对物联网运行依赖的系统软件平台进行虚拟化建模与支撑。
\section{主要研究内容}
软件系统的质量和安全保障主要在于针对软件自身的构建和维护阶段、软件运行和提供服务阶段,未来应当研究以下几个方面:一是从发现缺陷角度,需要研究现有软件质量和安全保障的技术手段的能力提升;二是从适应新时代软件新的特征角度,需要研究的新的软件质量和安全保障的方法;三是从标准、伦理和法律符合性角度,研究在软件开发构建、运行维护过程中约束、规范人的行为以保障软件的质量和安全的技术手段。
\subsection{大规模复杂系统建模、分析、测试与验证}
人机物融合场景下,大规模复杂系统的行为存在多组件间交互、大量不确定、概率性行为,研究概率、组合建模机制对相关系统行为进行描述,并在此基础上研究大规模概率组合系统分析、测试、验证方法与技术以进行可信增强和质量保障具有重要意义。
\subsection{开放动态系统行为监控、预测与容错}
传统静态手段难以应对开放动态系统,从监控的角度在运行时对系统行为进行可信增强具有重要意义。以监控属性和监控设计模型为基础,结合运行时验证、故障诊断与隔离等技术,研究相关系统主动监控理论,一方面能够有效监控系统当前出现的问题,另一方面可以基于运行状态对系统后续行为进行预测,在出现可能发生故障的趋势时,对系统运行进行干涉,以避免故障的发生。
\subsection{系统体系结构驱动的可信增强}
针对系统异构复杂性,从体系结构角度出发进行模块化设计将问题与影响进行局部隔离,增加与预留容错机制,减小单组件失效对整体带来的影响对于整体系统可信增强具有重要意义。另外,将上述相关技术进展纳入系统设计,从协同设计角度在设计阶段整体考虑进行监控、预测、容错,对于提升系统可信、性能等也具有显著意义。人机物融合场景下各系统分处不同物理空间,跨越不同知识领域,使用不同架构。为了保证最终整体系统的安全可靠,从系统工程的角度对相关系统进行整体分析是一个重要的方向。
\subsection{数据质量治理}
数据质量是大数据分析正确和决策有效的根本保证。通过数据治理,采用高效的数据管理工具,保证数据在全生命周期内正确、规范、安全,符合系统要求,有助于高质量的知识挖掘和利用。与传统关系型数据相比,大数据具有数据量大、实时分析要求高、存在多种异构数据格式、噪音高、关键数据元素持续演变等特点,质量管理更加具有挑战性和迫切性。
\subsection{智能模型质量保障}
针对数据集偏差、歧视及样本迁移等问题,一方面需要提高机器学习算法设计的鲁棒性;另一方面更需要在系统层面上构建一套监测体系来时刻发现数据偏差、歧视和样本迁移问题。在构建这套检测体系时,需要考虑两个维度,一是需要保证检测的高效性和及时性;二是需要保证检测的有效性,要能很好的度量数据分布。分析智能学习算法及其开发框架设计,检测鲁棒性、安全性、稳定性等各方面问题,并评估其在智能应用中的风险。探索有效的智能软件测试和质量评估方法。当前对于智能软件的质量评估主要是机器学习算法精度的度量标准,评估并引导智能软件在人工标注的数据集上得到较好的结果,但是却无法评估智能软件在面对恶意攻击的稳定性。
\subsection{全生存期软件质量运维}
在系统开发环境、集成环境、运行动态环境中建立一体化的质量保证平台对开发、集成、部署、运维流程中各个环节质量数据进行综合分析支持持续迭代的故障检测和质量评价过程构建软件质量的全景视图以期更加准确有效地发现质量问题、追溯问题来源并评估质量风险。DevOps、持续集成CI, Continuous Integration、持续测试CT, Continuous Testing、持续交付CD, Continuous Delivery、智能运维AIOps等技术及其自动化工具支持是DevOps提升软件质量保证的关键。在CI/CT/CD过程中开发人员的每次代码更新提交后都会触发构建、部署、以及测试脚本的自动执行小规模代码、高频率测试有助于及时、快速地发现、定位和修复缺陷在AIOps中通过大数据分析等技术自动、及时发现运行过程中的异常行为。开发运营一体化还可以进一步构成质量反馈机制将运营环节发现的异常分析报告反馈给开发环节以加强CI/CT过程的故障检测和质量保证。
\subsection{软件生态中缺陷检测与修复}
开源软件和代码托管平台的大量使用使得软件开发已经从独立的项目模式演变成社会技术性的软件生态系统模式,这也使得项目间形成错综复杂的依赖关系,促进了项目的共同发展和演化,同时也为软件的维护工作和质量保障带来了新的挑战,解决不好就破坏了软件生态系统的健康与发展。跨项目缺陷的检测和修复问题尤为突出。研究具有复杂、开放、规模大和分布式等特征软件生态系统中的跨项目缺陷的预测、定位和修复,充分利用软件生态系统中多种形态的数据(如代码、代码提交日志、程序频谱、文档、历史缺陷数据和开发者数据等),多种形态数据的关联和影响、项目间的依赖关系和数据流动,研究面向软件生态系统的多形态数据的语义模型、项目依赖网络的软件分析技术,实现跨项目缺陷检测;从缺陷产生的原因、缺陷的影响、缺陷的修复等多个角度研究软件生态系统中缺陷的特征和规律,以目前流行的开源软件生态系统作为对象,构建公共数据集,并进行大规模的实验验证分析,建立一套软件生态系统中缺陷的影响分析模型和方法、跨项目缺陷修复的方法和相应的支撑平台。
\subsection{大规模复杂软件的恶意代码智能检测}
基于恶意代码的静态结构和动态行为特征及其演化,通过在静态分析中引入人工智能技术,模拟安全专家“手工”检测和识别恶意代码的流程,研究和设计智能化恶意代码检测模型。将恶意特征库作为数据集,分析并生成其适合机器学习模型的特征描述,进行大规模训练,从而快速、准确地实现对恶意特征的识别和判断,为大规模复杂软件的恶意代码检测提供技术支撑。同理,恶意代码随时间演化,检测模型也需不断变化,因此如何训练出抗恶意代码演化的自改进模型是研究重点;研究通过对目标复杂软件(系统)的恶意特征进行自动化标记,使用智能化技术设计动态分析方法。标记出需要部分动态分析的含恶意特征的目标程序,对其进行运行态行为实时跟踪,实现对恶意行为的自动化验证。
\subsection{漏洞智能化检测}
通过从复杂系统内部和外部海量数据中收集、提取特征,基于深度学习等智能化方法对复杂系统内部逻辑建模,并以前期漏洞检测分析结果为数据基础,完成对复杂系统运行逻辑的预测,实现判别异常运行逻辑,从而有效提高漏洞检测的效率;研究基于深度学习技术构造软件输入域与代码结构、行为的映射模型,基于映射模型有效指导模糊测试生成过程中输入域修改位置与变异值,进而测试针对特定代码区域、触发特定行为,以有效检测漏洞;基于漏洞成因及触发机制,研究基于大数据处理的程序漏洞并行检测技术。
\subsection{漏洞智能化修复}
漏洞修复作为保护系统免受攻击的重要一环,往往需要精确地把控漏洞成因及漏洞危害。人工进行漏洞修复往往由于安全人员的知识水平和思维习惯等问题造成修复失败或者又引入新的漏洞[19]。通过研究漏洞代码的自动化定位、漏洞代码上下文智能切片和基于上下文的代码逻辑修正等技术,结合智能化方法,构建智能化漏洞修复技术,保障漏洞修复的准确性和及时性。如何表示数据、选取智能化模型是研究难点,因为将数据合理表达为智能模型适合处理的形式,并选用合适的模型,可使漏洞修复过程更加可靠。
\subsection{物联网软件安全保障}
研究针对物联网软件的静态分析和符号执行技术,支持典型安全缺陷的检测检测;研究物联网软件建模、模型驱动测试与验证方法;研究面向物联网的智能模糊测试技术,用物联网软件结构、行为模型有效制导模糊测试,生成能够覆盖物联网软件输入域、结构和行为场景的测试输入,利用机器学习、深度学习等人工智能技术,基于对物联网软件结构与行为、物联网软件安全缺陷、模糊测试历史等知识和经验的学习,构建并训练映射模型,预测输入域与状态空间区域的映射关系,通过使用遗传算法、人为指定漏洞关联重点区域,优化模糊测试制导算法,避免无效、冗余的测试生成,在资源有限的情况下充分有效地遍历重要的状态空间尽早发现漏洞;研究物联网软件虚拟化和仿真技术,对物联网运行依赖的系统软件平台进行虚拟化建模与支撑,针对物联网软件依赖的特定外设、体系架构、指令集等,研究仿真运行技术。
\subsection{软件质量与安全保障的外延扩展}
分析国际、国家软件质量和安全相关的标准针对软件新的特征和应用研究新型软件质量模型、标准的扩展、标准符合性评估手段基于ACM/IEEE软件工程职业伦理规范研究适合我国国情的软件从业人员的职业伦理规范基于在国家重要领域软件应用的相关法律规定研究法律法规符合性的软件的质量和安全保障技术手段包括GPL、APL等软件授权规定软件代码中违规行为和证据的获取等。
\section{本章小节}
在“软件成为基础设施、软件定义一切”的背景下,本章基于软件的复杂加剧化、形态服务化、质量价值化、协作生态化的视角,从可信软件度量与评估、数据驱动的智能软件系统质量保障、人机物融合场景下的软件系统可信增强、大规模复杂软件系统安全、物联网软件安全等几个角度讨论了软件质量与安全保障面临的重大挑战问题,展望了未来仍需研究的方向和内容。
\section{参考文献}
[1] xLe Goues C, Nguyen T V, Forrest S, et al. Genprog: A generic method for automatic software repair[J]. Ieee transactions on software engineering, 2011, 38(1): 54-72.
[2] Kruger J, Schneider J, Westermann R. Clearview: An interactive context preserving hotspot visualization technique[J]. IEEE Transactions on Visualization and Computer Graphics, 2006, 12(5): 941-948.
[3] Kim G, Humble J, Debois P, et al. The DevOps Handbook:: How to Create World-Class Agility, Reliability, and Security in Technology Organizations[M]. IT Revolution, 2016.
[4] Ebert C, Gallardo G, Hernantes J, et al. DevOps[J]. Ieee Software, 2016, 33(3): 94-100.
[5] Dang Y, Lin Q, Huang P. AIOps: real-world challenges and research innovations[C]//Proceedings of the 41st International Conference on Software Engineering: Companion Proceedings. IEEE Press, 2019: 4-5.
[6] Li Z, Dang Y. AIOps: Challenges and Experiences in Azure[J]. 2019.
[7] D. Sculley, T. Phillips, D. Ebner, et al. Machine learning: the high-interest credit card of technical debt[J]. 2014. http://citeseerx.ist.psu.edu/
viewdoc/summary? doi=10.1.1.675.9675.
[8] M. Jorge, C. Ismael, R. Bibiano, S. Manuel, P. Mario. A Data Quality in Use Model for Big Data. Future Generation Computer Systems, 63(2016): 123-130.
[9] S. Soares, Big Data Governance: An Emerging Imperative, MC Press, 2012.
[10] Li Y, Jin Z. An Android malware detection method based on feature codes[C]//2015 4th International Conference on Mechatronics, Materials, Chemistry and Computer Engineering. Atlantis Press, 2015.
[11] Galal H S, Mahdy Y B, Atiea M A. Behavior-based features model for malware detection[J]. Journal of Computer Virology and Hacking Techniques, 2016, 12(2): 59-67.
[12] Sogukpinar I. Analysis and Evaluation of Dynamic Feature-Based Malware Detection Methods[C]//Innovative Security Solutions for Information Technology and Communications: 11th International Conference, SecITC 2018, Bucharest, Romania, November 8 {u2013} 9, 2018, Revised Selected Papers. Springer, 2019, 11359: 247.
[13] 李华, 刘智, 覃征, 等. 基于行为分析和特征码的恶意代码检测技术[J]. 计算机应用研究, 2011, 28(3): 1127-1129.
[14] 宋文纳, 彭国军, 傅建明, 张焕国, 陈施旅 . 恶意代码演化与溯源技术研究. 软件学报,2019.http://www.jos.org.cn/1000-9825/5767.htm
[15] Gosain A, Sharma G. A survey of dynamic program analysis techniques and tools[C]//Proceedings of the 3rd International Conference on Frontiers of Intelligent Computing: Theory and Applications (FICTA) 2014. Springer, Cham, 2015: 113-122.
[16] Cousot P, Giacobazzi R, Ranzato F. Program analysis is harder than verification: A computability perspective. In: Proc. of the CAV.2018. 75-95.
[17] 张健,张超,玄跻峰,熊英飞,王千祥,梁彬,李炼,窦文生,陈振邦,陈立前,蔡彦.程序分析研究进展.软件学报,2019, 30(1):80-109. http://
www.jos.org.cn/1000-9825/5651.htm
[18] 邹权臣, 张涛, 吴润浦, 马金鑫, 李美聪, 陈晨, 侯长玉. 从自动化到智能化:软件漏洞挖掘技术进展. 清华大学学报(自然科学版), 2018, 58(12): 1079-1094.
[19] Lin Z, Jiang X, Xu D, et al. AutoPaG: towards automated software patch generation with source code root cause identification and repair[C]//Proceedings of the 2nd ACM symposium on Information, computer and communications security. ACM, 2007: 329-340.
[20] Edward Lee. Cyber-physical systems - are computing foundations adequate? Position paper for NSF workshop on Cyber-Physical Systems: Research Motivation, Techniques and Roadmap.
[21] Wang, Xiaofeng, Naira Hovakimyan, and Lui Sha. "L1Simplex: fault-tolerant control of cyber-physical systems." In 2013 ACM/IEEE International Conference on Cyber-Physical Systems (ICCPS), pp. 41-50. IEEE, 2013.
[22] Ammar M, Russello G, Crispo B. Internet of Things: A survey on the security of IoT frameworks[J]. Journal of Information Security and Applications, 2018, 38: 8-27.
[23] David Y, Partush N, Yahav E. Firmup: Precise static detection of common vulnerabilities in firmware[C]//ACM SIGPLAN Notices. ACM, 2018, 53(2): 392-404.
[24] Davidson D, Moench B, Ristenpart T, et al. {FIE} on Firmware: Finding Vulnerabilities in Embedded Systems Using Symbolic
Execution[C]
//Presented as part of the 22nd {USENIX} Security Symposium ({USENIX} Security 13). 2013: 463-478.
[25] Corteggiani N, Camurati G, Francillon A. Inception: System-wide security testing of real-world embedded systems
software[C]//27th {USENIX} Security Symposium ({USENIX} Security 18). 2018: 309-326.
[26] Zheng Y, Davanian A, Yin H, et al. FIRM-AFL: high-throughput greybox fuzzing of iot firmware via augmented process emulation[C]//28th {USENIX} Security Symposium ({USENIX} Security 19). 2019: 1099-1114.
[27] Sfar A R, Natalizio E, Challal Y, et al. A roadmap for security challenges in the Internet of Things[J]. Digital Communications and Networks, 2018, 4(2): 118-137.
[28] Kolias C, Kambourakis G, Stavrou A, et al. DDoS in the IoT: Mirai and other botnets[J]. Computer, 2017, 50(7): 80-84.
[29] Zhou W, Jia Y, Yao Y, et al. Discovering and understanding the security hazards in the interactions between IoT devices,
mobile apps, and clouds on smart home platforms[C]//28th {USENIX} Security Symposium ({USENIX} Security 19). 2019: 1133-1150.
[30] Chen J, Diao W, Zhao Q, et al. IoTFuzzer: Discovering Memory Corruptions in IoT Through App-based Fuzzing[C]//NDSS. 2018.
[31] Seto, Danbing, Bruce Krogh, Lui Sha, and Alongkrit Chutinan. "The Simplex architecture for safe online control system upgrades." In Proceedings of the 1998 American Control Conference. ACC (IEEE Cat. No. 98CH36207), vol. 6, pp. 3504-3508. IEEE, 1998.