内核漏洞修复方法和装置-复审决定


发明创造名称:内核漏洞修复方法和装置
外观设计名称:
决定号:187084
决定日:2019-08-16
委内编号:1F243966
优先权日:
申请(专利)号:201610191535.0
申请日:2016-03-30
复审请求人:百度在线网络技术(北京)有限公司
无效请求人:
授权公告日:
审定公告日:
专利权人:
主审员:郭明华
合议组组长:张乾桢
参审员:赵昕
国际分类号:G06F21/57
外观设计分类号:
法律依据:专利法第22条第3款
决定要点
:如果一项权利要求所请求保护的技术方案与作为最接近的现有技术的对比文件相比存在区别技术特征,但该区别技术特征属于本领域的常用技术手段,则该项权利要求所请求保护的技术方案不具备创造性。
全文:
本复审请求涉及申请号为201610191535.0,名称为“内核漏洞修复方法和装置”的发明专利申请(下称本申请)。本申请的申请人为百度在线网络技术(北京)有限公司,申请日为2016年03月30日,公开日为2016年08月17日。
经实质审查,国家知识产权局实质审查部门于2017年10月18日发出驳回决定,以权利要求1-14不具备专利法第22条第3款规定的创造性为由,驳回了本申请。驳回决定所依据的文本为:申请日2016年03月30日提交的权利要求第1-14项、说明书第1-13页、说明书附图第1-4页、说明书摘要及摘要附图。
驳回决定所针对的权利要求书内容如下:
“1. 一种内核漏洞修复方法,其特征在于,所述方法包括:
确定待加载在内存中的预设漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址,所述预设漏洞修复指令基于对预设漏洞修复代码进行编译而生成;
基于内存地址,配置预设漏洞修复指令调用内核函数或变量时所需的内核符号的地址;
确定待修复内核中用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间;
在所述存储空间加载所述预设漏洞修复指令,以对待修复内核中的漏洞进行修复。
2. 根据权利要求1所述的方法,其特征在于,确定待修复内核中用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间包括:
将待修复内核中的预设存储空间作为用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间,所述预设存储空间包括:具有可执行权限的存储空间。
3. 根据权利要求1所述的方法,其特征在于,确定待修复内核中用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间包括:
将预设内核函数在待修复内核中对应的存储空间作为用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间。
4. 根据权利要求1所述的方法,其特征在于,确定待修复内核中用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间包括:
在预设内核函数在待修复内核中对应的存储空间加载预设存储空间分配指令,以及生成预设大小的存储空间;
将生成的存储空间作为用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间。
5. 根据权利要求1-4之一所述的方法,其特征在于,在所述存储空间加载所述预设漏洞修复指令,以对待修复内核中的漏洞进行修复包括:
获取待修复内核中的待修复的内核函数的内存地址;
将待修复内核中的系统调用表中的所述内存地址替换为预设内存地址。
6. 根据权利要求1-4之一所述的方法,其特征在于,在所述存储空间加载所述预设漏洞修复指令,以对待修复内核中的漏洞进行修复包括:
获取待修复内核中的待修复的内核函数对应的存储空间;
将修复后的内核函数拷贝至所述存储空间。
7. 根据权利要求1所述的方法,其特征在于,在确定待加载在内存中的预设漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址之前,所述方法还包括:
获取待修复内核的属性信息和待修复内核中的内核函数或变量的内存地址,所述属性信息包括:待修复内核所运行在的处理器的架构信息、内核版本信息;
将所述属性信息与所述内存地址对应存储。
8. 一种内核漏洞修复装置,其特征在于,所述装置包括:
地址确定单元,配置用于确定待加载在内存中的预设漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址,所述预设漏洞修复指令基于对预设漏洞修复代码进行编译而生成;
设置单元,配置用于基于内存地址,配置预设漏洞修复指令调用内核函数或变量时所需的内核符号的地址;
空间确定单元,配置用于确定待修复内核中用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间;
加载单元,配置用于在所述存储空间加载所述预设漏洞修复指令,以对待修复内核中的漏洞进行修复。
9. 根据权利要求8所述的装置,其特征在于,空间确定单元包括:
第一存储空间配置子单元,配置用于将待修复内核中的预设存储空间作为用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间,所述预设存储空间包括:具有可执行权限的存储空间。
10. 根据权利要求8所述的装置,其特征在于,空间确定单元包括:
第二存储空间配置子单元,配置用于将预设内核函数在待修复内核中对应的存储空间作为用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间。
11. 根据权利要求8所述的装置,其特征在于,空间确定单元包括:
存储空间分配子单元,配置用于在预设内核函数在待修复内核中对应的存储空间加载预设存储空间分配指令,以及生成预设大小的存储空间;
第三存储空间配置子单元,配置用于将生成的存储空间作为用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间。
12. 根据权利要求8-11之一所述的装置,其特征在于,所述加载单元包括:
内存地址获取子单元,配置用于获取待修复内核中的待修复的内核函数的内存地址;
替换子单元,配置用于将待修复内核中的系统调用表中的所述内存地址替换为预设内存地址。
13. 根据权利要求8-11之一所述的装置,其特征在于,所述加载单元包括:
存储空间获取子单元,配置用于获取待修复内核中的待修复的内核函数对应的存储空间;
拷贝子单元,配置用于将修复后的内核函数拷贝至所述存储空间。
14. 根据权利要求7所述的装置,其特征在于,所述装置还包括:
信息获取单元,配置用于获取待修复内核的属性信息和待修复内核中的内核函数或变量的内存地址,所述属性信息包括:待修复内核所运行在的处理器的架构信息、内核版本信息;
存储单元,配置用于将所述属性信息与所述内存地址对应存储。”
驳回决定中引用如下对比文件:
对比文件2:CN101281488A,公开日:2008年10月08日。
驳回决定的具体理由为:(1)权利要求1与对比文件2的区别特征在于:预设漏洞修复指令代码/指令用于对待修复内核中的漏洞进行修复。上述区别特征属于本领域的常用技术手段。因此,权利要求1不具备创造性。(2)从属权利要求2-7的附加技术特征或被对比文件2公开,或属于本领域的常用技术手段。因此,权利要求2-7也不具备创造性。(3)权利要求8-14是与方法权利要求1-7对应的产品权利要求,参照对权利要求1-7的评述,权利要求8-14同样不具备创造性。
申请人(下称复审请求人)对上述驳回决定不服,于2018年02月01日向国家知识产权局提出了复审请求,并提交了权利要求书的全文修改替换页(包括权利要求第1-12项)。所作修改包括:将从属权利要求6、13的特征加入独立权利要1、8中,得到修改后的权利要求1、7。复审请求人认为:(1)对比文件2中的临时内核与待调试的内核即原始内核的版本相关,对比文件2中的临时内核只能加载在该待调试的内核或与待调试的内核的版本相同的内核中,而无法加载在与待调试的内核的版本不同的版本的内核中。计算机指令与内核的版本无关,计算机指令可以加载在多个不同版本的内核中。相应地,本申请中的预设漏洞修复指令与待修复的内核的版本无关。因此,本申请中的预设漏洞修复指令与对比文件2中的临时内核是不同的对象。相应地,本申请中确定预设漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址与对比文件2中确定临时内核使用的函数在待调试的内核中的地址是不同的操作。(2)对比文件2中,在原始内核的函数的入口放置函数跳转表,截获所有对原始内核的函数的调用,当调用原始内核的函数时自动跳转至临时内核的替换函数处。对比文件2跳转执行的过程与对出现问题的内核函数进行修复毫无关联。在本申请中,在利用预设漏洞修复指令对待修复的内核中的待修复的函数进行修复时,可以获取待修复内核中的待修复的内核函数对应的存储空间;将修复后的内核函数拷贝至待修复内核中的待修复的内核函数对应的存储空间,完成对一个内核中的出现问题的内核函数的修复。因此,本申请具备创造性。
提交复审请求时修改的权利要求1、7的内容如下:
“1. 一种内核漏洞修复方法,其特征在于,所述方法包括:
确定待加载在内存中的预设漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址,所述预设漏洞修复指令基于对预设漏洞修复代码进行编译而生成;
基于内存地址,配置预设漏洞修复指令调用内核函数或变量时所需的内核符号的地址;
确定待修复内核中用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间;
在所述存储空间加载所述预设漏洞修复指令,以对待修复内核中的漏洞进行修复,在所述存储空间加载所述预设漏洞修复指令,以对待修复内核中的漏洞进行修复包括:获取待修复内核中的待修复的内核函数对应的存储空间;将修复后的内核函数拷贝至所述存储空间。”
“7. 一种内核漏洞修复装置,其特征在于,所述装置包括:
地址确定单元,配置用于确定待加载在内存中的预设漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址,所述预设漏洞修复指令基于对预设漏洞修复代码进行编译而生成;
设置单元,配置用于基于内存地址,配置预设漏洞修复指令调用内核函数或变量时所需的内核符号的地址;
空间确定单元,配置用于确定待修复内核中用于加载对预设漏洞修复指令所需的内核符号的地址进行配置后的预设漏洞修复指令的存储空间;
加载单元,配置用于在所述存储空间加载所述预设漏洞修复指令,以对待修复内核中的漏洞进行修复,所述加载单元包括:存储空间获取子单元,配置用于获取待修复内核中的待修复的内核函数对应的存储空间;拷贝子单元,配置用于将修复后的内核函数拷贝至所述存储空间。”
经形式审查合格,国家知识产权局于2018年03月08日依法受理了该复审请求,并将其转送至实质审查部门进行前置审查。
实质审查部门在前置审查意见书中坚持驳回决定。
随后,国家知识产权局成立合议组对本案进行审理。
合议组于2019年03月28日向复审请求人发出复审通知书,指出:权利要求1-12不具备专利法第22条第3款规定的创造性。针对复审请求人的相关意见,合议组认为:(1)首先,对比文件2中的临时模块也属于指令,只是以模块的形式装载到内核,在本领域中,内核模块装载时一般对其进行内核版本信息校验,但是为了方便内核开发,本领域中存在多种绕过内核版本信息校验的手段,例如:修改内核模块中的CRC值,使模块能够运行在不同的内核版本中。因此,将内核模块改为不需要内核版本校验的指令,以提高内核开发效率,这属于本领域的常用技术手段。其次,本申请首先获取内核的内核符号表,然后,根据内核符号表中定义的内核符号对应的内核函数或变量在内核中的内存地址,确定漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址。同样的,对比文件2也是根据内核符号表中相应函数的内核符号地址来确定临时内核中使用的函数在内核中的地址。因此,本申请中确定预设漏洞修复指令中的内核符号所指示的内核函数或变量在待修复内核中的内存地址与对比文件2中确定临时内核使用的函数在待调试的内核中的地址是相同的操作。第三,由于内核符号所指示的内核函数或变量在内核中的内存地址是因内核版本的不同而不同的,因此,本申请和对比文件2中确定内核符号所指示的内存地址的具体操作是针对一个内核版本的操作,若内核版本改变,则需要根据当前内核的内核符号表重新确定内核符号所指示的内存地址。(2)对比文件2公开的替换内核函数的方式也可以用于内核中预设漏洞的修复,这属于本领域的常用技术手段。另外,关于替换方式,可以采用函数地址替换的方式(例如对比文件2公开的方式以及本申请权利要求5的方式),也可以采用函数内容拷贝的方式,这两种方式均属于本领域在存储器内容替换时的常用技术手段。综上,合议组对复审请求人陈述的意见不予支持。
复审请求人于2019年04月29日提交了意见陈述书,但未修改申请文件。复审请求人认为:首先,依据对比文件2的说明书记载的内容可以毫无疑义地确定出,对比文件2的内核调试方法仅适用于Linux的模块机制,而当操作系统不是Linux或操作系统未采用模块机制时,对比文件2的内核调试方法无法适用。因此,在对比文件2的基础上,不管上述区别技术特征是否为本领域的常用技术手段,本领域技术人员都难以想到将上述区别技术特征与对比文件2结合,从而得不到本申请权利要求1要求保护的技术方案。其次,对比文件2中对内核中的函数的替换是临时的,其在内核调试完成之后要恢复成原始内核,而临时替换内核函数的方法显然不适用于内核漏洞修复。因此,对比文件2中替换内核函数的方式不适用于内核中预设漏洞的修复。因而本申请具备创造性。
合议组于2019年05月08日发出合议组成员变更通知书,在上述合议组成员变更通知书所指定的期限内复审请求人未作答复,因此视为无回避请求。
在上述程序的基础上,合议组认为本案事实已经清楚,可以依法作出审查决定。
二、决定的理由
审查文本的认定
复审请求人于2019年04月29日答复复审通知书时未对申请文件进行修改。本复审请求审查决定所依据的审查文本与复审通知书针对的文本相同,为:2018年02月01日提交的权利要求第1-12项,申请日2016年03月30日提交的说明书第1-13页、说明书附图第1-4页、说明书摘要及摘要附图。
关于专利法第22条第3款
专利法第22条第3款规定:创造性,是指与现有技术相比,该发明具有突出的实质性特点和显著的进步,该实用新型具有实质性特点和进步。
如果一项权利要求所请求保护的技术方案与作为最接近的现有技术的对比文件相比存在区别技术特征,但该区别技术特征属于本领域的常用技术手段,则该项权利要求所请求保护的技术方案不具备创造性。
本复审请求审查决定所引用的对比文件与复审通知书以及驳回决定中所引用的对比文件相同,即:
对比文件2:CN101281488A,公开日:2008年10月08日。
2.1、权利要求1请求保护一种内核漏洞修复方法,对比文件2公开了一种Linux操作系统的内核调试方法,并具体公开了以下技术特征(参见权利要求1-8,说明书第4-6页):将需要修改和调试的内核部分以内核模块的方式编译成临时内核(内核模块是一组代码,其编译生成的临时内核属于指令,相当于“指令基于对代码进行编译而生成”);内核装载工具包括符号定位模块、内核拷贝模块、内核修改模块、内核空间分配模块、内核装配模块、内核入口保存模块;符号定位模块,对临时内核的编译过程中所编译的临时内核中的函数、内核提供的外部函数、内核使用的内部函数进行定位,即获取相应函数的内核符号地址(相当于“确定指令中的内核符号所指示的内核函数或变量在内核中的内存地址”);内核空间分配模块,统计临时内核所占用的内核空间容量,并调用内核的内存分配函数以分配相应的内核空间地址,用以存放临时内核(相当于“确定内核中用于加载指令所需的内核符号的地址进行配置后的指令的存储空间”);内核装配模块,在用户空间对临时内核进行装配,首先调用符号定位模块进行解析,根据临时内核中使用的函数的类别找出其在内核中的地址,对于内核提供的外部函数,通过内核所提供的函数链表进行定位,搜索内核的函数链表,取出其中的地址,对于内核使用的内部函数,从内核符号表中获取该函数所对应的内核符号地址,然后在所有的函数使用处填上相应的偏移量(相当于“基于内存地址,配置指令调用内核函数或变量时所需的内核符号的地址”);内核拷贝模块,在临时内核装配完成后将修改过的临时内核拷贝到内核空间分配模块所分配的内核空间地址(相当于“在所述存储空间加载所述指令”);内核修改模块,修改Linux内核,在Linux内核的待替换函数的入口放入一个函数跳转表入口,跳转到临时内核中的替换目标函数;内核函数入口保存模块,保存待替换函数的入口的代码。
权利要求1所请求保护的技术方案与对比文件2公开的内容相比,其区别技术特征为:(1)权利要求1的预设漏洞修复指令属于指令,用于修复内核漏洞;对比文件2中的临时模块属于内核模块,用于内核调试;(2)获取待修复内核中的待修复的内核函数对应的存储空间;将修复后的内核函数拷贝至所述存储空间。基于上述区别,本申请实际要解决的技术问题是:(1)如何确定修改内核的指令的形式及应用领域;(2)如何确定修改内核函数的方式。
关于区别技术特征(1),首先,对比文件2中的临时模块也属于指令,只是以模块的形式装载到内核,对本领域技术人员来说,以指令的方式修复内核漏洞属于本领域的常用技术手段。其次,对比文件2公开了以临时模块中的替换函数来替换内核中原始函数的方式进行内核调试,对本领域技术人员来说,内核中漏洞的修复通常是用新的内核函数替换存在漏洞的内核函数,即对比文件2中替换内核函数的方式也可以用于内核中预设漏洞的修复,这属于本领域的常用技术手段。
关于区别技术特征(2),对本领域技术人员来说,替换函数的方式通常有两种,一是替换函数地址,二是替换函数内容,“获取待修复内核中的待修复的内核函数对应的存储空间;将修复后的内核函数拷贝至所述存储空间”是以替换函数内容的方式修复内核漏洞,属于本领域的常用技术手段。
由此可知,在对比文件2的基础上结合本领域的常用技术手段,得出权利要求1的技术方案对本领域技术人员来说是显而易见的,因此,权利要求1所请求保护的技术方案不具有突出的实质性特点,不具备专利法第22条第3款规定的创造性。
2.2、权利要求2引用权利要求1。对比文件2公开了(参见权利要求3,说明书第5页第2段):内核空间分配模块,统计临时内核所占用的内核空间容量,并调用内核的内存分配函数以分配相应的内核空间地址,用于存放临时内核(相当于“将内核中的预设存储空间作为用于加载对指令所需的内核符号的地址进行配置后的指令的存储空间”,由于在分配的内核空间运行临时内核进行调试,因此隐含公开了分配的内核空间具有可执行权限)。对本领域技术人员来说,对比文件2公开的替换内核函数的方式也可以用于内核中预设漏洞的修复,这属于本领域的常用技术手段。因此,在其引用的权利要求不具备创造性的前提下,该权利要求也不具备专利法第22条第3款规定的创造性。
2.3、权利要求3引用权利要求1,对本领域技术人员来说,将预设内核函数在内核中对应的存储空间作为用于加载指令的存储空间,这属于本领域的常用技术手段。并且,对比文件2公开的替换内核函数的方式也可以用于内核中预设漏洞的修复,这也属于本领域的常用技术手段。因此,在其引用的权利要求不具备创造性的前提下,该权利要求也不具备专利法第22条第3款规定的创造性。
2.4、权利要求4引用权利要求1。对比文件2已经公开了(参见权利要求3,说明书第5页第2段):内核空间分配模块,统计临时内核所占用的内核空间容量,并调用内核的内存分配函数以分配相应的内核空间地址,用于存放临时内核(相当于“加载预设存储空间分配指令,以及生成预设大小的存储空间;将生成的存储空间作为用于加载对指令所需的内核符号的地址进行配置后的指令的存储空间”)。对于本领域技术人员来说,在预设内核函数在内核中对应的存储空间加载预设存储空间分配指令,这属于本领域的常用技术手段。并且,对比文件2公开的替换内核函数的方式也可以用于内核中预设漏洞的修复,这也属于本领域的常用技术手段。因此,在其引用的权利要求不具备创造性的前提下,该权利要求也不具备专利法第22条第3款规定的创造性。
2.5、权利要求5引用权利要求1-4之一。对比文件2公开了(参见权利要求3,说明书第5页第5段):内核修改模块修改Linux内核,在Linux内核的待替换函数的入口放入一个函数跳转表入口,跳转到临时内核中的替换目标函数(相当于“获取内核中的内核函数的内存地址,将内存地址替换为预设内存地址)。对本领域技术人员来说,对比文件2公开的替换内核函数的方式也可以用于内核中预设漏洞的修复,这属于本领域的常用技术手段。因此,在其引用的权利要求不具备创造性的前提下,该权利要求也不具备专利法第22条第3款规定的创造性。
2.6、权利要求6引用权利要求1。对于本领域技术人员来说,由于不同处理器架构、不同内核版本的内核部分是不能混用的,为了使修改的内核部分可以正常运行,可以获取待修复内核的处理器架构信息、内核版本信息等属性信息,将属性信息与待修复内核中的内核函数或变量的内存地址对应存储,这些属于本领域的常用技术手段。因此,在其引用的权利要求不具备创造性的前提下,该权利要求也不具备专利法第22条第3款规定的创造性。
2.7、权利要求7-12是与方法权利要求1-6对应的产品权利要求,基于与评述权利要求1-6相同的证据与理由,权利要求7-12也不具备专利法第22条第3款规定的创造性。
对复审请求人相关意见的评述
对于复审请求人答复复审通知书时提出的意见,合议组认为:
首先,依据本申请说明书的记载(参见说明书第[0007],[0027]-[0030]段),本申请要解决的问题是使漏洞修复指令适用于各种版本的内核中加载,并仅以Linux操作系统为例,说明通过Linux内核版本信息及Linux内核符号表获得内核函数的内存地址的方法,因此,本申请的方案适用于Linux操作系统中的不同Linux内核版本。对比文件2公开了在Linux操作系统中以内核模块的方式调试内核的方法,在本领域中,装载内核模块时一般需要校验内核版本信息,但是为了方便内核开发,本领域中存在多种绕过内核版本信息校验的手段,例如:修改内核模块中的CRC值,使内核模块能够运行在不同的内核版本中。因此,在结合了本领域的常用技术手段的基础上,对比文件2的方案同样适用于Linux操作系统的各种内核版本。
其次,权利要求1的内核漏洞修复和对比文件2的内核调试都用到函数替换,权利要求1是用修复后的函数替换内核中存在漏洞的函数,对比文件2是在内核调试时用替换函数替换原始内核函数,在调试完成后恢复成原始内核。然而,对比文件2中确定待替换函数的内存地址、配置替换函数的地址、分配替换函数的存储空间、加载替换函数等的方式与权利要求1是一样的,二者仅是由于应用领域不同而导致函数替换后一个需要恢复原始内核,一个不需要。因此,本领域技术人员容易将对比文件2中替换内核函数的方式应用于内核漏洞修复,并根据应用领域的不同在函数替换后选择不恢复原始内核。
因此,复审请求人的意见陈述不具有说服力,合议组不予支持。
在上述工作的基础上,合议组依法作出如下复审请求审查决定。
三、决定
维持国家知识产权局于2017年10月18日对本申请作出的驳回决定。
如对本复审请求审查决定不服,根据专利法第41条第2款的规定,复审请求人可以自收到本复审请求审查决定之日起三个月内向北京知识产权法院起诉。



郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 0 条评论)
   
验证码: