一种开源存储库恶意包检测方法及系统技术方案

技术编号:35299576 阅读:30 留言:0更新日期:2022-10-22 12:47
本发明专利技术属于网络安全技术领域,具体涉及一种开源存储库恶意包检测方法及系统;该方法包括:获取待检测Python包,对包进行特征提取,特征包括元数据特征、静态特征和动态特征;对元数据特征、静态特征和动态特征进行处理,得到总特征向量;采用训练好的RNN

【技术实现步骤摘要】
一种开源存储库恶意包检测方法及系统


[0001]本专利技术属于网络安全
,具体涉及一种开源存储库恶意包检测方法及系统。

技术介绍

[0002]开源存储库是代码共享的平台,在软件供应链和软件开发过程中起着至关重要的作用。随着近年来开源软件不断深入到各类研究和生产领域,可以预见在不久的将来,开源软件供应链安全性的影响会更广泛,因此开源软件供应链的安全风险不容忽视。
[0003]加强开源软件供应链的安全审查,从技术和管理两个层面上有效地监督和推动开发人员及管理人员持续提高开源软件供应链的安全保障程度。在恶意开源软件代码数量呈指数级增长的态势下,可应用传统机器学习或深度学习对代码及其变种进行特征提取和分析,构建开源软件代码漏洞库。加强新型开源软件供应链安全防护技术的应用探索,对可能的开源软件供应链安全风险进行态势感知,将非法入侵的病毒尽早扼杀,保障开源软件供应链的安全。
[0004]传统的恶意包检测方法对恶意包提取的特征表现效果和提取效率不佳,导致恶意包检测方法效果不佳;基于不同包名之间的距离以及其他元数据差异的检测方法,因为缺少代码级别的分析,仅能区分恶意包和正常包表面上的差异;传统的综合元数据、静态和动态特征来进行检测的方法,会产生过大的资源开销。
[0005]综上所述,亟需一种能提高恶意包检测效果并能减少资源开销的恶意包检测方法。

技术实现思路

[0006]针对现有技术存在的不足,本专利技术提出了一种开源存储库恶意包检测方法及系统,该方法包括:
[0007]S1:获取待检测Python包,对包进行特征提取,特征包括元数据特征、静态特征和动态特征;其中,元数据特征包括包名的编辑距离、包的作者、包文件的大小和包的下载历史,静态特征包括文本特征、ssdeep Hash、API调用序列和混淆特征,动态特征包括动态行为序列;
[0008]S2:对元数据特征、静态特征和动态特征进行处理,得到总特征向量;
[0009]S3:采用训练好的RNN

Attention模型对总特征向量进行处理,得到恶意包检测结果。
[0010]优选的,对ssdeep Hash进行提取的过程包括:收集恶意包样本,并根据恶意包样本构建Hash库;根据待检测包和Hash库计算ssdeep Hash。
[0011]优选的,对API调用序列进行提取的过程包括:判断待检测包的类型并根据判断结果对待检测包进行解包,得到解包结果;采用正则表达式对解包结果进行处理,构建包入口文件的多叉树依赖关系图;后序遍历包入口文件的多叉树依赖关系图,根据后序遍历顺序
导入图中节点对应的源代码,得到带检测包的完整源代码;根据完整源代码得到抽象语法树,对抽象语法树进行处理,得到API调用函数名和参数并将其作为API调用序列。
[0012]进一步的,对待检测包进行解包的过程包括:对于tar.gz格式的包提取setup.py和_init_.py文件,并清理tar.gz源码包中的其他文件;对于whl格式的包提取_init_.py文件,并清理whl包中的wheel文件。
[0013]优选的,对混淆特征进行提取的过程包括:采用编码解码函数对待检测包进行处理,得到混淆代码特征向量,根据混淆代码特征向量判断是否存在混淆特征。
[0014]优选的,对动态行为序列进行提取的过程包括:根据待检测包的格式对包执行安装包和导入包操作,采用docker和函数劫持技术提取安装包和导入包过程中的进程信息,并将其作为动态行为序列;其中,进程信息包括调用的命令、读写的敏感文件名、DNS解析记录对应的IP和域名。
[0015]优选的,对元数据特征、静态特征和动态特征进行处理的过程包括:采用BERT词向量模型将API调用序列和动态行为序列转换成序列向量;将除API调用序列和动态行为序列外的其他特征转换为对应的特征向量;将序列向量和其他特征的特征向量进行拼接,得到总特征向量。
[0016]一种开源存储库恶意包检测系统,包括:元数据特征提取模块、静态特征提取模块、动态特征提取模块、词向量转换模块、预测模块和记录模块;
[0017]所述元数据特征提取模块用于对待检测包进行元数据特征提取;
[0018]所述静态特征提取模块用于对待检测包进行静态特征提取;
[0019]所述动态特征提取模块用于对待检测包进行动态特征提取;
[0020]所述词向量转换模块用于对元数据特征、静态特征和动态特征进行向量转换,得到特征向量;对特征向量进行处理,得到总特征向量;
[0021]所述预测模块用于根据总特征向量得到恶意包检测结果;
[0022]所述记录模块用于根据恶意包检测结果对包进行标记并对恶意包进行隔离操作。
[0023]本专利技术的有益效果为:本专利技术针对元数据特征,根据对包结构的分析,从包入口点文件入手,获取到包入口点的抽象序列树,并依据此提取到包相关联的所有文件,相对于传统的特征提取方法提取全部文件的特征,减少了需要处理的文件的数量,提高了后续特征提取的效率;对于静态特征的提取,不仅提取了代码的文本特征,还对于混淆、拼接和编码等代码特征进行了匹配,有效地解决混淆变形恶意包检测困难问题,最大限度地提高了恶意包检测准确性,同时避免了使用大量的静态特征作为机器学习的特征,提高了模型构建效率。对于动态特征的提取,关注包安装和包导入两个过程,使用轻量级的docker和函数劫持技术,对比传统的提取方法使用重量级沙箱和扫描软件,减少了提取动态特征过程中资源的消耗量,提高了提取动态特征的效率,同时也方便将检测方法集成到其他脚本或软件中,具有耦合度比较高的特点;本专利技术对传统的特征提取方法进行了优化改进,减少了资源消耗提高了特征提取的效率,并且综合元数据特征、静态特征和动态特征融合作为包的特征输入到机器学习模型中,避免了仅对包名进行检测忽略了代码层面的检测,同时相比根据特征计算安全分数进行检测的方法,提高了恶意包检测结果的准确率,降低了恶意包检测的误报率,实用性高。
附图说明
[0024]图1为本专利技术中开源存储库恶意包检测方法流程图。
[0025]图2为本专利技术中带注意力的RNN

Attention模型结构示意图。
具体实施方式
[0026]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0027]本专利技术提出了一种开源存储库恶意包检测方法,如图1所示,所述方法包括以下内容:
[0028]S1:获取待检测Python包,对包进行特征提取,特征包括元数据特征、静态特征和动态特征;其中,元数据特征包括包名的编辑距离、包的作者、包文件的大小和包的下载历史,静态特征包括文本特征、ssdeep Hash、API调用序列和混淆特征,动本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种开源存储库恶意包检测方法,其特征在于,包括:S1:获取待检测Python包,对包进行特征提取,特征包括元数据特征、静态特征和动态特征;其中,元数据特征包括包名的编辑距离、包的作者、包文件的大小和包的下载历史,静态特征包括文本特征、ssdeep Hash、API调用序列和混淆特征,动态特征包括动态行为序列;S2:对元数据特征、静态特征和动态特征进行处理,得到总特征向量;S3:采用训练好的RNN

Attention模型对总特征向量进行处理,得到恶意包检测结果。2.根据权利要求1所述的一种开源存储库恶意包检测方法,其特征在于,对ssdeep Hash进行提取的过程包括:收集恶意包样本,并根据恶意包样本构建Hash库;根据待检测包和Hash库计算ssdeep Hash。3.根据权利要求1所述的一种开源存储库恶意包检测方法,其特征在于,对API调用序列进行提取的过程包括:判断待检测包的类型并根据判断结果对待检测包进行解包,得到解包结果;采用正则表达式对解包结果进行处理,构建包入口文件的多叉树依赖关系图;后序遍历包入口文件的多叉树依赖关系图,根据后序遍历顺序导入图中节点对应的源代码,得到带检测包的完整源代码;根据完整源代码得到抽象语法树,对抽象语法树进行处理,得到API调用函数名和参数并将其作为API调用序列。4.根据权利要求3所述的一种开源存储库恶意包检测方法,其特征在于,对待检测包进行解包的过程包括:对于tar.gz格式的包提取setup.py和__init__.py文件,并清理tar.gz源码包中的其他文件;对于whl格式的包提取__init__.py文件,并清理whl包中的wheel文件。5.根...

【专利技术属性】
技术研发人员:程克非刘小川张亮
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1