首页 / 专利库 / 软件 / 交互式应用程序 / 一种基于代码动态分析的移动应用源代码安全审计系统

一种基于代码动态分析的移动应用源代码安全审计系统

阅读:395发布:2020-05-08

专利汇可以提供一种基于代码动态分析的移动应用源代码安全审计系统专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种基于代码动态分析的移动应用源代码安全审计系统,包括:代码扫描引擎模 块 、应用展现层模块和数据存储模块;应用展现层模块为系统的前端界面,提供外部系统集成 接口 ;代码扫描引擎模块与应用展现层模块协作,实现代码安全扫描任务的规划、创建、扫描和报告生成;数据存储模块用于系统的数据保存。本申请采用虚拟执行技术,解决了第一代和第二代基于模式匹配、数据流/控制流分析等技术存在的效率低下、准确度不高的问题;减少了在应对无效漏洞上所浪费的人 力 和时间成本,也降低由于传统代码扫描工具漏报给公司带来的安全 风 险;可以根据公司的实际需求进行定制化,进一步提升效率,以尽量低的成本全面提高公司的代码安全 水 平。,下面是一种基于代码动态分析的移动应用源代码安全审计系统专利的具体信息内容。

1.一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述移动应用源代码安全审计系统包括:代码扫描引擎模、应用展现层模块和数据存储模块;
所述应用展现层模块为移动应用源代码安全审计系统的前端界面,提供外部系统集成接口
所述代码扫描引擎模块与应用展现层模块协作,实现代码安全扫描任务的规划、创建、扫描和报告生成;
所述数据存储模块用于移动应用源代码安全审计系统的数据保存。
2.根据权利要求1所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述代码扫描引擎模块包括虚拟中间语言代码翻译器、安全扫描规则模块、虚拟执行器和扫描报告生成器;
所述虚拟中间代码翻译器负责将被扫描项目/产品代码翻译成虚拟中间语言代码,并在翻译的过程中对被分析程序指令进行简化,仅保留与安全漏洞相关的信息,提高代码安全扫描效率和准确率;
所述安全扫描规则模块用于定义不同安全漏洞类型的特征和安全扫描规则;
所述虚拟执行器加载并执行转换后的虚拟中间语言代码,并根据安全扫描规则挖掘潜在的安全问题;
所述扫描报告生成器对代码分析过程中发现的安全问题进行分类和去重,并对发现的安全漏洞进行安全威胁等级定级。
3.根据权利要求2所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述扫描报告生成器对发现的安全漏洞进行严重、高危、中危或低危安全威胁等级定级。
4.根据权利要求2所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述代码扫描引擎模块与应用展现层模块协作,完成代码安全扫描任务的规划、创建、扫描和报告生成,过程为:
通过代码扫描引擎模块中的安全扫描规则模块预定义不同安全漏洞类型的特征和安全扫描规则;
应用展现层模块创建源代码扫描任务后,调用代码扫描引擎模块;
代码扫描引擎模块中,虚拟中间代码翻译器对虚拟代码进行翻译后由虚拟执行器进行扫描检测,结合扫描规则对代码进行动态分析并逐一进行判断,最终利用扫描报告生成器生成相应的源代码安全缺陷审计报告。
5.根据权利要求2所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述安全漏洞类型包括权限检查漏洞、组件分析漏洞、广告模块分析漏洞、敏感API分析漏洞、第三方组件分析漏洞、代码注入分析漏洞、信息存储分析漏洞、资源未释放分析漏洞、敏感信息泄露分析漏洞、糟糕的实践漏洞和侵犯隐私漏洞。
6.根据权利要求5所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
代码扫描引擎模块在扫描过程中按照安全漏洞类型相应的特征识别源代码存在的安全漏洞:
所述权限检查漏洞通过提取权限,探测是否申请过多的权限、自定义权限是否被使用以及授权是否存在险;
所述组件分析漏洞通过列举所有组件,分析组件是否是对外公开,是否正确设置权限,是否正确设置属性以及权限是否被覆盖
所述广告模块分析漏洞通过提取所有的广告模块分析广告模块漏洞;
所述敏感API分析漏洞通过列举所有的敏感的API和调用栈分析敏感API漏洞;
所述第三方组件分析漏洞通过分析使用的第三方组件是否存在漏洞;
所述代码注入分析漏洞通过分析系统是否存在SQL注入、XSS、反射和动态加载导致代码执行等漏洞;
所述信息存储分析漏洞通过分析信息存储的位置和方式是否正确;
所述资源未释放分析漏洞通过分析应用系统使用的资源在使用完之后是否被释放;
所述敏感信息泄露分析漏洞分析信息在传输和存储时是否有被泄露的可能;
所述糟糕的实践漏洞包括应用启用调试模式、弱认证、使用内部API和组件缺乏权限设置;
所述侵犯隐私漏洞包括未经过用户的允许收集用户的隐私信息。
7.根据权利要求2所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述代码扫描引擎模块在代码扫描过程中,将转换后的虚拟中间语言代码加载到虚拟机中,强制启动虚拟执行器运行;
虚拟执行器在受控制的运行过程中,动态跟踪并分析程序代码的运行期行为,从而更全面准确的理解程序逻辑。
8.根据权利要求7所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
虚拟执行器动态跟踪并分析程序代码的过程如下:
步骤一:将转换后的虚拟中间语言代码加载到虚拟机中;
步骤二:根据预设的分析目标,查找虚拟中间语言代码中存在的潜在安全风险点;
步骤三:逐条读取潜在安全风险点所在方法的指令,并模拟数据堆栈,得到流入风险点的数据;
步骤四:对得到的流入风险点的数据进行评估,如果数据尚存在未知的部分,代码扫描引擎找出该位置部分数据的来源方法,未知的部分作为新的潜在安全风险点,返回执行步骤三,直到所有流入风险点的数据性质均确定,则对该方法的动态分析完成,输出动态分析得到的数据;
步骤五:虚拟执行器中的代码分析引擎根据安全扫描规则判断动态分析得到的数据是否会引起真正的安全问题;若会引起真正的安全问题,则将该源码数据判断为存在安全漏洞。
9.根据权利要求1所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述应用展现层模块提供的外部系统集成接口包括IDE plugin集成接口、持续集成工具集成接口和Bug跟踪系统集成接口。
10.根据权利要求1所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述应用展现层模块包括基础数据管理模块、代码安全扫描任务管理模块、代码安全扫描报告管理模块和代码扫描引擎监控模块;
所述基础数据管理功能模块,用于用户/账号管理、产品管理和权限管理,让不同权限的用户看到适合自己的视图,既满足安全工作需要,同时提供权限控制,防止敏感信息暴露;
所述代码安全扫描任务管理模块提供即时扫描和周期扫描两种类型扫描任务,满足不同的场景需求;
所述代码安全扫描报告管理模块用于概要报告查看、详细报告查看和报告下载;
所述代码扫描引擎监控模块用于查看代码扫描引擎模块的工作状态,为管理员了解系统运行状态及负载提供必要的信息。
11.根据权利要求10所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述应用展现层模块创建源代码扫描任务的步骤为:
通过基础数据管理功能模块添加产品,输入产品名称并选择扫描文件类型;
保存项目后,进入到扫描任务列表,选择扫描任务的详细信息,包括扫描类型是即时扫描或周期扫描,漏洞级别是严重、高危、中危、低危,配置扫描策略选择本系统所有的漏洞类型,版本号,并上传APK包后启动代码漏洞扫描。
12.根据权利要求11所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述扫描文件类型包括J2EE和Android。
13.根据权利要求10所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述代码安全扫描报告管理模块还用于与源代码关联的交互式安全漏洞查看,以及安全漏洞处理状态跟踪。
14.根据权利要求10所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述代码扫描引擎模块的工作状态包括正在扫描的任务,扫描时长和内存等资源占用情况。
15.根据权利要求1所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
所述数据存储层保存两种类型数据,一类是代码安全扫描引擎模块使用的元数据,另一类是用户在使用代码动态分析的移动应用源代码安全审计系统过程中产生的数据。
16.根据权利要求15所述的一种基于代码动态分析的移动应用源代码安全审计系统,其特征在于:
用户在使用代码动态分析的移动应用源代码安全审计系统过程中产生的数据包括用户信息,产品信息,代码安全扫描任务数据和代码安全扫描报告。

说明书全文

一种基于代码动态分析的移动应用源代码安全审计系统

技术领域

[0001] 本发明属于网络安全技术领域,涉及一种基于代码动态分析的移动应用源代码安全审计系统。

背景技术

[0002] 随着时代的发展,信息技术深远地影响着人们的工作和生活。但是在给人们带来便利的同时,信息技术也成为了新的犯罪手段。信息系统中的黑客攻击比传统犯罪行为更加隐蔽,更加难以预防。在无声无息中,人们的信息资产甚至是物理安全都有可能会受到损害。防御性的设备,包括防火墙、IDS、IPS等的引入,一定程度上提高了系统的安全准,但是这些设备并不能有效地预防应用级别的攻击,尤其是不能有效防御系统中未知漏洞0day的攻击。每次一个新的0day攻击,带来的都是整个互联网大范围的沦陷。
[0003] 目前,国家电网公司(以下简称公司)信息系统规模庞大,版本迭代速度快,开发和维护工作繁重,同时更要兼顾信息安全。信息系统研发人员普遍缺乏安全技术知识和安全意识,不愿意或者不能够编写出安全的程序代码。公司开展信息安全工作的成本很高,但收益和成效难以量化。最重要的是,公司缺乏能够真正高效、准确、深入的发掘代码层面安全漏洞的自动化解决方案。
[0004] 第一代代码扫描技术,一般用于开源的代码扫描工具。采用的主要是关键词和模式匹配技术,只适用于检测最简单、明显的安全漏洞,实用价值十分有限。第二代代码扫描技术,基于形式化的逻辑和数学理论进行静态代码分析,是目前业界的主流。它比第一代技术多了对于程序代码全局逻辑的理解能,但是静态模型的精确度较低,误报率高,需要具备安全知识的专业人员花费大量时间进行复查和纠错,工作效率低。
[0005] 当前公司开展的代码安全检测工作主要依赖于美国的Fortify和以色列的Checkmarx。随着公司对电力信息系统安全要求不断提高,当前国外代码安全检测装置在实际工作中存在以下几点弊端:
[0006] 1.无法自主可控:在国家能源局组织编制的《电力行业网络安全行动计划(2018-2020年)》中明确指出:“坚持自主创新,加速推动电力系统自主可控和核心技术突破”;
[0007] 2.不符合行业特性:由于电力信息系统安全性要求较高且具有鲜明的行业特性,国外的代码安全检测产品无法提供定制化服务;
[0008] 3.成本费用较高:国外的安全检测产品维保升级费用高,通常每年维保升级费用是购买工具采购价格的25%以上。

发明内容

[0009] 为解决现有技术中的不足,本申请提供一种基于代码动态分析的移动应用源代码安全审计系统,凭借对代码逻辑的有效理解,提供高效率低误报的代码安全扫描能力,为用户构建高效安全的开发体系,在大大降低企业信息安全资源投入的前提下,全面提高IT系统的整体安全水准。
[0010] 为了实现上述目标,本申请的第一件发明采用如下技术方案:
[0011] 一种基于代码动态分析的移动应用源代码安全审计系统,所述移动应用源代码安全审计系统包括:代码扫描引擎模、应用展现层模块和数据存储模块;
[0012] 所述应用展现层模块为移动应用源代码安全审计系统的前端界面,提供外部系统集成接口
[0013] 所述代码扫描引擎模块与应用展现层模块协作,实现代码安全扫描任务的规划、创建、扫描和报告生成;
[0014] 所述数据存储模块用于移动应用源代码安全审计系统的数据保存。
[0015] 本发明进一步包括以下优选方案:
[0016] 优选地,所述代码扫描引擎模块包括虚拟中间语言代码翻译器、安全扫描规则模块、虚拟执行器和扫描报告生成器;
[0017] 所述虚拟中间代码翻译器负责将被扫描项目/产品代码翻译成虚拟中间语言代码,并在翻译的过程中对被分析程序指令进行简化,仅保留与安全漏洞相关的信息,提高代码安全扫描效率和准确率;
[0018] 所述安全扫描规则模块用于定义不同安全漏洞类型的特征和安全扫描规则;
[0019] 所述虚拟执行器加载并执行转换后的虚拟中间语言代码,并根据安全扫描规则挖掘潜在的安全问题;
[0020] 所述扫描报告生成器对代码分析过程中发现的安全问题进行分类和去重,并对发现的安全漏洞进行安全威胁等级定级。
[0021] 优选地,所述扫描报告生成器对发现的安全漏洞进行严重、高危、中危或低危安全威胁等级定级。
[0022] 优选地,所述代码扫描引擎模块与应用展现层模块协作,完成代码安全扫描任务的规划、创建、扫描和报告生成,过程为:
[0023] 通过代码扫描引擎模块中的安全扫描规则模块预定义不同安全漏洞类型的特征和安全扫描规则;
[0024] 应用展现层模块创建源代码扫描任务后,调用代码扫描引擎模块;
[0025] 代码扫描引擎模块中,虚拟中间代码翻译器对虚拟代码进行翻译后由虚拟执行器进行扫描检测,结合扫描规则对代码进行动态分析并逐一进行判断,最终利用扫描报告生成器生成相应的源代码安全缺陷审计报告。
[0026] 优选地,所述安全漏洞类型包括权限检查漏洞、组件分析漏洞、广告模块分析漏洞、敏感API分析漏洞、第三方组件分析漏洞、代码注入分析漏洞、信息存储分析漏洞、资源未释放分析漏洞、敏感信息泄露分析漏洞、糟糕的实践漏洞和侵犯隐私漏洞。
[0027] 优选地,代码扫描引擎模块在扫描过程中按照安全漏洞类型相应的特征识别源代码存在的安全漏洞:
[0028] 所述权限检查漏洞通过提取权限,探测是否申请过多的权限、自定义权限是否被使用以及授权是否存在险;
[0029] 所述组件分析漏洞通过列举所有组件,分析组件是否是对外公开,是否正确设置权限,是否正确设置属性以及权限是否被覆盖
[0030] 所述广告模块分析漏洞通过提取所有的广告模块分析广告模块漏洞;
[0031] 所述敏感API分析漏洞通过列举所有的敏感的API和调用栈分析敏感API漏洞;
[0032] 所述第三方组件分析漏洞通过分析使用的第三方组件是否存在漏洞;
[0033] 所述代码注入分析漏洞通过分析系统是否存在SQL注入、XSS、反射和动态加载导致代码执行等漏洞;
[0034] 所述信息存储分析漏洞通过分析信息存储的位置和方式是否正确;
[0035] 所述资源未释放分析漏洞通过分析应用系统使用的资源在使用完之后是否被释放;
[0036] 所述敏感信息泄露分析漏洞分析信息在传输和存储时是否有被泄露的可能;
[0037] 所述糟糕的实践漏洞包括应用启用调试模式、弱认证、使用内部API和组件缺乏权限设置;
[0038] 所述侵犯隐私漏洞包括未经过用户的允许收集用户的隐私信息。
[0039] 优选地,所述代码扫描引擎模块在代码扫描过程中,将转换后的虚拟中间语言代码加载到虚拟机中,强制启动虚拟执行器运行;
[0040] 虚拟执行器在受控制的运行过程中,动态跟踪并分析程序代码的运行期行为,从而更全面准确的理解程序逻辑。
[0041] 优选地,虚拟执行器动态跟踪并分析程序代码的过程如下:
[0042] 步骤一:将转换后的虚拟中间语言代码加载到虚拟机中;
[0043] 步骤二:根据预设的分析目标,查找虚拟中间语言代码中存在的潜在安全风险点;
[0044] 步骤三:逐条读取潜在安全风险点所在方法的指令,并模拟数据堆栈,得到流入风险点的数据;
[0045] 步骤四:对得到的流入风险点的数据进行评估,如果数据尚存在未知的部分,代码扫描引擎找出该位置部分数据的来源方法,未知的部分作为新的潜在安全风险点,返回执行步骤三,直到所有流入风险点的数据性质均确定,则对该方法的动态分析完成,输出动态分析得到的数据;
[0046] 步骤五:虚拟执行器中的代码分析引擎根据安全扫描规则判断动态分析得到的数据是否会引起真正的安全问题;若会引起真正的安全问题,则将该源码数据判断为存在安全漏洞。
[0047] 优选地,所述应用展现层模块提供的外部系统集成接口包括IDE plugin集成接口、持续集成工具集成接口和Bug跟踪系统集成接口。
[0048] 优选地,所述应用展现层模块包括基础数据管理模块、代码安全扫描任务管理模块、代码安全扫描报告管理模块和代码扫描引擎监控模块;
[0049] 所述基础数据管理功能模块,用于用户/账号管理、产品管理和权限管理,让不同权限的用户看到适合自己的视图,既满足安全工作需要,同时提供权限控制,防止敏感信息暴露;
[0050] 所述代码安全扫描任务管理模块提供即时扫描和周期扫描两种类型扫描任务,满足不同的场景需求;
[0051] 所述代码安全扫描报告管理模块用于概要报告查看、详细报告查看和报告下载;
[0052] 所述代码扫描引擎监控模块用于查看代码扫描引擎模块的工作状态,为管理员了解系统运行状态及负载提供必要的信息。
[0053] 优选地,所述应用展现层模块创建源代码扫描任务的步骤为:
[0054] 通过基础数据管理功能模块添加产品,输入产品名称并选择扫描文件类型;
[0055] 保存项目后,进入到扫描任务列表,选择扫描任务的详细信息,包括扫描类型是即时扫描或周期扫描,漏洞级别是严重、高危、中危、低危,配置扫描策略选择本系统所有的漏洞类型,版本号,并上传APK包后启动代码漏洞扫描。
[0056] 优选地,所述扫描文件类型包括J2EE和Android。
[0057] 优选地,所述代码安全扫描报告管理模块还用于与源代码关联的交互式安全漏洞查看,以及安全漏洞处理状态跟踪。
[0058] 优选地,所述代码扫描引擎模块的工作状态包括正在扫描的任务,扫描时长和内存等资源占用情况。
[0059] 优选地,所述数据存储层保存两种类型数据,一类是代码安全扫描引擎模块使用的元数据,另一类是用户在使用代码动态分析的移动应用源代码安全审计系统过程中产生的数据。
[0060] 优选地,用户在使用代码动态分析的移动应用源代码安全审计系统过程中产生的数据包括用户信息,产品信息,代码安全扫描任务数据和代码安全扫描报告。
[0061] 本申请所达到的有益效果:
[0062] 1.本申请采用新一代代码安全分析技术-虚拟执行,一定程度上解决了第一代和第二代基于模式匹配、数据流/控制流分析等技术存在的效率低下、准确度不高的问题;
[0063] 2.本申请解决了传统代码安全扫描工具存在的诸多问题,减少了在应对无效漏洞上所浪费的人力和时间成本,也降低由于传统代码扫描工具漏报给公司带来的安全风险。
[0064] 3.本申请可以根据公司的实际需求进行定制化,进一步提升效率,以尽量低的成本全面提高公司的代码安全水平。附图说明
[0065] 图1是本申请的一种基于代码动态分析的移动应用源代码安全审计系统结构图;
[0066] 图2是本申请实施例中虚拟执行器动态跟踪并分析程序代码的流程示意图;
[0067] 图3是本申请实施例中代码扫描引擎模块进行代码扫描分析的流程示意图;
[0068] 图4是本申请实施例中安全漏洞级别分布图;
[0069] 图5是本申请实施例中安全漏洞类型分布图。

具体实施方式

[0070] 下面结合附图对本申请作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本申请的保护范围。
[0071] 如图1所示,本申请的一种基于代码动态分析的移动应用源代码安全审计系统,以清晰易读的漏洞分析报告,丰富的统计、报表、图形展示界面,灵活的部署方式和扫描方式,让客户以更低成本全面提高产品安全水准。
[0072] 包括:代码扫描引擎模块、应用展现层模块和数据存储模块;
[0073] 所述代码扫描引擎模块与应用展现层模块协作,实现代码安全扫描任务的规划、创建、扫描和报告生成;
[0074] 所述应用展现层模块为移动应用源代码安全审计系统的前端界面,提供外部系统集成接口,包括IDE plugin集成接口、持续集成工具集成接口和Bug跟踪系统集成接口;
[0075] 所述数据存储模块用于移动应用源代码安全审计系统的数据保存。
[0076] 实施例中,所述数据存储层保存两种类型数据,一类是代码安全扫描引擎模块使用的元数据,另一类是用户在使用代码动态分析的移动应用源代码安全审计系统过程中产生的数据,包括用户信息,产品信息,代码安全扫描任务数据和代码安全扫描报告。
[0077] 本申请采用模块化设计,应用展现层、代码扫描引擎和数据存储都可以作为独立的子系统部署,根据运行环境和数据压力实现横向扩展。
[0078] 所述代码扫描引擎模块为本申请从错综复杂的代码中发现潜在的安全问题的核心,采用了业界独创的虚拟执行技术来进行代码分析和漏洞挖掘,通过在专用的虚拟机中加载和运行目标应用程序,在运行过程中,动态跟踪程序代码的运行期行为,从而能够更全面准确的理解程序逻辑。针对安全漏洞挖掘所构造的专用代码分析引擎,分析过程中专注于和安全风险相关的精准技术细节,大大提高漏洞挖掘的准确率。
[0079] 所述代码扫描引擎模块包括虚拟中间语言代码翻译器、安全扫描规则模块、虚拟执行器和扫描报告生成器;
[0080] 所述虚拟中间代码翻译器负责将被扫描项目/产品代码翻译成虚拟中间语言代码,并在翻译的过程中对被分析程序指令进行简化,仅保留与安全漏洞相关的信息,提高代码安全扫描效率和准确率;
[0081] 本申请自定义了一套虚拟中间语言,在对代码进行安全扫描时先将被分析的代码转换成该虚拟中间语言代码,然后针对翻译后的虚拟中间语言代码进行安全扫描,发现其中潜在的安全问题。
[0082] 这样的设计的有益效果为:
[0083] 易于扩展支持多语言-针对虚拟中间语言进行分析而不是针对项目/产品开发所使用的语言进行分析,使得代码扫描引擎摆脱了对特定开发语言的依赖。当代码扫描引擎希望增加新的开发语言支持时,理论上只需实现新开发语言的翻译即可;
[0084] 提高安全分析准确度-代码扫描引擎是采用动态执行的方式对代码进行分析,而被分析代码中包含的大量的与安全无关的逻辑会影响最终安全分析的准确度。代码安全扫描引擎在将代码翻译成虚拟中间语言时对代码进行了合理的简化,剔除了很多安全无关逻辑,从而提高了安全分析的准确度;
[0085] 提高安全分析速度-由于在将代码翻译成虚拟中间语言时对代码进行了合理的简化,剔除了很多安全无关逻辑,因此也大幅度提高了代码安全分析的速度。
[0086] 所述安全扫描规则模块用于定义不同安全漏洞类型的特征和安全扫描规则;
[0087] 本系统专注于Web安全漏洞扫描,目前支持的开发语言包括Java,JSP,C,C++等,支持包括输入验证、密码学、技术与协议等相关漏洞类型以及不安全的编程习惯等40余种安全漏洞,全面覆盖基本的Web应用相关的安全威胁。
[0088] 主要安全漏洞类型如表1所示:
[0089] 表1 Android平台主要安全漏洞类型名称及简介
[0090]
[0091]
[0092] 代码扫描引擎模块在扫描过程中按照安全漏洞类型相应的特征识别源代码存在的安全漏洞,下面就常见的SQL注入漏洞的扫描检测过程作如下详细介绍:
[0093] 1)扫描检测开始后,虚拟代码翻译器将被扫描项目代码翻译成虚拟中间语言代码;
[0094] 2)随后虚拟执行器结合安全扫描规则对代码进行动态分析并逐一进行判断,传递SQL参数采用GET、POST或Cookie查询字符串发生URL请求
[0095] 3)虚拟执行器中的代码分析引擎判断检测代码根据提交的SQL参数返回的结果;
[0096] 4)虚拟执行器中的代码分析引擎判断SQL参数是否可以SQL注入;若可以就获取数据库的有效载荷Payload信息,利用代码分析引擎进行动态分析,获取对应的敏感数据,例如数据库名称、数据库用户名及密码、表结构等信息;
[0097] 5)最终利用扫描报告生成器生成相应的源代码安全缺陷审计报告。
[0098] 所述虚拟执行器加载并执行转换后的虚拟中间语言代码,并根据安全扫描规则挖掘潜在的安全问题;
[0099] 实施例中,所述代码扫描引擎模块在代码扫描过程中,将转换后的虚拟中间语言代码加载到虚拟机中,强制启动虚拟执行器运行;
[0100] 虚拟执行器在受控制的运行过程中,动态跟踪并分析程序代码的运行期行为,从而更全面准确的理解程序逻辑。
[0101] 如图2所示,虚拟执行器动态跟踪并分析程序代码的过程如下:
[0102] 步骤一:将转换后的虚拟中间语言代码加载到虚拟机中;
[0103] 步骤二:根据预设的分析目标,查找虚拟中间语言代码中存在的潜在安全风险点;
[0104] 步骤三:逐条读取潜在安全风险点所在方法的指令,并模拟数据堆栈,得到流入风险点的数据;
[0105] 步骤四:对得到的流入风险点的数据进行评估,如果数据尚存在未知的部分,代码扫描引擎找出该位置部分数据的来源方法,未知的部分作为新的潜在安全风险点,返回执行步骤三,直到所有流入风险点的数据性质均确定,则对该方法的动态分析完成,输出动态分析得到的数据,即流入潜在风险点的数据;
[0106] 步骤五:虚拟执行器中的代码分析引擎根据安全扫描规则判断动态分析得到的数据是否会引起真正的安全问题;若会引起真正的安全问题,则将该源码数据判断为存在安全漏洞。
[0107] 所述扫描报告生成器对代码分析过程中发现的安全问题进行分类、整理和去重,并对发现的安全漏洞进行安全威胁等级定级,所述安全威胁等级包括严重、高危、中危或低危。
[0108] 所述代码扫描引擎模块进行代码扫描分析的过程如图3所示,传统代码扫描工具,常常需要修改项目的编译、打包脚本和流程。对于大型项目复杂的编译和打包流程而言,这项工作费时费力,很容易出错,常常造成代码扫描环境和项目正常打包环境的冲突和混乱。
[0109] 实施例中,所述应用展现层模块包括基础数据管理模块、代码安全扫描任务管理模块、代码安全扫描报告管理模块和代码扫描引擎监控模块;
[0110] 所述基础数据管理功能模块,用于用户/账号管理、产品管理和权限管理,让不同权限的用户看到适合自己的视图,既满足安全工作需要,同时提供完善的权限控制,防止敏感信息暴露;
[0111] 所述代码安全扫描任务管理模块提供即时扫描和周期扫描两种类型扫描任务,满足不同的场景需求;
[0112] 所述代码安全扫描报告管理模块用于概要报告查看、详细报告查看和报告下载,还用于与源代码关联的交互式安全漏洞查看,以及安全漏洞处理状态跟踪;
[0113] 所述代码扫描引擎监控模块用于查看代码扫描引擎模块的工作状态(如正在扫描的任务,扫描时长和内存等资源占用情况等),为管理员了解系统运行状态及负载提供必要的信息。
[0114] 所述代码扫描引擎模块与应用展现层模块协作,完成代码安全扫描任务的规划、创建、扫描和报告生成,过程为:
[0115] 通过代码扫描引擎模块中的安全扫描规则模块预定义不同安全漏洞类型的特征和安全扫描规则;
[0116] 应用展现层模块创建源代码扫描任务后,调用代码扫描引擎模块;
[0117] 代码扫描引擎模块中,虚拟中间代码翻译器对虚拟代码进行翻译后由虚拟执行器进行扫描检测,结合扫描规则对代码进行动态分析并逐一进行判断,最终利用扫描报告生成器生成相应的源代码安全缺陷审计报告。
[0118] 所述应用展现层模块创建源代码扫描任务的步骤为:
[0119] 通过基础数据管理功能模块添加产品,输入产品名称并选择扫描文件类型为J2EE或Android;
[0120] 保存项目后,进入到扫描任务列表,选择扫描任务的详细信息,包括扫描类型是即时扫描或周期扫描,漏洞级别是严重、高危、中危、低危,配置扫描策略选择本系统所有的漏洞类型,版本号,并上传APK包,点击保存按钮一键启动代码漏洞扫描,非常简便。
[0121] 本申请支持通过应用展现层的“产品管理”功能添加产品处上传APK,直接使用Java项目现有的APK进行扫描工作,不需要改动应用系统的编译和打包流程,省去繁琐、易错的配置修改和尝试过程,便捷高效。如果需要展示漏洞在源代码里的准确位置,用户也可以上传源代码到本系统的“扫描任务列表”中相应的测试项目的详细报告处。根据具体需求用户也可以设置周期性的定时扫描,扫描速度快,准确率高,可以灵活的融合到包括敏捷开发在内的各种软件开发流程中。
[0122] 具体的应用实施例如下:
[0123] 本申请系统于2019年10月30日对国网山东省电力公司《智慧基建管控平台APK》源代码进行安全审计。
[0124] 代码扫描摘要报告如表2所示:
[0125] 表2代码扫描摘要报告
[0126]应用系统名称 《智慧基建管控平台APK》
扫描类型 即时扫描
产品代码包名  
扫描漏洞级别 严重,高危,中危,低危
扫描策略 扫描策略
引擎版本号 v2019.02
扫描开始时间 2019-10-30 08:58:37
扫描消耗时长 3分49秒
扫描总文件数 3490
扫描代码总行数 103265
发现漏洞总个数 2249
高危以上漏洞个数 1
扫描完成度 100.00%
[0127] 安全漏洞级别定义如下:
[0128] 安全漏洞与信息资产密切相关,在一定条件或环境下可能被威胁利用,从而造成资产损失。漏洞的出现有各种原因,如软件开发过程中的质量问题,系统管理员的配置问题以及安全管理方面的问题,它们的共同特性就是给攻击者提供了对信息资产进行攻击的机会。参照国际通行标准和经验,我们在本次评估中将资产存在的漏洞的严重程度分为4个等级,分别是严重(C),高危(H)、中危(M)、低危(L),如表3所示:
[0129] 表3安全漏洞级别及定义
[0130]
[0131] 安全漏洞级别分布及安全漏洞类型分布分别如图4和图5所示。
[0132] 安全漏洞分布如表4所示:
[0133] 表4安全漏洞分布表
[0134]
[0135]
[0136] 本申请实施例通过对《智慧基建管控平台APK》项目的源代码审计和评估,确定应用系统是否存在可以被攻击者真实利用的漏洞以及由此所引起的风险大小,从而评估项目的安全防护水平,量化安全风险,为制定相应的应对措施与解决方案提供实际的依据。
[0137] 本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈