代码自动生成的小程序漏洞实时检测系统设计
2023-12-13石峰石若愚
石峰, 石若愚
(1.濮阳技师学院, 信息商贸系, 河南,濮阳 457001; 2.中国矿业大学(北京),化学与环境工程学院, 北京 100083)
0 引言
计算机技术[1]在我国呈现出高速发展的状态,在人类日常生活中应用广泛,深受我国人民的喜爱。同时,对于计算机技术大多数人们早已产生了巨大的依赖,使计算机技术离不开人们的日常生活。在这种技术下,我国设计出诸多软件、系统,无论是办公还是休闲活动,计算机技术都给人们带来了便利。但是在这种情况下,经常会出现软件遭受到攻击、系统出现漏洞[2]的问题,这些都会导致系统安全受到影响,容易给自身带来极大的损失。随着技术的不断完善,我国开始设计出不同的小程序,这些小程序的规模日渐增大,与此同时黑客攻击手段也不断增强,普通的漏洞检测已经不能满足现在的需求,所以针对上述出现的问题,需要对代码自动生成的小程序漏洞实时检测系统开展设计,以此避免上述问题的发生。
赵伟等[3]提出了基于符号执行的智能合约漏洞检测方案,该方法优先对系统经常出现的漏洞开展了详细分析,以此建立出系统控制流图,依据系统漏洞的特点,获取了与其相对应的约束条件,基于约束条件下的系统求解器自动生成出软件测试用例,利用其对常见的漏洞实行检测,从而完成漏洞检测,该方法的分析效果存有欠缺,导致该方法存在检测效果差的问题。
陈春雷等[4]提出了基于Yosys的硬件信息流安全验证与漏洞检测方法,该方法通过Yosys设计出了系统硬件电路,从中生成出门级网表,再对设计的电路实行标记,利用构建的信息流模型对电路中的数据开展设计,并将其映射到以Yosys为主的可识别安全约束,最后将模型与Yosys相结合,利用其检测设计后的系统,根据检测结果判断在系统硬件中是否存有安全漏洞,若存有漏洞对其实行修复,从而实现整体漏洞检测,该方法设计的硬件不够完善,存在检测耗时高的问题。
王嘉捷等[5]提出了WebView组件漏洞自动化检测与验证方法,该方法采用可达性分析方法分析出了系统中的漏洞可疑点,以此解决不可达路径的无效遍历问题,大大地提升了漏洞分析效果,再将分析结果与模拟攻击行为相结合,检测系统中的漏洞,判断漏洞触发的真实效果,以此实现漏洞检测,该方法分析的漏洞可疑点不够全面,存在检测效率低的问题。
为了解决上述方法中存在的问题,提出代码自动生成的小程序漏洞实时检测系统设计方法。
1 代码自动生成的小程序漏洞实时检测系统设计
1.1 系统软件设计
在构建代码自动生成小程序时,时常要做的就是对建立小程序的漏洞开展实时检测,经不断检测和修复后,最终形成了一个完整且可实用的小程序。由于检测过程比较复杂,所以需要针对小程序漏洞实时检测系统实行全面的设计。
1.2 Java源代码设计
小程序通常是由多种代码实现而成的,所以在系统中设计了Java源代码分析软件,主要利用该软件中的ANTLR工具对源代码处理,使编写的代码完成词法构造、语法构造等工作,这些流程结束后就可以将源代码转换到小程序内,从而形成一个完整的源代码。源代码到程序内的具体流程如图1所示。
图1 源代码到程序中的流程图
设计的Java源代码[6]软件模块主要利用ANTLR工具设计而成,它具体表现在利用一个类文件生成出一个分析模块,每生成一个类文件就能建立出一个分析模块,而该分析模块中的全部功能都存在类文件中,且使用的方式相同,同时还具备可以在任意程序中调用类文件的功能。
在设定的词法规则中,ANTLR工具对词法或语法定义时必须要以大写字母的形式开头,比如在Java语言内的语法为“COMMENT”,该形式为标准形式。
固定的填写形式便于对系统的编辑及开发,该软件还可以统一将词法分析方法和语法分析方法放在Java.g文件内,必要时也可以分开编写,可以提升小程序开发的准确性。
1.3 代码自动生成软件
通过代码自动生成技术对小程序实行开发时,需要遵守3个要素,这3个要素必不可少,分别是:代码模板、代码参数及代码生成规则。因此,小程序中主要将Python用作软件的编程语言,而代码模板则用该编程语言中的格式化字串符定义,那么剩余的代码生成规则通过生成算法实现,主要将上述设立的代码[7]模板和代码参数结合到一起后,直接完成代码生成。
代码自动生成的基本流程主要表现在以下三方面。
(1) 依据上述设计的Java源代码软件,对分析模块IP中的硬件分析后,从中确立出与分析模块相对应的相应层代码模板,再确定生成代码中的规则,以此实现IP代码的整体生成。
(2) 对代码自动生成三要素确立完成后,需要利用卷积神经网络中的加速器生成顶层代码。
(3) 将顶层代码与IP相结合,直接呈现出一个完整的卷积神经网络[8]加速器代码,编译最终生成的代码,将其综合成硬件电路。
一般来说,卷积神经网络中主要包含几个不同的层次,而卷积层、池化层、激活层、全连接层是卷积神经网络必不可少的核心层次。设计的代码自动生成模块需要在各个层次中建立出IP代码生成和顶层代码生成。设计的代码自动生成软件模块如图2所示。
图2 代码自动生成框架
根据图2可知,代码自动生成时要优先获取模型的结构和json文件,而模型的结构参数和模型的数据路径都包括在json文件中。为了能够得到模型数据与模型结构的参数,需要利用解析模块对模型开展解析,依据解析结果获取模型结构参数。再用框架中的数据量化模块处理获取的模型数据,将上述全部参数均代入到代码生成模块内,以此形成了最终代码,最后在卷积神经网络硬件层中运算生成代码,实现代码自动生成。
1.4 组件-漏洞信息提取
生成后的小程序会对程序中的数据实行采集,而采集的数据通常被分化成两种:第一种为漏洞数据;第二种则为组件数据。利用json格式将这两种数据全部存储,因为大多数数据的来源都不相同,所以需要建立组件-漏洞信息提取软件模块对程序软件中的漏洞开展选取和表示。具体的漏洞实体选取示意图如图3所示。
图3 漏洞实体选取及表示示意图
采集到程序中的数据时,所获取的信息因素仅仅只是数据表面,探测不到真实的漏洞数据,所以需要对漏洞的实体开展选取和表示。根据图3中的顺序流程能够有效地将数据漏洞的本质表示出来。通过对采集数据的分析及对比,最终以CVE编号的实体标识形式对小程序漏洞的任意实体开展表示和存储。
而Maven组件信息提取模块能够得到小程序数据漏洞中最完全的组件信息,但是由于获取的组件信息结构比较简洁,所以可以直接构建出知识图谱[9],与上述相同,根据对采集数据的分析和比较,最终选取3个属性作为组件的实体属性,以此实现对组件实体的表示和存储。
2 硬件设计
2.1 硬件功能模块
要想有效地对小程序漏洞开展实时检测,除了设计软件外,还要设计硬件功能模块。从整体上说,将系统硬件功能模块划分成3个主要功能模块,分别是任务管理功能模块、扫描管理功能模块和漏洞检测功能模块。每个功能模块所具备的子功能均大不相同,因此划分的硬件功能模块如图4所示。
图4 漏洞实时检测系统功能模块设计图
根据图4构建的漏洞实时检测系统整体硬件功能模块,对硬件子模块功能划分,并对各个子功能模块开展详尽描述。
2.2 任务管理功能模块
在整个系统中,任务管理功能模块是系统内最关键的模块之一。每次开展一项漏洞检测都会获取到与其相对应的检测任务,而该任务可以通过建立、查询、删除、调度等多种操作实现而成。
进入任务管理模块前,用户首先要做的就是建立一个扫描任务[10],建立完成后才可以步入到后续检测流程中。任务在添加过程中要对需要执行的任务信息实行填写,但不可以直接开启扫描操作,待任务全部开启后,即可对填写的任务实行任务扫描。整个任务管理功能模块的任务添加流程如图5所示。
图5 任务添加流程示意图
通过图5中的整体流程可以在任务列表中查询添加完成的任务。任务列表主要能够将任务的名称、任务处于什么样的状态和任务执行者的信息全部展现出来。普通的用户只能查看自己构建的任务,但是管理员能够查看全部任务。
2.3 扫描管理功能模块
对创建的任务实行展示的任务列表是扫描管理模块中的一部分,且每个任务在查看时都会处于不同的状态,比如任务完成、任务终止、任务执行中等。当任务创立完成后,所有的任务都属于初始状态。选取任意一个任务执行后,任务的状态就会变成执行中,若执行过程中发生异常,那么任务状态就变换成任务错误,若执行过程中不存在异常,那么任务的状态就为任务完成。
扫描管理模块中这些任务的转换关系如图6所示。
图6 任务关系转换
当任务扫描开始时,首先要做的就是对需要检测的对象实行扫描解压操作,再分析各类文件从中取得语法分析树,利用扫描管理模块对数据流[11]进行信息扫描,并将各类属性及安全规则相匹配,以此得出最终扫描结果。
2.4 漏洞检测功能模块
代码自动生成的小程序极易存在漏洞,为了使小程序能够正常运作,特意设计出漏洞检测模块,利用该模块对小程序实时漏洞检测。设计的漏洞检测模块如图7所示。
图7 漏洞检测模块设计图
从图7可以看出,通过获取的源代码到程序中间表示IR的数据流信息,利用该模块对获取的数据流信息开展漏洞检测[12]。若检测期间存有漏洞,那么就需要将漏洞记录在漏洞报告内,以此向管理人员传送漏洞信息,对漏洞实行修复。
通过对代码自动生成的小程序漏洞实时检测系统软件及硬件的设计,从而实现小程序漏洞实时检测系统的整体设计。
3 实验与分析
为了验证代码自动生成的小程序漏洞实时检测系统设计方法的整体有效性,需要对该方法实行实验对比测试。
采用代码自动生成的小程序漏洞实时检测系统设计方法(方法1)、基于Yosys的硬件信息流安全验证与漏洞检测方法(方法2)和WebView组件漏洞自动化检测与验证方法(方法3)开展比较测试。
(1) 在实行测试期间,采用微信小程序网页作为实验研究对象,该微信小程序网页如图8所示。
图8 微信小程序网页
在图8中获取不同的样本数据,对其实行安全扫描,以此检测出网页内是否存有漏洞。设置本次实验共选取1000个样本数据,并在样本数据中引入10个安全漏洞,分别采用方法1、方法2和方法3对其实行漏洞检测,根据漏洞检测个数验证最终检测效果。漏洞检测个数越多,说明该方法的检测准确率越高,反之则越低,具体的测试结果如表1所示。
表1 不同方法的漏洞检测个数测试
从表1可以看出,第1次实验测试时,3种方法的漏洞检测个数就大不相同,其中方法2的漏洞检测个数最少,方法1的漏洞检测个数最多。随着接下来的实验测试,得知方法1在第12次测试时就将引入的10个安全漏洞全部检测出来,而其余2种方法在实验测试结束后也没有准确的检测出全部的漏洞。由此可见,方法1的漏洞检测准确率要高于方法2和方法3,也可以看出方法1的检测效果最强。
(2) 对微信小程序网页漏洞检测时,其检测时间也极其重要。若消耗的时间过长,就说明检测的效果慢,因而会降低整体检测效率。所以为了保障不同方法的检测效率,需要采用3种方法对漏洞检测耗时开展比较测试。耗时越低,说明该方法的检测效率越强,反之则越差,具体的测试结果如图9所示。
图9 检测耗时测试
根据图9可以看出,整体测试过程中方法1的耗时要低于其余2种方法,同时在测试过程中方法1的运动轨迹上升较慢,可以判定方法1的检测耗时最短。
这主要是因为方法1设计了任务管理功能模块,利用该模块分配需要检测的任务,使系统能够更加快速地开展漏洞检测,从而提升了整体检测效率,降低了检测时间。
(3) 系统实行漏洞检测过程中极易发生漏检、误检的问题。因此,为了确定3种方法的可靠性,设置微信小程序网页中共有1000个样本数据,并引入25个安全漏洞,利用方法1、方法2和方法3分别对样本数据开展漏洞检测测试,根据漏检个数验证该方法的检测效果。具体测试结果如图10所示。
图10 漏检个数测试
由图10可知,随着时间的不断增加,3种方法的漏检数量均有所提高。可以清晰地看出方法3的漏检数量要高于方法1和方法2,与方法3相反的是,方法1的漏检个数则是3种方法中最低的。由此可见,方法1的漏检数量少,说明该方法的检测效果最优。
4 总结
代码自动生成的小程序容易在操作不当的情况下产生安全漏洞,所以针对小程序漏洞实时检测系统设计方法存在的问题,本文提出代码自动生成的小程序漏洞实时检测系统设计方法。该方法先在软件中设计了不同的组件、源代码,提升了漏洞数据的采集和处理效率;再在系统中设计了不同的硬件功能模块,加快了检测效率,以此实现漏洞实时检测系统的整体设计。该方法在小程序漏洞实时检测系统设计方法中提供了重要信息基础,同时也在漏洞实时检测系统设计方法中占据着关键地位。