CN116305133A - 基于虚拟化的内核漏洞补丁的验证方法和装置 - Google Patents

基于虚拟化的内核漏洞补丁的验证方法和装置 Download PDF

Info

Publication number
CN116305133A
CN116305133A CN202211106239.8A CN202211106239A CN116305133A CN 116305133 A CN116305133 A CN 116305133A CN 202211106239 A CN202211106239 A CN 202211106239A CN 116305133 A CN116305133 A CN 116305133A
Authority
CN
China
Prior art keywords
kernel
patch
verification
vulnerability
bug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211106239.8A
Other languages
English (en)
Inventor
黄辰林
罗军
董攀
丁滟
蹇松雷
谭郁松
余杰
李宝
马俊
王晓川
谭霜
张建锋
陈科文
魏旭鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202211106239.8A priority Critical patent/CN116305133A/zh
Publication of CN116305133A publication Critical patent/CN116305133A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种基于虚拟化的内核漏洞补丁的验证方法和装置。本申请的自动化的操作系统内核漏洞补丁自动修复和验证框架,将补丁修复验证过程分为三个部分:补丁可用性验证、补丁有效性验证及补丁验证结果的迭代返回。基于KVM虚拟化技术支持内核漏洞补丁的修复和验证控制,能够通过给定内核版本和补丁集,自动化快速执行补丁验证流程,并通过漏洞验证程序和内核错误日志返回内核补丁的有效性验证报告。该方法最大的特点在于不局限于内核补丁的完整性和有效性,同时具备内核补丁错误回收机制,能够循环验证多个内核补丁集,避免人工干预过程,提高补丁验证效率。本申请解决了相关技术中操作系统内核漏洞管理的效率较低的技术问题。

Description

基于虚拟化的内核漏洞补丁的验证方法和装置
技术领域
本申请涉及计算机领域,具体而言,涉及一种基于虚拟化的内核漏洞补丁的验证方法和装置。
背景技术
操作系统是信息系统的基石,其安全性至关重要。近年来,随着国产操作系统在国内关键领域的广泛应用,急需进一步提升国产操作系统安全性,解决其中的安全隐患,其中就包括操作系统内核漏洞问题。
操作系统内核是操作系统的重中之重,特权级别高,承载了系统核心功能。操作系统内核经过几十年的发展,虽然整体架构及功能没有大的变化,但是其中的细节繁琐、代码量巨大,系统规模远超一般软件,中间存在的各种代码漏洞层出不穷,且几乎都深刻影响着系统安全,危及整个软件生态。
操作系统内核漏洞修复门槛高,提高内核缺陷的定位与修复效率是当前的研究热点。软件工程的部分经典文献表明,软件维护占软件成本的90%以上,而软件维护中35.6%的活动都是在修复缺陷。而来自某大学的一份报告更是估算现代软件开发中缺陷修复占用成本达到了50%。软件缺陷或漏洞或在系统开发中不可避免,其产生原因可以追溯到开发的各个阶段,无论工业界还是学术研究领域,定位和修复程序漏洞都是软件工程的核心问题。随着开发和调试技术的提高,自动化的漏洞定位技术已经得到了一定的研究和发展,然而漏洞高效的修复方法仍处在初级阶段。由于内核自动修复和补丁生成涉及的代码量巨大、复杂性很高,虽然有不少研究者和机构踊跃其中,但所获成果却并不算多,可供使参考的资料有限,可供修复使用的工作更是寥寥无几。如何开发内核自动修复工具是一项意义重大但极具挑战的任务。
以银河麒麟操作系统为代表的国产操作系统,大多采用Linux内核作为基础,并建立了自己的内核代码维护体系,包括操作系统内核CVE漏洞库和操作系统补丁库等,为操作系统内核漏洞的自动化修复提供了基础支撑。但是,目前的操作系统内核漏洞管理仍需要大量的人工干预,从而造成了管理的效率较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种基于虚拟化的内核漏洞补丁的验证方法和装置,以至少解决相关技术中操作系统内核漏洞管理的效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种基于虚拟化的内核漏洞补丁的验证方法,包括以下步骤:S1,构建操作系统内核漏洞补丁代码信息库,收集操作系统内核漏洞信息及其补丁,包括内核版本、漏洞编号、漏洞描述、漏洞验证程序、漏洞补丁集等,并建立完备的内核漏洞补丁代码信息库;S2,操作系统内核漏洞补丁验证环境虚拟机构建,基于Linux的KVM虚拟化技术,根据操作系统内核版本,构建目标操作系统虚拟机环境,为内核漏洞补丁的循环验证提供基础环境;S3,操作系统内核漏洞补丁可用性验证,依据Linux内核源码树,通过漏洞信息和漏洞补丁集信息,动态的分配资源进行补丁可用性验证;S4,操作系统内核漏洞补丁有效性验证,依据步骤S3生成的补丁可用性验证结果和漏洞信息生成补丁有效性验证脚本,动态注入步骤S2生成的虚拟化验证环境进行内核漏洞补丁有效性验证;S5,基于虚拟化的操作系统内核漏洞补丁迭代修复,利用虚拟机带外监控机制获取内核漏洞补丁修复的验证结果,并根据验证结果进行内核漏洞补丁的迭代修复;S6,操作系统内核漏洞补丁验证流程结束,完成操作系统内核漏洞的修复,进行修复报告的生成与输出。
可选地,本申请的系统框架由操作系统内核漏洞补丁代码信息库构建模块、操作系统内核漏洞补丁可用性验证模块、操作系统内核漏洞补丁有效性验证模块和补丁验证结果迭代控制模块组成;操作系统内核漏洞补丁代码信息库构建模块能够通过收录cve补丁信息、crash补丁信息在本地构建一个漏洞补丁库以及拉取最新内核源码树,并能够根据内核错误输出信息,包括内核版本、错误类型、内核crash栈回溯、错误源码位置等信息生成漏洞补丁集;操作系统内核漏洞补丁可用性验证模块能够根据漏洞信息对内核代码进行打补丁操作,并自动完成内核参数配置和内核编译操作,验证对应的内核漏洞补丁是否可用;操作系统内核漏洞补丁有效性验证模块能够自动控制打补丁的内核完成重启,并采集重启后相关操作系统内核现场信息,重启成功则进一步自动调用该漏洞对应的漏洞验证程序验证漏洞补丁是否生效;补丁验证结果迭代控制模块根据操作系统内核漏洞补丁的可用性验证和有效性验证两个模块的反馈结果,控制整个操作系统内核漏洞补丁的迭代测试和验证流程,能够控制其他模块,在漏洞补丁集中自动筛选出可用的操作系统内核漏洞补丁。
可选地,步骤S1的详细步骤包括:S1.1,收到管理员的操作系统内核漏洞补丁代码信息库构建操作;S1.2,操作系统内核漏洞补丁代码信息库构建模块,根据要求的操作系统内核版本拉取最新内核源码树,收集操作系统内核漏洞信息及其补丁,包括内核版本、漏洞编号、漏洞描述、CVE补丁、crash补丁信息等,形成基本的内核漏洞补丁库;S1.3,操作系统内核漏洞补丁代码信息库构建模块,针对漏洞补丁库中的漏洞,能够根据内核错误输出信息生成漏洞补丁集,同时收集漏洞验证程序等,建立完备的内核漏洞补丁代码信息库。
可选地,步骤S2的详细步骤包括:S2.1,读取步骤S1.2收录的操作系统内核漏洞信息,提取内核版本号;S2.2,解压纯净版Linux内核源码,切换内核源码树到该漏洞所在内核版本,依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成包含该漏洞的纯净内核镜像;S2.3,获取步骤S2.2生成的包含该漏洞的纯净内核镜像,依据初始配置的虚拟机构建参数和默认rootfs系统,启动Qemu客户端构建目标操作系统虚拟环境;S2.4,注入内核漏洞验证程序和操作系统内核补丁有效性验证模块客户端组件到目标操作系统虚拟环境中。
可选地,步骤S3的详细步骤包括:S3.1,读取步骤S1.3生成的内核漏洞补丁代码信息库,依次读取补丁并将补丁运用到在步骤S2.2中的Linux内核源码版本上,生成打补丁结果信息;S3.2,依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成打补丁后的内核镜像;S3.3,收集对应编译结果及内核镜像,编译成功的确认该补丁可用,编译失败的确认该补丁不可用,并收集编译失败结果信息。
可选地,步骤S4的详细步骤包括:S4.1,通过操作系统内核补丁有效性验证模块控制端组件,启动步骤S2.4生成的目标操作系统虚拟环境中的客户端组件,执行内核漏洞验证程序,收集漏洞触发现场内核信息;S4.2,通过操作系统内核补丁有效性验证模块控制端组件,注入步骤S3.2收集的对应补丁的内核镜像到步骤S2.3生成的目标操作系统虚拟环境中;S4.3,通过操作系统内核补丁有效性验证模块控制端组件,启动步骤S2.4生成的目标操作系统虚拟环境中的客户端组件,执行内核安装过程,收录内核安装结果返回控制端组件;S4.4,通过操作系统内核补丁有效性验证模块控制端组件,启动步骤S2.4生成的目标操作系统虚拟环境中的客户端组件,执行系统重启过程,并通过控制端组件检测虚拟验证环境是否正常启动,并收录启动结果;S4.5,通过操作系统内核补丁有效性验证模块控制端组件,启动步骤S2.4生成的目标操作系统虚拟环境中的客户端组件,执行内核漏洞验证程序,收集验证程序结果及内核信息后传递给控制端组件;S4.6,通过操作系统内核补丁有效性验证模块控制端组件收集步骤S4.1和步骤S4.5生成的内核现场信息和验证程序结果,自动判断该补丁是否有效修复漏洞,是否触发内核崩溃;S4.7,若步骤S4.6结果判定为该补丁无效,则将该补丁修复结果返回步骤S5,启动迭代修复过程;S4.8,若步骤S4.6结果判定为该补丁有效,则将该补丁修复结果生成修复报告返回步骤S6,结束修复流程,进入报告生成过程。
可选地,步骤S5的详细步骤包括:S5.1,收到管理员的操作系统内核漏洞补丁验证操作;S5.2,基于虚拟化的操作系统内核漏洞补丁迭代修复模块,根据要修补的操作系统内核漏洞,在内核漏洞补丁代码信息库中读取相关的内核漏洞补丁集;S5.3,基于虚拟化的操作系统内核漏洞补丁迭代修复模块,根据操作系统内核版本构建用于漏洞补丁验证的虚拟机;S5.4,基于虚拟化的操作系统内核漏洞补丁迭代修复模块,调用内核漏洞可用性验证模块,完成针对特定内核漏洞补丁的可用性验证;S5.5,基于虚拟化的操作系统内核漏洞补丁迭代修复模块,调用内核漏洞有效性验证模块,在构建的虚拟机中完成针对特定内核漏洞补丁的有效性验证;S5.6,基于虚拟化的操作系统内核漏洞补丁迭代修复模块,通过KVM提供的虚拟机带外监控机制,获取内核漏洞补丁有效性验证的结果。并自动迭代控制步骤S5.4和步骤S5.5,完成针对特定内核漏洞补丁集的迭代修复验证;S5.6,基于虚拟化的操作系统内核漏洞补丁迭代修复模块,完成针对要修补的操作系统内核漏洞的内核漏洞补丁集的迭代验证流程;步骤S6的详细步骤包括:S6.1,收集步骤S5.3和步骤S5.5的补丁可用性和补丁有效性验证结果;S6.2,依据判定结果将有效补丁进行漏洞修复,并生成有效性修复报告返回;S6.3,依据判定结果将无效修补补丁和不可用补丁生成对应错误日志,返回补丁及漏洞报告。
根据本申请实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法中任一实施例的步骤。
和相关技术相比,本申请具有下述优点:
1)紧密结合Linux操作系统的特点,通过开源内核源码树及多方开放式漏洞公布平台,收录了众多内核漏洞信息及相关漏洞验证代码,通过整理内核漏洞详情信息字段,建立完备的内核漏洞数据库,通过该库能够快速准确的描述内核漏洞信息,规避了内核漏洞分类复杂、数据分散,描述多样化等缺陷,为漏洞对应的补丁集搜集和生成创造了便捷有效的前置信息环境;2)针对操作系统内核补丁修复验证流程,将繁杂的修复验证流程拆解为基于虚拟化的初始环境构建、补丁可用性验证、补丁有效性验证三个阶段,并通过基于KVM的虚拟化技术和该系统的控制端—客户端组件,将需要耗费大量人工工作的内核构建和验证流程自动化控制,并通过KVM虚拟化技术做到并行化处理,大大减少了人工干预的过程和时间,能够快速的验证大量补丁集并返回验证结果,对后续修改补丁提供了大量有效参考信息,为操作系统内核补丁自动生成技术的进一步研究提供有效的验证方法及环境。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本申请实施例的一种可选的基于虚拟化的内核漏洞补丁的验证方法的流程图;
图2是根据本申请实施例的基于虚拟化的操作系统内核漏洞补丁自动验证系统的示意图;
图3是根据本申请实施例的基于虚拟化的操作系统内核漏洞补丁自动验证方法的工作原理示意图;
图4是根据本申请实施例的一种可选的基于虚拟化的内核漏洞补丁的验证装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一方面,本申请提供了一种基于虚拟化的内核漏洞补丁的验证方法,本申请实施例的基于虚拟化的内核漏洞补丁的验证方法可以由服务器、终端来执行。图1是根据本申请实施例的一种可选的基于虚拟化的内核漏洞补丁的验证方法的流程图,如图1所示,该方法可以包括以下步骤:
步骤S1,利用操作系统的内核漏洞信息和对应的内核漏洞补丁,构建操作系统内核漏洞补丁代码信息库,操作系统内核漏洞补丁代码信息库中包括操作系统内核版本、漏洞编号、漏洞描述、漏洞验证程序以及漏洞补丁集(漏洞补丁集指针对特定漏洞的补丁集合,下文中漏洞补丁库是所有漏洞的数据库)。
步骤S2,基于Linux的KVM虚拟化技术,根据操作系统内核版本构建目标操作系统虚拟机环境,其中,目标操作系统虚拟机环境用于为内核漏洞补丁的循环验证提供基础环境。
步骤S3,依据Linux内核源码树,通过内核漏洞信息和漏洞补丁集,动态分配资源进行内核编译,以进行补丁可用性验证,得到补丁可用性验证结果。
步骤S4,依据补丁可用性验证结果和内核漏洞信息,提取由内核可用镜像和漏洞验证程序组成的验证数据集,将验证数据集注入目标操作系统虚拟机环境中,进行内核漏洞补丁的有效性验证。
步骤S5,利用目标操作系统虚拟机环境的虚拟机带外监控机制获取内核漏洞补丁修复的验证结果,并根据验证结果进行内核漏洞补丁的迭代修复。
步骤S6,在完成操作系统的内核漏洞的修复后,生成并输出修复报告。
利用本申请的技术方案中,为了提升操作系统内核漏洞管理的自动化能力,设计了一整套自动化的补丁自动修复和验证框架,能够通过给定内核版本和补丁集,快速的进行自动化补丁验证流程,减少人工干预过程,可以解决相关技术中操作系统内核漏洞管理的效率较低的技术问题,提高补丁验证效率。
在本申请的技术方案中,为了提高操作系统内核漏洞管理的自动化程度,将繁杂的修复验证流程拆解为基于虚拟化的初始环境构建、补丁可用性验证、补丁有效性验证三个主要阶段,并通过基于KVM的虚拟化技术和该系统的控制端(即客户端组件),将需要耗费大量人工工作的内核构建和验证流程自动化控制,通过KVM虚拟化技术做到并行化处理,避免了人工干预的过程和时间,下文结合图1所示步骤详述:
在一个可选的步骤S1的实施方式中,包括如下步骤S11至步骤S13:
步骤S11,检测到管理员在后台管理系统中触发的构建操作,管理员通过构建操作指示构建操作系统内核漏洞补丁代码信息库。
步骤S12,根据要求的操作系统内核版本拉取最新的Linux内核源码树,收集操作系统的内核漏洞信息和对应的内核漏洞补丁。
步骤S13,针对漏洞补丁库中的内核漏洞,根据内核错误输出信息生成漏洞补丁集,同时收集漏洞验证程序,建立完备的操作系统内核漏洞补丁代码信息库。
收集操作系统的内核漏洞信息及其补丁(即对应的内核漏洞补丁),以构建操作系统内核漏洞补丁代码信息库,库中包括内核版本、漏洞编号、漏洞描述等内核漏洞信息,还有漏洞验证程序、漏洞补丁集(包括若干核漏洞补丁)等,对于建立的完备的内核漏洞补丁代码信息库(即操作系统内核漏洞补丁代码信息库),可规范统一各漏洞描述信息字段。
本方案中,紧密结合Linux操作系统的特点,通过开源内核源码树及多方开放式漏洞公布平台,收录了众多内核漏洞信息及相关漏洞验证代码,通过整理内核漏洞详情信息字段,建立完备的内核漏洞数据库,通过该库能够快速准确的描述内核漏洞信息,规避了内核漏洞分类复杂、数据分散,描述多样化等缺陷,为漏洞对应的补丁集搜集和生成创造了便捷有效的前置信息环境。
在一个可选的步骤S2的实施方式中,为了实现基于虚拟化的初始环境的构建,可执行步骤S2包括的步骤S21至步骤S24:
KVM虚拟化有两个核心模块:其一是KVM内核模块,主要包括KVM虚拟化核心模块KVM.ko,以及硬件相关的KVM_intel或KVM_AMD模块,负责CPU与内存虚拟化,包括VM创建,内存分配与管理、vCPU执行模式切换等;其二是QEMU设备模拟,实现IO虚拟化与各设备模拟(磁盘、网卡、显卡、声卡等),通过IOCTL系统调用与KVM内核交互,KVM仅支持基于硬件辅助的虚拟化(如Intel-VT与AMD-V),在内核加载时,KVM先初始化内部数据结构,打开CPU控制寄存器CR4里面的虚拟化模式开关,执行VMXON指令将Host OS设置为root模式,并创建的特殊设备文件/dev/kvm等待来自用户空间的命令,然后由KVM内核与QEMU相互配合实现VM的管理。KVM会复用部分Linux内核的能力,如进程管理调度、设备驱动,内存管理等。
步骤S21,读取收录的操作系统的内核漏洞信息,并提取操作系统内核版本。
步骤S22,解压纯净版Linux内核源码,切换内核源码树中的内核版本到内核漏洞所在的操作系统内核版本,依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成包含内核漏洞的纯净内核镜像。
步骤S23,利用纯净内核镜像,依据初始配置的虚拟机构建参数和默认rootfs系统,启动Qemu客户端以构建目标操作系统虚拟机环境。
步骤S24,注入内核漏洞的漏洞验证程序和用于进行操作系统内核补丁的有效性验证的客户端组件到目标操作系统虚拟机环境中。
在该方案中,可收集之前生成的包含漏洞的原始版内核镜像、打了各个版本补丁的内核镜像和默认的rootfs系统,读取默认的Qemu虚拟机启动参数,构建虚拟机启动脚本;读取系统硬件资源,通过动态分配资源进行虚拟机的构建,通过SSH(Secure Shell的缩写,SSH为建立在应用层基础上的安全协议,是专为远程登录会话和其他网络服务提供安全性的协议)远程命令注入该漏洞验证程序和内核镜像以及操作系统内核补丁有效性验证模块的客户端组件。
在一个可选的步骤S3的实施方式中,为了实现补丁可用性验证,可以执行步骤S3包括的步骤S31至步骤S33:
步骤S31,读取构建的操作系统内核漏洞补丁代码信息库,依次读取漏洞补丁集中的内核漏洞补丁并将内核漏洞补丁运用到在内核漏洞所在的操作系统内核版本上,生成打补丁结果信息。
步骤S32,依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成打补丁后的内核镜像。
步骤S33,收集对应的编译结果及打补丁后的内核镜像,编译成功的则确认对应的内核漏洞补丁可用,编译失败的则确认对应的内核漏洞补丁不可用,并收集编译失败结果信息,得到补丁可用性验证结果。
可从若干内核漏洞中选择一个作为待验证的内核漏洞,进行内核补丁可用性验证:先解压开源Linux内核源码树,并依据漏洞输入信息中的漏洞对应的内核版本号,将内核源码树切换到对应的内核版本(即上述内核版本号对应的版本)。读取默认内核源码编译参数,读取系统硬件资源信息;动态分配资源进行具备漏洞的内核源码编译工作,并监控编译结果;分别将该漏洞对应的潜在补丁集中包含的补丁运用到该内核源码树上;读取默认内核源码编译参数,读取系统硬件资源信息;动态分配系统资源进行对应补丁源码树的内核编译工作,并监控编译结果。一般来说,编译结果分为两种情况:编译报错或编译通过。若编译报错则说明该补丁针对该版本内核源码不可用;若编译通过则说明该补丁可用。
在一个可选的步骤S4的实施方式中,为了实现有效性验证,可以执行步骤S4包括的步骤S41至步骤S48:
步骤S41,启动目标操作系统虚拟机环境中的客户端组件,以执行漏洞验证程序,收集漏洞触发现场的内核信息。
如,先通过SSH远程命令运行操作系统内核补丁有效性验证模块客户端组件,使用操作系统内核补丁有效性验证模块控制端组件发起控制指令,控制端组件先发起漏洞现场捕获指令,客户端组件将执行漏洞验证代码,并收集漏洞触发现场内核消息并返回。
步骤S42,注入打补丁后的内核镜像到目标操作系统虚拟机环境中。
步骤S43,执行内核安装过程,将收录的内核安装结果返回至控制端。
步骤S44,执行系统重启过程,并通过控制端检测目标操作系统虚拟机环境是否正常启动,并收录启动结果。
控制端组件将对应补丁内核版本镜像注入虚拟机中,发起内核镜像安装和重启指令,客户端组件将执行内核安装并收集安装报错信息,若安装成功则返回客户端重启消息并重启机器;控制端组件收到返回消息后开启虚拟机存活检测功能,实时检测虚拟机重启进度,若检测到虚拟机重启成功,则通过SSH远程命令运行操作系统内核补丁有效性验证模块的客户端组件,若长时间检测不到虚拟机重启成功,则直接删除该虚拟机并将该补丁归类为安装后启动失败。
步骤S45,执行漏洞验证程序,收集验证程序结果及内核现场信息后传递给控制端。控制端组件发起漏洞现场捕获指令,客户端收到指令后执行漏送验证程序的代码,并收集漏洞触发现场内核消息后返回。
步骤S46,收集内核现场信息和验证程序结果,自动判断内核漏洞补丁是否有效修复漏洞,是否触发内核崩溃。
控制端收到消息后存储并比对两次内核消息,初步判断该补丁是否有效修补该漏洞,并将所有返回值磁盘化存储,以备人工核验。
步骤S47,若判定结果为内核漏洞补丁无效,则将补丁修复结果返回,并启动迭代修复过程。
步骤S48,若判定结果为内核漏洞补丁有效,则利用补丁修复结果生成修复报告并返回,结束修复流程,以便进入报告生成过程。
在一个可选的步骤S5的实施方式中,为了实现迭代验证,可以通过步骤S5包括的步骤S51至步骤S57实现:
步骤S51,检测到管理员触发的验证操作,管理员通过验证操作验证操作系统的内核漏洞补丁。
步骤S52,根据待修补的内核漏洞,在操作系统内核漏洞补丁代码信息库中读取相关的漏洞补丁集。
步骤S53,根据操作系统内核版本构建用于漏洞补丁验证的虚拟。
步骤S54,执行针对指定的内核漏洞补丁的可用性验证。
步骤S55,在构建的虚拟机中完成针对指定的内核漏洞补丁的有效性验证。
步骤S56,通过KVM提供的虚拟机带外监控机制,获取内核漏洞补丁的有效性验证结果,并自动迭代可用性验证和有效性验证,完成针对漏洞补丁集中的各个内核漏洞补丁的迭代修复验证。
步骤S57,完成针对要修补的内核漏洞的漏洞补丁集的迭代验证流程。
执行迭代修复过程,通过上述步骤S4生成的补丁修复结果,返回步骤S1,依据补丁修复结果的内核崩溃信息查找新的补丁集,并迭代执行步骤S2验证新补丁集的可用性。接着直接跳过步骤S3,执行步骤S4,验证新补丁集在步骤S2下生成的内核镜像能否在步骤S3中的虚拟机验证环境中通过修复验证。若验证失败,则继续迭代步骤S5,直至系统终止或验证成果返回结果。
在本申请的技术方案中,针对操作系统内核补丁修复验证流程,将繁杂的修复验证流程拆解为基于虚拟化的初始环境构建、补丁可用性验证、补丁有效性验证三个阶段,并通过基于KVM的虚拟化技术和该系统的控制端—客户端组件,将需要耗费大量人工工作的内核构建和验证流程自动化控制,并通过KVM虚拟化技术做到并行化处理,大大减少了人工干预的过程和时间,能够快速的验证大量补丁集并返回验证结果,对后续修改补丁提供了大量有效参考信息,为操作系统内核补丁自动生成技术的进一步研究提供有效的验证方法及环境。
在一个可选的步骤S6的实施方式中,在完成操作系统的内核漏洞的修复后,进行修复报告的生成与输出。若步骤S4验证修复成功,则将所有产生的补丁信息、漏洞信息以及补丁修复结果输出为可读性较强的报告呈现;若步骤S4验证修复没有成功,且系统由于人工或自行终止,则将所有中间结果及补丁修复结果、漏洞详情等整理呈现出来。
在完成操作系统的内核漏洞的修复后,进行修复报告的生成与输出。若步骤S4验证修复成功,则将所有产生的补丁信息、漏洞信息以及补丁修复结果输出为可读性较强的报告呈现;若步骤S4验证修复没有成功,且系统由于人工或自行终止,则将所有中间结果及补丁修复结果、漏洞详情等整理呈现出来。
采用本申请的技术方案,当操作者给定一个漏洞描述文件时,该系统控制端组件的漏洞信息提取模块将从内核漏洞及补丁代码信息库中提取相应的漏洞信息及补丁集。通过虚拟环境构建模块初始化Linux内核源码树,并编译生成原始镜像作为验证环境镜像,通过将漏洞触发程序和原始镜像注入rootfs中生成虚拟验证环境。接着补丁可用性判定模块将逐步将补丁集中各个补丁运用到原始内核源码中,并自动分配系统资源编译镜像,过程中收集编译报错信息并判断补丁是否可用。通过通信控制模块将生成的补丁镜像及客户端组件注入到虚拟验证环境中,并启动客户端组件。客户端组件启动后接收控制端控制指令,进行内核升级安装和BootLoader设置工作,若安装失败则将错误信息返回控制端;若安装成功则将进行重启验证工作。控制端组件收到重启消息后将实时检测验证环境主机存活性,若发现验证环境启动成功,则向客户端组件发起触发漏洞指令。客户端执行漏洞触发程序并收集内核崩溃消息返回控制端组件。最终由控制端组件中的补丁有效性判定模块进行内核崩溃信息比对,并初步判定补丁是否有效修补该内核漏洞,若该补丁有效则将所有漏洞信息、补丁信息及验证结果整理报告并返回;若补丁无效,则将补丁信息和内核崩溃信息返回漏洞信息提取模块,进行新一轮补丁集提取及验证工作,如此迭代循环直至有效补丁验证通过或系统终止。
下文将以银河麒麟操作系统的实例,对本申请基于虚拟化的操作系统内核漏洞补丁自动验证方法进行进一步的详细说明。
如图2所示,操作系统内核补丁自动修复系统框架按程序主要功能分为控制端组件、客户端组件和内核漏洞及补丁代码信息库三个层级,且在控制端组件和客户端组件这两个层级间设计了完整的通信控制模块,通过该控制模块进行组件之间的信息传输与流程控制。该系统控制端组件包括漏洞信息提取模块、虚拟环境构建模块、补丁可用性判定模块、补丁有效性判定模块和通信控制模块。其中漏洞信息提取模块与内核漏洞及补丁代码信息库相交互,通信控制模块与客户端组件相交互。该系统客户端组件包括内核安装及验证模块、漏洞触发模块、漏洞崩溃信息收集模块和通信控制模块,其中通信控制模块与控制端组件相交互。
本实施例中,内核漏洞及补丁代码信息库是由全网公开的内核漏洞信息及补丁代码集合整理而成,包括了大量已知内核漏洞和已经修补的内核漏洞补丁,同时根据漏洞成因的相似性,其补丁代码也具备一定相似特征,因此该库还收集了大量经过已知补丁代码的变种补丁代码,但是该代码可能不具备可用性和有效性。同时该库的补丁代码也可能来自于人工修改或基于多种机器学习方法变种生成的代码。这里只是列举出可能存在的补丁代码集来源方式,不代表该补丁集针对特定补丁的可用及有效。该方法及系统聚焦于通过具备虚拟化技术的硬件平台,构筑一个自动化的补丁验证方法及系统,能够大量减少人工操作内容,提高补丁验证效率,为内核漏洞补丁自动生成技术的研究及应用提供一个有效的验证方法及系统。
如图3所示,本实施例具体工作原理流程如下:
步骤S1,内核漏洞补丁信息提取为该系统的起始步骤,其具体步骤为:
步骤S1.1,依据漏洞信息描述模板,给出一个漏洞描述信息文件。
步骤S1.2,漏洞信息提取模块将从该描述文件中提取有效信息并从给定的补丁集代码库中选取潜在补丁集。
步骤S1.3,根据漏洞描述信息文件中的内核版本号、漏洞验证程序以及通过步骤S1.2提取的补丁集生成数据集交给虚拟环境构建模块。
步骤S2,虚拟验证环境构建模块负责构建相应漏洞验证环境,其具体步骤为:
步骤S2.1,根据步骤S1.3给出的数据集中的内核版本号,将纯净的Linux内核源码树切换到指定版本代码中。
步骤S2.2,读取系统硬件资源信息,并使用默认的内核编译参数合理规划硬件资源进行内核编译。
步骤S2.3,监控内核编译结果,若编译失败将编译报错信息收集返回并直接终止系统;若编译成功,则将生成的纯净内核镜像和默认的rootfs系统以及步骤S1.3中提取的漏洞验证程序一起通过系统Qemu-kvm功能构建成可用的验证虚拟机。
步骤S3,通过控制端组件的通信控制模块与虚拟验证环境中客户端组件的通信控制模块进行虚拟验证环境的漏洞触发测试流程,并进行数据传输,其具体步骤为:
步骤S3.1,控制端发起内核漏洞触发指令,客户端接收到指令后,通过漏洞触发模块执行漏洞触发程序,并通过漏洞崩溃信息收集模块进行内核崩溃信息收集处理,并返回控制端组件。
步骤S3.2,控制端组件将该漏洞内核崩溃信息收集整理与给定的漏洞描述信息文件中的崩溃信息进行比对,判定该验证环境是否具备该漏洞。
步骤S3.3,若不具备该漏洞触发条件,则将内核镜像及漏洞触发程序及内核崩溃信息整理报告给使用者,并终止该程序;若具备该漏洞触发条件,则将进行补丁可用性验证流程。
步骤S4,通过控制端组件补丁可用性判定模块进行补丁可用性验证工作,其具体步骤为:
步骤S4.1,将步骤S1.3生成的数据集中的内核补丁集和内核版本号提取出来,将纯净的Linux内核源码树切换到指定版本代码中。
步骤S4.2,将补丁代码运用到该版本的内核源码上,若补丁加入失败,则将该补丁判定为不可用,同时将失败结果收集并附属到该补丁报告中;若补丁加入成功,则进行下一步内核编译。
步骤S4.3,读取系统硬件资源信息,并使用默认的内核编译参数合理规划硬件资源进行打过补丁后的内核源码编译。
步骤S4.4,监控内核编译结果,若编译失败则判定该补丁不可用,并将编译报错信息收集附属在改补丁报告中;若编译成功,则进入下一过程补丁有效性验证流程。
步骤S5,通过控制端组件和虚拟验证环境的客户端组件相交互,进行内核补丁的有效性验证流程,其具体步骤为:
步骤S5.1,控制端组件将步骤S4.4编译成功的内核镜像通过通信控制模块传输到虚拟验证环境中,并发起内核安装及验证指令。
步骤S5.2,虚拟验证环境中客户端组件的内核安装及验证模块收到该指令后,将接收到的打过补丁的内核镜像安装至步骤S2.3构筑的虚拟验证系统中,安装完成后,修改BootLoader设置,确保重启后以打过补丁的新内核镜像启动。
步骤S5.3,客户端组件全程监控安装过程并收集整理结果,安装完成后,发起重启指令。同时向控制端组件发出安装完成并重启中信号。
步骤S5.4,控制端组件收到客户端组件发出的安装完成并重启中的信号后,将开启主机存活性检测功能,实时检测该虚拟验证环境是否重启完成,若超时未检测到该虚拟验证环境启动成功,则判定该补丁生成的镜像无效,启动失败,进行下一补丁的有效性检测;若检测到该虚拟验证环境启动成功,则控制端组件发起远程命令启动客户端组件,并发出漏洞触发验证指令。
步骤S5.5,虚拟验证环境中的客户端组件收到漏洞触发验证指令后,将启动漏洞触发模块,运行漏洞触发程序,同时通过漏洞崩溃信息收集模块进行内核崩溃信息收集处理,并返回控制端组件。
步骤S5.6,控制端组件接受到内核崩溃信息后与给定的漏洞描述信息文件中的崩溃信息进行比对,判定该补丁是否有效修补该内核漏洞。若判定该补丁无效,则进入下一补丁的有效性检测;若判断该补丁有效,则将漏洞信息、漏洞触发程序、编译报告及补丁代码汇总生成最终报告返回使用者,供使用者进行人工核验。
步骤S6,若该批补丁集验证均不可用或无效,则将生成所有补丁的修复报告返回用户,同时将内核漏洞描述信息及补丁集返回内核漏洞补丁提取模块,待其提取新一轮补丁集进行下一轮补丁验证工作。如此循环迭代,直至补丁验证有效或系统终止。
综上所述,本实施例支持基于虚拟化的操作系统内核漏洞补丁自动验证流程,通过给定漏洞信息及补丁集,将自动化的进行内核补丁遴选、内核编译、虚拟验证环境构建、内核补丁可用性验证、内核补丁有效性验证等工作。本实例能够大幅度减少传统内核补丁验证工作中的大量人工操作,理论上将补丁修复及验证流程完全自动化处理,同时能够返回详尽的修复验证报告供使用者阅读。为修复操作系统内核漏洞提供极大的便利性,同时也为内核漏洞补丁自动生成技术的进一步研究提供可靠的验证方法及系统。毫无疑问,本实施例支持的自动化验证方法及系统并不局限于银河麒麟操作系统,还可以适用于其它各种具备虚拟化技术的操作系统,在此不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述基于虚拟化的内核漏洞补丁的验证方法的基于虚拟化的内核漏洞补丁的验证装置。图4是根据本申请实施例的一种可选的基于虚拟化的内核漏洞补丁的验证装置的示意图,如图4所示,该装置可以包括:
补丁构建单元41,用于利用操作系统的内核漏洞信息和对应的内核漏洞补丁,构建操作系统内核漏洞补丁代码信息库,所述操作系统内核漏洞补丁代码信息库中包括操作系统内核版本、漏洞编号、漏洞描述、漏洞验证程序以及漏洞补丁集。
可选地,所述补丁构建单元还用于:检测到管理员触发的构建操作,其中,所述构建操作用于指示构建所述操作系统内核漏洞补丁代码信息库;根据要求的操作系统内核版本拉取最新的Linux内核源码树,收集操作系统的所述内核漏洞信息和对应的所述内核漏洞补丁;针对漏洞补丁库中的所述内核漏洞,根据内核错误输出信息生成所述漏洞补丁集,同时收集所述漏洞验证程序,建立完备的所述操作系统内核漏洞补丁代码信息库。
环境构建单元42,用于基于Linux的KVM虚拟化技术,根据所述操作系统内核版本构建目标操作系统虚拟机环境,其中,所述目标操作系统虚拟机环境用于为所述内核漏洞补丁的循环验证提供基础环境。
可选地,环境构建单元还用于:读取收录的操作系统的所述内核漏洞信息,并提取所述操作系统内核版本;解压纯净版Linux内核源码,切换所述内核源码树中的内核版本到所述内核漏洞所在的所述操作系统内核版本,依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成包含所述内核漏洞的纯净内核镜像;利用所述纯净内核镜像,依据初始配置的虚拟机构建参数和默认rootfs系统,启动Qemu客户端以构建所述目标操作系统虚拟机环境;注入所述内核漏洞的所述漏洞验证程序和用于进行操作系统内核补丁的有效性验证的客户端组件到所述目标操作系统虚拟机环境中。
可用性验证单元43,用于依据Linux内核源码树,通过所述内核漏洞信息和所述漏洞补丁集,动态分配资源进行内核编译,以进行补丁可用性验证,得到补丁可用性验证结果;
可选地,可用性验证单元还用于:读取构建的所述操作系统内核漏洞补丁代码信息库,依次读取所述漏洞补丁集中的所述内核漏洞补丁并将所述内核漏洞补丁运用到在所述内核漏洞所在的所述操作系统内核版本上,生成打补丁结果信息;依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成打补丁后的内核镜像;收集对应的编译结果及所述打补丁后的内核镜像,编译成功的则确认对应的所述内核漏洞补丁可用,编译失败的则确认对应的所述内核漏洞补丁不可用,并收集编译失败结果信息,得到所述补丁可用性验证结果。
有效性验证单元44,用于依据所述补丁可用性验证结果和所述内核漏洞信息,提取由内核可用镜像和漏洞验证程序组成的验证数据集,将所述验证数据集注入所述目标操作系统虚拟机环境中,进行所述内核漏洞补丁的有效性验证。
可选地,有效性验证单元还用于:启动所述目标操作系统虚拟机环境中的所述客户端组件,以执行所述漏洞验证程序,收集漏洞触发现场的内核信息;注入所述打补丁后的内核镜像到所述目标操作系统虚拟机环境中;执行内核安装过程,将收录的内核安装结果返回至控制端;执行系统重启过程,并通过所述控制端检测所述目标操作系统虚拟机环境是否正常启动,并收录启动结果;执行所述漏洞验证程序,收集验证程序结果及内核现场信息后传递给所述控制端;收集所述内核现场信息和所述验证程序结果,自动判断所述内核漏洞补丁是否有效修复漏洞,是否触发内核崩溃;若判定结果为所述内核漏洞补丁无效,则将补丁修复结果返回,并启动迭代修复过程;若判定结果为所述内核漏洞补丁有效,则利用补丁修复结果生成所述修复报告并返回,结束修复流程,以便进入报告生成过程。
修复单元45,用于利用所述目标操作系统虚拟机环境的虚拟机带外监控机制获取所述内核漏洞补丁修复的验证结果,并根据所述验证结果进行所述内核漏洞补丁的迭代修复。
可选地,修复单元还用于:在利用所述目标操作系统虚拟机环境的虚拟机带外监控机制获取所述内核漏洞补丁修复的验证结果,并根据所述验证结果进行所述内核漏洞补丁的迭代修复的过程中,通过迭代修复测试,从相应的所述漏洞补丁集中筛选出可修复所述内核漏洞的正确内核漏洞补丁,并为内核开发者提供所述内核漏洞的详细信息和所述修复报告,以帮助所述内核开发者更快速便捷的修复所述内核漏洞。
可选地,修复单元还用于:检测到管理员触发的验证操作,其中,所述验证操作用于验证操作系统的所述内核漏洞补丁;根据待修补的所述内核漏洞,在所述操作系统内核漏洞补丁代码信息库中读取相关的所述漏洞补丁集;根据所述操作系统内核版本构建用于漏洞补丁验证的虚拟机(即目标操作系统虚拟机环境);执行针对指定的所述内核漏洞补丁的可用性验证;在构建的虚拟机中完成针对指定的所述内核漏洞补丁的有效性验证;通过KVM提供的虚拟机带外监控机制,获取所述内核漏洞补丁的有效性验证结果,并自动迭代可用性验证和有效性验证,完成针对所述漏洞补丁集中的各个所述内核漏洞补丁的迭代修复验证;完成针对要修补的所述内核漏洞的所述漏洞补丁集的迭代验证流程。
报告输出单元46,用于在完成操作系统的内核漏洞的修复后,生成并输出修复报告。
可选地,报告输出单元还用于:收集的所述内核漏洞补丁的所述补丁可用性验证结果和所述有效性验证结果;依据所述补丁可用性验证结果和所述有效性验证结果,利用有效修复的所述内核漏洞补丁进行漏洞修复,并返回生成的有效性修复报告;依据所述补丁可用性验证结果和所述有效性验证结果,利用无效修复的所述内核漏洞补丁和不可用的所述内核漏洞补丁生成对应错误日志,并返回补丁及漏洞报告。
使用本申请的技术方案,紧密结合Linux操作系统的特点,通过开源内核源码树及多方开放式漏洞公布平台,收录了众多内核漏洞信息及相关漏洞验证代码,通过整理内核漏洞详情信息字段,建立完备的内核漏洞数据库,通过该库能够快速准确的描述内核漏洞信息,规避了内核漏洞分类复杂、数据分散,描述多样化等缺陷,为漏洞对应的补丁集搜集和生成创造了便捷有效的前置信息环境;针对操作系统内核补丁修复验证流程,将繁杂的修复验证流程拆解为基于虚拟化的初始环境构建、补丁可用性验证、补丁有效性验证三个阶段,并通过基于KVM的虚拟化技术和该系统的控制端—客户端组件,将需要耗费大量人工工作的内核构建和验证流程自动化控制,并通过KVM虚拟化技术做到并行化处理,大大减少了人工干预的过程和时间,能够快速的验证大量补丁集并返回验证结果,对后续修改补丁提供了大量有效参考信息,为操作系统内核补丁自动生成技术的进一步研究提供有效的验证方法及环境。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
利用本申请的技术方案中,为了提升操作系统内核漏洞管理的自动化能力,设计了一整套自动化的补丁自动修复和验证框架,能够通过给定内核版本和补丁集,快速的进行自动化补丁验证流程,减少人工干预过程,可以解决相关技术中操作系统内核漏洞管理的效率较低的技术问题,提高补丁验证效率。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种基于虚拟化的内核漏洞补丁的验证方法,其特征在于,包括:
利用操作系统的内核漏洞信息和对应的内核漏洞补丁,构建操作系统内核漏洞补丁代码信息库,所述操作系统内核漏洞补丁代码信息库中包括操作系统内核版本、漏洞编号、漏洞描述、漏洞验证程序以及漏洞补丁集,所述漏洞补丁集中包括多个所述内核漏洞补丁;
基于Linux的KVM虚拟化技术,根据所述操作系统内核版本构建目标操作系统虚拟机环境,其中,所述目标操作系统虚拟机环境用于为所述内核漏洞补丁的循环验证提供基础环境;
依据Linux内核源码树,通过所述内核漏洞信息和所述漏洞补丁集,动态分配资源进行内核编译,以进行补丁可用性验证,得到补丁可用性验证结果;
依据所述补丁可用性验证结果和所述内核漏洞信息,提取由内核可用镜像和漏洞验证程序组成的验证数据集,将所述验证数据集注入所述目标操作系统虚拟机环境中,进行所述内核漏洞补丁的有效性验证;
利用所述目标操作系统虚拟机环境的虚拟机带外监控机制获取所述内核漏洞补丁修复的验证结果,并根据所述验证结果进行所述内核漏洞补丁的迭代修复;
在完成操作系统的所述内核漏洞的修复后,生成并输出修复报告。
2.根据权利要求1所述的方法,其特征在于,在利用所述目标操作系统虚拟机环境的虚拟机带外监控机制获取所述内核漏洞补丁修复的验证结果,并根据所述验证结果进行所述内核漏洞补丁的迭代修复的过程中,所述方法还包括:
通过迭代修复测试,从相应的所述漏洞补丁集中筛选出可修复所述内核漏洞的正确内核漏洞补丁,并为内核开发者提供所述内核漏洞的详细信息和所述修复报告,以帮助所述内核开发者更快速便捷的修复所述内核漏洞。
3.根据权利要求2所述的方法,其特征在于,所述利用操作系统的内核漏洞信息和对应的内核漏洞补丁,构建操作系统内核漏洞补丁代码信息库,包括:
检测到管理员触发的构建操作,其中,所述构建操作用于指示构建所述操作系统内核漏洞补丁代码信息库;
根据要求的操作系统内核版本拉取最新的所述Linux内核源码树,收集操作系统的所述内核漏洞信息和对应的所述内核漏洞补丁;
针对漏洞补丁库中的所述内核漏洞,根据内核错误输出信息生成所述漏洞补丁集,同时收集所述漏洞验证程序,建立完备的所述操作系统内核漏洞补丁代码信息库。
4.根据权利要求3所述的方法,其特征在于,所述基于Linux的KVM虚拟化技术,根据所述操作系统内核版本构建目标操作系统虚拟机环境,包括:
读取收录的操作系统的所述内核漏洞信息,并提取所述操作系统内核版本;
解压纯净版Linux内核源码,切换所述Linux内核源码树中的内核版本到所述内核漏洞所在的所述操作系统内核版本,依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成包含所述内核漏洞的纯净内核镜像;
利用所述纯净内核镜像,依据初始配置的虚拟机构建参数和默认rootfs系统,启动Qemu客户端以构建所述目标操作系统虚拟机环境;
注入所述内核漏洞的所述漏洞验证程序和用于进行操作系统内核补丁的有效性验证的客户端组件到所述目标操作系统虚拟机环境中。
5.根据权利要求4所述的方法,其特征在于,所述依据Linux内核源码树,通过所述内核漏洞信息和所述漏洞补丁集,动态分配资源进行内核编译,以进行补丁可用性验证,得到补丁可用性验证结果,包括:
读取构建的所述操作系统内核漏洞补丁代码信息库,依次读取所述漏洞补丁集中的所述内核漏洞补丁,并将所述内核漏洞补丁运用到在所述内核漏洞所在的所述操作系统内核版本上,生成打补丁结果信息;
依据默认内核源码编译参数,动态分配机器资源进行内核编译,生成打补丁后的内核镜像;
收集对应的编译结果及所述打补丁后的内核镜像,编译成功的则确认对应的所述内核漏洞补丁可用,编译失败的则确认对应的所述内核漏洞补丁不可用,并收集编译失败结果信息,得到所述补丁可用性验证结果。
6.根据权利要求5所述的方法,其特征在于,所述依据所述补丁可用性验证结果和所述内核漏洞信息,提取由内核可用镜像和漏洞验证程序组成的验证数据集,将所述验证数据集注入所述目标操作系统虚拟机环境中,进行所述内核漏洞补丁的有效性验证,包括:
启动所述目标操作系统虚拟机环境中的所述客户端组件,以执行所述漏洞验证程序,收集漏洞触发现场的内核信息;
注入所述打补丁后的内核镜像到所述目标操作系统虚拟机环境中;
执行内核安装过程,将收录的内核安装结果返回至控制端;
执行系统重启过程,并通过所述控制端检测所述目标操作系统虚拟机环境是否正常启动,并收录启动结果;
执行所述漏洞验证程序,收集验证程序结果及内核现场信息后传递给所述控制端;
收集所述内核现场信息和所述验证程序结果,自动判断所述内核漏洞补丁是否有效修复漏洞,是否触发内核崩溃;
若判定结果为所述内核漏洞补丁无效,则将补丁修复结果返回,并启动迭代修复过程;
若判定结果为所述内核漏洞补丁有效,则利用补丁修复结果生成所述修复报告并返回,结束修复流程,以便进入报告生成过程。
7.根据权利要求6所述的方法,其特征在于,所述利用所述目标操作系统虚拟机环境的虚拟机带外监控机制获取所述内核漏洞补丁修复的验证结果,并根据所述验证结果进行所述内核漏洞补丁的迭代修复,包括:
检测到管理员触发的验证操作,其中,所述验证操作用于验证操作系统的所述内核漏洞补丁;
根据待修补的所述内核漏洞,在所述操作系统内核漏洞补丁代码信息库中读取相关的所述漏洞补丁集;
根据所述操作系统内核版本构建用于漏洞补丁验证的虚拟机;
执行针对指定的所述内核漏洞补丁的可用性验证;
在构建的虚拟机中完成针对指定的所述内核漏洞补丁的有效性验证;
通过KVM提供的虚拟机带外监控机制,获取所述内核漏洞补丁的有效性验证结果,并自动迭代可用性验证和有效性验证,完成针对所述漏洞补丁集中的各个所述内核漏洞补丁的迭代修复验证;
完成针对要修补的所述内核漏洞的所述漏洞补丁集的迭代验证流程;
所述在完成操作系统的内核漏洞的修复后,生成并输出修复报告,包括:
收集的所述内核漏洞补丁的所述补丁可用性验证结果和所述有效性验证结果;
依据所述补丁可用性验证结果和所述有效性验证结果,利用有效修复的所述内核漏洞补丁进行漏洞修复,并返回生成的有效性修复报告;
依据所述补丁可用性验证结果和所述有效性验证结果,利用无效修复的所述内核漏洞补丁和不可用的所述内核漏洞补丁生成对应错误日志,并返回补丁及漏洞报告。
8.一种基于虚拟化的内核漏洞补丁的验证装置,其特征在于,包括:
补丁构建单元,用于利用操作系统的内核漏洞信息和对应的内核漏洞补丁,构建操作系统内核漏洞补丁代码信息库,所述操作系统内核漏洞补丁代码信息库中包括操作系统内核版本、漏洞编号、漏洞描述、漏洞验证程序以及漏洞补丁集;
环境构建单元,用于基于Linux的KVM虚拟化技术,根据所述操作系统内核版本构建目标操作系统虚拟机环境,其中,所述目标操作系统虚拟机环境用于为所述内核漏洞补丁的循环验证提供基础环境;
可用性验证单元,用于依据Linux内核源码树,通过所述内核漏洞信息和所述漏洞补丁集,动态分配资源进行内核编译,以进行补丁可用性验证,得到补丁可用性验证结果;
有效性验证单元,用于依据所述补丁可用性验证结果和所述内核漏洞信息,提取由内核可用镜像和漏洞验证程序组成的验证数据集,将所述验证数据集注入所述目标操作系统虚拟机环境中,进行所述内核漏洞补丁的有效性验证;
修复单元,用于利用所述目标操作系统虚拟机环境的虚拟机带外监控机制获取所述内核漏洞补丁修复的验证结果,并根据所述验证结果进行所述内核漏洞补丁的迭代修复;
报告输出单元,用于在完成操作系统的内核漏洞的修复后,生成并输出修复报告。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至7任一项中所述的方法。
CN202211106239.8A 2022-09-09 2022-09-09 基于虚拟化的内核漏洞补丁的验证方法和装置 Pending CN116305133A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211106239.8A CN116305133A (zh) 2022-09-09 2022-09-09 基于虚拟化的内核漏洞补丁的验证方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211106239.8A CN116305133A (zh) 2022-09-09 2022-09-09 基于虚拟化的内核漏洞补丁的验证方法和装置

Publications (1)

Publication Number Publication Date
CN116305133A true CN116305133A (zh) 2023-06-23

Family

ID=86794804

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211106239.8A Pending CN116305133A (zh) 2022-09-09 2022-09-09 基于虚拟化的内核漏洞补丁的验证方法和装置

Country Status (1)

Country Link
CN (1) CN116305133A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117348915A (zh) * 2023-12-06 2024-01-05 麒麟软件有限公司 一种内核代码自动同步方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117348915A (zh) * 2023-12-06 2024-01-05 麒麟软件有限公司 一种内核代码自动同步方法及系统
CN117348915B (zh) * 2023-12-06 2024-04-05 麒麟软件有限公司 一种内核代码自动同步方法及系统

Similar Documents

Publication Publication Date Title
CN110572436B (zh) 多地跨集群的服务器部署方法及系统
US10496527B2 (en) System and method for rapid and repeatable provisioning and regression testing plans
CN111078554B (zh) 一种小程序调试方法、装置、设备及存储介质
US20090307763A1 (en) Automated Test Management System and Method
US20210326196A1 (en) A remediation system to prevent incompatible program module installation in an information processing system
CN110633200A (zh) 用于测试智能合约的方法和设备
CN106330599B (zh) Android应用程序网络流量多线程采集系统及方法
CN111813495B (zh) 节点测试方法和装置、存储介质和电子装置
AU2022209731B2 (en) Distributed immutable data object testing
CN110119350A (zh) 软件开发工具包测试方法、装置和设备及计算机存储介质
CN110727575A (zh) 一种信息处理方法、系统、装置、以及存储介质
CN111258591A (zh) 程序部署任务执行方法、装置、计算机设备和存储介质
CN102572896A (zh) 一种无线通讯系统升级方法及升级装置
CN116305133A (zh) 基于虚拟化的内核漏洞补丁的验证方法和装置
CN109583192A (zh) 一种基于仿真的移动终端应用固定保全系统及方法
CN115437925A (zh) 用于操作系统的功能自动化测试工具
CN112000567A (zh) 一种基于云平台的调控软件测试服务方法
KR102365841B1 (ko) 서비스 기능 체인을 위한 자가 치유 방법 및 그 시스템
US20230359746A1 (en) Systems and methods for shift left testing
CN115357258B (zh) 应用的部署方法、装置、存储介质及电子装置
CN113704081B (zh) 一种应用程序兼容性自动化测试方法和系统
CN116244186A (zh) 一种操作系统测试管理方法、装置与计算设备
CN115759518A (zh) 基于混沌工程的可用性治理系统
CN113656291A (zh) 软件脚本引擎动态调用方法
CN112612495B (zh) 升级保护方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination