System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于cve漏洞的管理和修复机制,具体涉及一种golang软件包自动修复cve漏洞的方法及系统。
技术介绍
1、cve(common vulnerabilities and exposures)漏洞是一个网安技术术语,用于描述和标识信息安全领域的已知漏洞和安全风险。golang因其高性能、跨平台等特性,成为云计算、微服务、分布式系统等领域的热门编程语言,使用golang开发的软件包越来越多。
2、龙芯和申威架构是中国自主研发的处理器架构,随着国产化替代的发展,越来越多的云计算基础设施采用了龙芯(loongarch64)和申威(sw_64)处理器。
3、在社区中,使用golang开发的软件包大多仅支持aarch64和x86_64架构的处理器。为了适配龙芯和申威架构处理器,linux发行版的开发者普遍在源码中添加压缩格式的vendor.tar,以支持在龙芯和申威架构的linux操作系统上完成软件包构建。受龙芯架构和申威架构的设计差异化影响,一个软件包为了同时支持龙芯和申威架构,可能会为龙芯和申威架构分别提供一个架构适配的vendor.tar包,其包含了“vendor/golang.org/x”子目录,其中包含各种必需的子包。一般而言,影响架构适配的源码,主要是golang的sys和sys/unix子包,其中:golang.org/x/sys是一个包含各种系统调用和低级别操作系统接口的go包集合,这些包提供了对操作系统功能的访问,通常是标准库中未涵盖的功能;golang.org/x/sys/unix是s
4、在linux操作系统发展过程中,cve漏洞对信息安全构成了严重威胁。golang在演进过程中,同样会有可能因为代码健壮性等原因从而影响系统的稳定性、安全性,例如影响golang的sys/unix子包的cve-2022-29526、cve-2022-41721等。要修复这些cve,每一个附带有架构适配源码的golang软件包都需要针对其架构适配源码做一次补丁修复。软件包数量在增多的过程中,明显会增加维护软件包复杂度,并且提高人力开销,尤其是软件包为龙芯和申威架构分别提供架构适配源码的情况下,将变得更加复杂。在使用rpm(rpm packagemanager)包管理器和obs(open build service)编译系统的linux发行版演进过程中,当golang的sys和(或)unix模块发现cve漏洞时,当前没有能为做了龙芯和申威架构适配的golang软件包自动解决cve漏洞的方法。
技术实现思路
1、本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种golang软件包自动修复cve漏洞的方法及系统,本专利技术旨在解决使用golang语言开发的golang软件包附带的龙芯和申威等架构适配代码受cve漏洞影响的问题,以及在golang软件包数量较多时维护cve漏洞复杂度过高和耗费人力过多的问题。
2、为了解决上述技术问题,本专利技术采用的技术方案为:
3、一种golang软件包自动修复cve漏洞的方法,包括下述步骤:在使用rpm包管理器和obs编译系统的linux发行版中通过引入的标签机制维护管理golang软件包的版本标签值,在引入新golang软件包、golang软件包版本升级以及修复golang软件的cve漏洞时通过版本标签值的变化使得obs编译系统自动触发重新编译,并将重新编译的golang软件包存储到rpm软件包仓库以实现对golang软件包的cve漏洞自动修复。
4、可选地,在使用rpm包管理器和obs编译系统的linux发行版中引入的标签机制包括构建rpm包的标签管理宏软件包,所述rpm包的标签管理宏软件包包括标签操作宏函数_golabel、sys子包替换宏函数_copy_golang_sys、unix子包替换宏函数_copy_golang_unix、sys_unix子包替换宏函数_copy_golang_sys_unix和存储路径定义宏_golabel_db,其中标签操作宏函数_golabel用于obs编译golang软件包时读取标签数据库更新golang软件包版本号上的正式发布版本号release的值,sys子包替换宏函数_copy_golang_sys用于被golang软件包的rpm包的配置文件调用来替换自带架构适配源码中的sys子包,unix子包替换宏函数_copy_golang_unix用于被golang软件包的rpm包的配置文件调用来替换自带架构适配源码中的unix子包,sys_unix子包替换宏函数_copy_golang_sys_unix用于被golang软件包的rpm包的配置文件调用来替换自带架构适配源码中的sys子包和unix子包,所述存储路径定义宏_golabel_db用于定义版本标签值数据库的文件存储路径;所述标签机制还包括:在golang软件包的配置文件spec中,添加一行标签操作宏函数_golabel的引用以用于从版本标签值数据库中获取golang软件包的版本标签值;在golang软件包的配置文件spec中,修改软件包的正式发布版本号release的值,将版本标签值数据库中记录的golang软件包版本标签值追加到golang软件包的基础功能版本号version的值上,以免去后续更新golang软件包的配置文件spec中版本标签值的操作;在构建golang软件包的预备阶段%prep,为目标架构调用sys子包替换宏函数_copy_golang_sys、unix子包替换宏函数_copy_golang_unix、sys_unix子包替换宏函数_copy_golang_sys_unix中的部分或者全部以实现对目标架构的适配代码中的sys子包和unix子包的替换。
5、可选地,所述版本标签值数据库中的每一条记录包括golang软件包的软件包名称及其对应的版本标签值,其中版本标签值为纯数字格式、取值范围为[1,∞)。
6、可选地,所述版本标签值数据库存储在git平台上;所述obs编译系统在构建编译环境后,从git平台上下载版本标签值数据库的数据库文件并存储到存储路径定义宏_golabel_db指定的文件路径。
7、可选地,所述通过引入的标签机制维护管理golang软件包的版本标签值包括:版本标签值递增:当golang软件包完成了sys子包或者unix子包的cve漏洞修复时,由代码仓配置的webhook工程对版本标签值数据库中的所有golang软件包的版本标签值执行递增;版本标签值重置:当使用golang语言开发的软件包升级时,在golang软件包的基础功能版本号version的值或者不含版本标签值的正式发布版本号release的值发生变化的时候,由代码仓配置的webhook工程对版本标签值数据库中记录的该golang软件包的版本标签值进行重置,修改为1;版本标签值新增:当引入新的golang语言开发的golan本文档来自技高网...
【技术保护点】
1.一种Golang软件包自动修复CVE漏洞的方法,其特征在于,包括下述步骤:在使用RPM包管理器和OBS编译系统的Linux发行版中通过引入的标签机制维护管理Golang软件包的版本标签值,在引入新Golang软件包、Golang软件包版本升级以及修复Golang软件的CVE漏洞时通过版本标签值的变化使得OBS编译系统自动触发重新编译,并将重新编译的Golang软件包存储到RPM软件包仓库以实现对Golang软件包的CVE漏洞自动修复。
2.根据权利要求1所述的Golang软件包自动修复CVE漏洞的方法,其特征在于,在使用RPM包管理器和OBS编译系统的Linux发行版中引入的标签机制包括构建RPM包的标签管理宏软件包,所述RPM包的标签管理宏软件包包括标签操作宏函数_golabel、sys子包替换宏函数_copy_golang_sys、unix子包替换宏函数_copy_golang_unix、sys_unix子包替换宏函数_copy_golang_sys_unix和存储路径定义宏_golabel_db,其中标签操作宏函数_golabel用于OBS编译Golang软
3.根据权利要求2所述的Golang软件包自动修复CVE漏洞的方法,其特征在于,所述版本标签值数据库中的每一条记录包括Golang软件包的软件包名称及其对应的版本标签值,其中版本标签值为纯数字格式、取值范围为[1,∞)。
4.根据权利要求3所述的Golang软件包自动修复CVE漏洞的方法,其特征在于,所述版本标签值数据库存储在git平台上;所述OBS编译系统在构建编译环境后,从git平台上下载版本标签值数据库的数据库文件并存储到存储路径定义宏_golabel_db指定的文件路径。
5.根据权利要求4所述的Golang软件包自动修复CVE漏洞的方法,其特征在于,所述通过引入的标签机制维护管理Golang软件包的版本标签值包括:版本标签值递增:当Golang软件包完成了sys子包或者unix子包的CVE漏洞修复时,由代码仓配置的webhook工程对版本标签值数据库中的所有Golang软件包的版本标签值执行递增;版本标签值重置:当使用Golang语言开发的软件包升级时,在Golang软件包的基础功能版本号Version的值或者不含版本标签值的正式发布版本号Release的值发生变化的时候,由代码仓配置的webhook工程对版本标签值数据库中记录的该Golang软件包的版本标签值进行重置,修改为1;版本标签值新增:当引入新的Golang语言开发的Golang软件包时,由代码仓配置的webhook工程对Golang软件包的配置文件SPEC做检测,如果发现版本标签值的应用,则在版本标签值数据库为当前软件包新增版本标签值记录,且版本标签值的初始值为1。
6.根据权利要求1所述的Golang软件包自动修复CVE漏洞的方法,其特征在于,所述在引入新Golang软件包、Golang软件包版本升级以及修复Golang软件的CVE漏洞时通过版本标签值的变化使得OB...
【技术特征摘要】
1.一种golang软件包自动修复cve漏洞的方法,其特征在于,包括下述步骤:在使用rpm包管理器和obs编译系统的linux发行版中通过引入的标签机制维护管理golang软件包的版本标签值,在引入新golang软件包、golang软件包版本升级以及修复golang软件的cve漏洞时通过版本标签值的变化使得obs编译系统自动触发重新编译,并将重新编译的golang软件包存储到rpm软件包仓库以实现对golang软件包的cve漏洞自动修复。
2.根据权利要求1所述的golang软件包自动修复cve漏洞的方法,其特征在于,在使用rpm包管理器和obs编译系统的linux发行版中引入的标签机制包括构建rpm包的标签管理宏软件包,所述rpm包的标签管理宏软件包包括标签操作宏函数_golabel、sys子包替换宏函数_copy_golang_sys、unix子包替换宏函数_copy_golang_unix、sys_unix子包替换宏函数_copy_golang_sys_unix和存储路径定义宏_golabel_db,其中标签操作宏函数_golabel用于obs编译golang软件包时读取标签数据库更新golang软件包版本号上的正式发布版本号release的值,sys子包替换宏函数_copy_golang_sys用于被golang软件包的rpm包的配置文件调用来替换自带架构适配源码中的sys子包,unix子包替换宏函数_copy_golang_unix用于被golang软件包的rpm包的配置文件调用来替换自带架构适配源码中的unix子包,sys_unix子包替换宏函数_copy_golang_sys_unix用于被golang软件包的rpm包的配置文件调用来替换自带架构适配源码中的sys子包和unix子包,所述存储路径定义宏_golabel_db用于定义版本标签值数据库的文件存储路径;所述标签机制还包括:在golang软件包的配置文件spec中,添加一行标签操作宏函数_golabel的引用以用于从版本标签值数据库中获取golang软件包的版本标签值;在golang软件包的配置文件spec中,修改软件包的正式发布版本号release的值,将版本标签值数据库中记录的golang软件包版本标签值追加到golang软件包的基础功能版本号version的值上,以免去后续更新golang软件包的配置文件spec中版本标签值的操作;在构建golang软件包的预备阶段%prep,为目标架构调用sys子包替换宏函数_copy_golang_sys、unix子包替换宏函数_copy_golang_unix、sys_unix子包替换宏函数_copy_golang_sys_unix中的部分或者全部以实现对目标架构的适配代码中的sys子包和unix子包的替换。
3.根据权利要求2所述的golang软件包自动修复cve漏洞的方法,其特征在于,所述版本标签值数据库中的每一条记录包括golang软件包的软件包名称及其对应的版本标签值,其中版本标签值为纯数字格式、取值范围为[1,∞)。
4.根据权利要求3所述的golang软件包自动修复cve漏洞的方法,其特征在于,所述版本标签值数据库存储在git平台上;所述ob...
【专利技术属性】
技术研发人员:何仁贵,潘晨博,叶青龙,杨晨光,
申请(专利权)人:湖南麒麟信安科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。