组件漏洞修复方法、装置、电子设备及存储介质与流程

allin2026-02-27  28


本申请涉及漏洞修复,特别是涉及一种组件漏洞修复方法、装置、电子设备及存储介质。


背景技术:

1、随着开源社区的发展和组件依赖包管理机制的逐步完善,开发人员在开发软件过程中会引入大量的第三方组件来减少开发工作量,与此同时也会引入该第三方组件所包含的漏洞。

2、对于开发人员而言,修复非自己研发的第三方组件比较困难。目前相关技术通过使用没有漏洞的组件进行版本升级的方式实现漏洞修复,但这种方式无法修复未发布更新版本的组件漏洞,并且更新版本可能会存在兼容性的问题,导致原有程序代码无法正常运行。


技术实现思路

1、鉴于相关技术中的上述缺陷或不足,期望提供一种组件漏洞修复方法、装置、电子设备及存储介质,能够自动地及时修复组件漏洞,无需等待组件版本更新。

2、第一方面,本申请提供一种组件漏洞修复方法,所述组件漏洞修复方法包括:

3、获取待修复组件的漏洞信息,并对所述待修复组件进行静态分析,定位所述待修复组件的漏洞位置;

4、根据所述漏洞信息,确定所述待修复组件的漏洞类型;

5、通过所述漏洞类型对应的不同检测器,分别对所述漏洞位置的程序代码进行检测,并基于检测结果和预设规则修复所述漏洞位置的程序代码;

6、验证经过修复的所述漏洞位置的程序代码。

7、可选地,在本申请一些实施例中,所述漏洞类型包括结构化查询语言注入类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

8、若所述检测结果包括漏洞模式以及所述程序代码的编程语言和运行参数图,所述运行参数图用于表征所述程序代码的待威胁位置,则根据所述漏洞模式和所述编程语言,在所述待威胁位置对应的触发语句之前添加过滤节点。

9、可选地,在本申请一些实施例中,所述漏洞类型包括命令注入类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

10、若所述检测结果包括所述程序代码的编程语言、危险函数位置以及危险函数类型,则根据所述编程语言和所述危险函数类型,将所述危险函数位置处的危险函数替换为与所述危险函数类型相同的安全函数;

11、或者,若所述检测结果包括与所述程序代码不相关的危险命令,则在所述程序代码中添加判断语句,所述判断语句用于跳过所述危险命令的执行;

12、或者,若所述检测结果包括特殊字符,则利用正则表达式对所述特殊字符进行清洗。

13、可选地,在本申请一些实施例中,所述漏洞类型包括指针类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

14、若所述检测结果为指针使用后未释放,则在所述指针的最终作用域之后添加释放代码或者将所述指针替换为智能指针;

15、或者,若所述检测结果为使用悬浮指针,则将所述悬浮指针指向合法内存地址或者将所述悬浮指针设置为空值;

16、或者,若所述检测结果为引用空指针,则在所述程序代码中添加条件语句进行判空处理以跳过后续代码的执行。

17、可选地,在本申请一些实施例中,所述漏洞类型包括溢出类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

18、若所述检测结果包括数据输入点和数据溢出点,则在所述数据输入点的代码片段处添加输入验证代码以及在所述数据溢出点的代码片段处添加边界检查代码,所述输入验证代码和所述边界检查代码用于检测输入参数,并当所述输入参数不符合预设条件时跳过后续代码的执行。

19、可选地,在本申请一些实施例中,若所述检测结果还包括危险调用库,则将所述危险调用库替换为安全调用库。

20、可选地,在本申请一些实施例中,所述溢出类型包括缓冲区溢出、整数溢出和数组越界中的任意一种。

21、第二方面,本申请提供一种组件漏洞修复装置,所述组件漏洞修复装置包括:

22、定位模块,配置用于获取待修复组件的漏洞信息,并对所述待修复组件进行静态分析,定位所述待修复组件的漏洞位置;

23、确定模块,配置用于根据所述漏洞信息,确定所述待修复组件的漏洞类型;

24、修复模块,配置用于通过所述漏洞类型对应的不同检测器,分别对所述漏洞位置的程序代码进行检测,并基于检测结果和预设规则修复所述漏洞位置的程序代码;

25、验证模块,配置用于验证经过修复的所述漏洞位置的程序代码。

26、第三方面,本申请提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现第一方面中任意一项所述的组件漏洞修复方法的步骤。

27、第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面中任意一项所述的组件漏洞修复方法的步骤。

28、从以上技术方案可以看出,本申请实施例具有以下优点:

29、本申请实施例提供了一种组件漏洞修复方法、装置、电子设备及存储介质,通过主动获取待修复组件的漏洞信息来确定该待修复组件的漏洞类型,以及对待修复组件进行静态分析来定位该待修复组件的漏洞位置,然后利用漏洞类型对应的不同检测器,分别检测漏洞位置的程序代码,进而能够基于检测结果和预设规则自动地修复漏洞位置的程序代码,及时高效,无需等待组件版本更新,并且还能够对经过修复的漏洞位置的程序代码进行验证,确保正确和兼容性。



技术特征:

1.一种组件漏洞修复方法,其特征在于,所述组件漏洞修复方法包括:

2.根据权利要求1所述的组件漏洞修复方法,其特征在于,所述漏洞类型包括结构化查询语言注入类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

3.根据权利要求1所述的组件漏洞修复方法,其特征在于,所述漏洞类型包括命令注入类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

4.根据权利要求1至3中任意一项所述的组件漏洞修复方法,其特征在于,所述漏洞类型包括指针类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

5.根据权利要求1至3中任意一项所述的组件漏洞修复方法,其特征在于,所述漏洞类型包括溢出类型,所述基于检测结果和预设规则修复所述漏洞位置的程序代码,包括:

6.根据权利要求5所述的组件漏洞修复方法,其特征在于,若所述检测结果还包括危险调用库,则将所述危险调用库替换为安全调用库。

7.根据权利要求5所述的组件漏洞修复方法,其特征在于,所述溢出类型包括缓冲区溢出、整数溢出和数组越界中的任意一种。

8.一种组件漏洞修复装置,其特征在于,所述组件漏洞修复装置包括:

9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现权利要求1至7中任意一项所述的组件漏洞修复方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至7中任意一项所述的组件漏洞修复方法的步骤。


技术总结
本申请公开了一种组件漏洞修复方法、装置、电子设备及存储介质,涉及漏洞修复技术领域。该组件漏洞修复方法包括获取待修复组件的漏洞信息,并对所述待修复组件进行静态分析,定位所述待修复组件的漏洞位置;根据所述漏洞信息,确定所述待修复组件的漏洞类型;通过所述漏洞类型对应的不同检测器,分别对所述漏洞位置的程序代码进行检测,并基于检测结果和预设规则修复所述漏洞位置的程序代码;验证经过修复的所述漏洞位置的程序代码。采用本申请的组件漏洞修复方法,不仅能够自动修复组件漏洞,及时高效,无需等待组件版本更新,还能够确保正确和兼容性。

技术研发人员:肖华,杨轩,岳贯集,孙基男
受保护的技术使用者:北京北大软件工程股份有限公司
技术研发日:
技术公布日:2024/10/31
转载请注明原文地址: https://www.8miu.com/read-27010.html

最新回复(0)