一种恶意npm包检测方法、装置、设备及介质制造方法及图纸

技术编号:36708119 阅读:12 留言:0更新日期:2023-03-01 09:32
本申请公开了一种恶意npm包检测方法、装置、设备及介质,包括:提取待检测npm包的特征数据;将所述特征数据输入分类模型,得到所述待检测npm包的分类结果;当所述分类结果为正常包,则基于预设的检测逻辑对所述待检测npm包进行检测,得到检测结果。这样,实现了npm包的自动化监测,并避免了将恶意包标记为正常包,能够提升恶意npm包检测的效率和准确率。能够提升恶意npm包检测的效率和准确率。能够提升恶意npm包检测的效率和准确率。

【技术实现步骤摘要】
一种恶意npm包检测方法、装置、设备及介质


[0001]本申请涉及程序包检测
,特别涉及一种恶意npm包检测方法、装置、设备及介质。

技术介绍

[0002]Javascript流行已久,V8引擎更是让其进化为服务端开发语言的一员。其对应的包管理工具npm(即node package manager,node包管理器)中存在着大量的可重用软件包,体量巨大。社区的热度促进了npm的发展,也促进了Node.js的发展。但在npm中发布一个新的包只需要注册一个npm账户即可,更新一个包的新版本也只需要简单地进行注册表上传同步。恶意包在近几年成为一大焦点问题,因为即使很快地发现并清除这些恶意包,在注册表中存活很短一段时间也会影响到很多终端用户。
[0003]目前,由于npm包发布量大,传统人工审核或半自动化审核的方式难以应对,且存在错误标记正常包或遗漏恶意包导致的准确率低的问题。

技术实现思路

[0004]有鉴于此,本申请的目的在于提供一种恶意npm包检测方法、装置、设备及介质,能够提升恶意npm包检测的效率和准确率。其具体方案如下:
[0005]第一方面,本申请公开了一种恶意npm包检测方法,包括:
[0006]提取待检测npm包的特征数据;
[0007]将所述特征数据输入分类模型,得到所述待检测npm包的分类结果;
[0008]当所述分类结果为正常包,则基于预设的检测逻辑对所述待检测npm包进行检测,得到检测结果。
[0009]可选的,所述基于预设的检测逻辑对所述待检测npm包进行检测,得到检测结果,包括:
[0010]对所述待检测npm包内的源代码进行重构以得到重构文件,并基于所述重构文件以及所述待检测npm包在注册表中的信息判断所述待检测npm包是否为恶意包,得到检测结果;
[0011]或,对所述待检测npm包内的可执行文件与已知恶意包进行比较,得到检测结果。
[0012]可选的,所述提取待检测npm包的特征数据,包括:
[0013]提取所述待检测npm包内的源代码或可执行文件的特征数据;
[0014]和/或,提取所述待检测npm包内的安装时运行脚本的特征数据;
[0015]和/或,基于所述待检测npm包内的说明文件提取所述待检测npm包的版本特征数据。
[0016]可选的,所述提取所述待检测npm包内的源代码或可执行文件的特征数据,包括:
[0017]提取所述待检测npm包内的源代码或可执行文件中目标操作的特征数据;所述目标操作包括获取用户个人信息的操作、访问特定的系统资源的操作、调用特定的APIs的操
作;
[0018]和/或,提取所述源代码或可执行文件的香农熵。
[0019]可选的,所述调用特定的APIs的操作包括调用动态代码生成的APIs的操作,所述方法包括:
[0020]对所述待检测npm包内的源代码或可执行文件进行正则匹配,若匹配到模板引擎,则对所述模板引擎所生成的代码进行关键字匹配,得到调用动态代码生成的APIs的操作的特征数据。
[0021]可选的,所述提取所述待检测npm包内的安装时运行脚本的特征数据,包括:
[0022]匹配所述安装时运行脚本中用于生成代码的函数,并提取所述函数的函数内容,得到所述安装时运行脚本的特征数据。
[0023]可选的,所述基于所述待检测npm包内的说明文件提取所述待检测npm包的版本特征数据,包括:
[0024]利用预设语义分析逻辑提取所述说明文件的语义特征,并获取所述待检测npm包与上一版本的版本发布间隔时间,得到所述待检测npm包的版本特征数据。
[0025]第二方面,本申请公开了一种恶意npm包检测装置,包括:
[0026]特征数据提取模块,用于提取待检测npm包的特征数据;
[0027]分类结果获取模块,用于将所述特征数据输入分类模型,得到所述待检测npm包的分类结果;
[0028]检测结果获取模块,用于当所述分类结果为正常包,则基于预设的检测逻辑对所述待检测npm包进行检测,得到检测结果。
[0029]第三方面,本申请公开了一种电子设备,包括存储器和处理器,其中:
[0030]所述存储器,用于保存计算机程序;
[0031]所述处理器,用于执行所述计算机程序,以实现前述的恶意npm包检测方法。
[0032]第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述的恶意npm包检测方法。
[0033]可见,本申请先提取待检测npm包的特征数据,之后将所述特征数据输入分类模型,得到所述待检测npm包的分类结果,并且当所述分类结果为正常包,则基于预设的检测逻辑对所述待检测npm包进行检测,得到检测结果。也即,本申请先利用分类器基于待检测npm包的特征数据输出待检测npm包的分类结果,当分类结果为正常包时,调用预设的检测逻辑对待检测npm包进行二次检测,这样,实现了npm包的自动化监测,并避免了将恶意包标记为正常包,能够提升恶意npm包检测的效率和准确率。
附图说明
[0034]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0035]图1为本申请公开的一种恶意npm包检测方法流程图;
[0036]图2为本申请公开的一种具体的恶意npm包检测方法流程图;
[0037]图3为本申请公开的一种恶意npm包检测装置结构示意图;
[0038]图4为本申请公开的一种电子设备结构图。
具体实施方式
[0039]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0040]首先,对本申请涉及的专业术语进行解释说明:npm是JavaScript运行时Node.js的默认程序包管理器。JavaScript是互联网上最流行的脚本语言,这门语言可用于HTML和web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。TypeScript是一种自由和开源的编程语言,它是JavaScript的一个超集,扩展了JavaScript的语法。Tree

sitter:是一个解析器生成器工具和增量解析库,它可以为源代码文件构建具体的语法树,并在编辑源文件时高效地更新语法树,它支持多种编程语言的解析,包括python,java,c等。
[0041]npm是JavaScript和TypeScript生态本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种恶意npm包检测方法,其特征在于,包括:提取待检测npm包的特征数据;将所述特征数据输入分类模型,得到所述待检测npm包的分类结果;当所述分类结果为正常包,则基于预设的检测逻辑对所述待检测npm包进行检测,得到检测结果。2.根据权利要求1所述的恶意npm包检测方法,其特征在于,所述基于预设的检测逻辑对所述待检测npm包进行检测,得到检测结果,包括:对所述待检测npm包内的源代码进行重构以得到重构文件,并基于所述重构文件以及所述待检测npm包在注册表中的信息判断所述待检测npm包是否为恶意包,得到检测结果;或,对所述待检测npm包内的可执行文件与已知恶意包进行比较,得到检测结果。3.根据权利要求1所述的恶意npm包检测方法,其特征在于,所述提取待检测npm包的特征数据,包括:提取所述待检测npm包内的源代码或可执行文件的特征数据;和/或,提取所述待检测npm包内的安装时运行脚本的特征数据;和/或,基于所述待检测npm包内的说明文件提取所述待检测npm包的版本特征数据。4.根据权利要求3所述的恶意npm包检测方法,其特征在于,所述提取所述待检测npm包内的源代码或可执行文件的特征数据,包括:提取所述待检测npm包内的源代码或可执行文件中目标操作的特征数据;所述目标操作包括获取用户个人信息的操作、访问特定的系统资源的操作、调用特定的APIs的操作;和/或,提取所述源代码或可执行文件的香农熵。5.根据权利要求4所述的恶意npm包检测方法,其特征在于,所述调用特定的APIs的操作包括调用动态代码生成的APIs的操作,...

【专利技术属性】
技术研发人员:金成强余金开
申请(专利权)人:杭州安恒信息技术股份有限公司
类型:发明
国别省市:

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

1