软件安全缺陷发现系统的制作方法

文档序号:9349860阅读:414来源:国知局
软件安全缺陷发现系统的制作方法
【技术领域】
[0001] 本发明涉及软件安全测试技术领域,具体涉及一种软件安全缺陷发现系统。
【背景技术】
[0002] 目前软件安全缺陷检测技术种类繁多且分散,主要的检测方法有静态分析、行为 监控、模糊测试和渗透测试4类,但上述4类检测方法对软件的检测方式方法完全不一样。 例如,利用静态分析检测软件的安全缺陷,通常是针对软件的源代码而言,也有一些工具能 够将Java、. NET程序的可执行文件反编译后进行静态分析。目前的静态分析安全缺陷检测 工具均是针对于一些主流的编程语言,且不同的编程语言都有其对应的静态分析工具。比 如针对 C/C++ 的有 CppCheck、Antic,针对 Java 的有 FindBugs、Jlint、PMD 等,还有针对 PHP 的 PHPLint 以及针对 JavaScript 的 JavaScriptLint。
[0003] 行为监控是对正在运行中的软件进行监控,记录软件运行时所有的底层系统调 用。行为监控分为两个阶段:训练和匹配。训练阶段需要反复多次运行软件,并记录下软件 运行时的系统调用序列,提取出其中的序列段形成知识库,序列段是由多个序列组成,代表 软件运行中的一次操作,比如打开文件操作。知识库是可以在将来被反复多次利用的,训练 次数越多,样本越全,知识库中序列段越精确。然后在实际测试软件的时候,监控本次软件 的系统调用序列提取出序列段,并与知识库中序列段相匹配,未能成功匹配的序列段就可 能产生安全隐患。
[0004] 模糊测试的核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视 程序异常,如崩溃,断言失败,以发现可能的诸如内存泄漏之类的程序错误。针对使用固定 的协议或输入内容格式固定的软件,模糊测试通过随机生成的测试数据能够很有效的对软 件可信数据的边界进行测试,进而发现那些正常使用时不容易探查到的安全缺陷。
[0005] 渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评 估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个 攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
[0006] 首先,由于上述检测方法通常都是各自独立存在的,比如静态分析有很多相关的 工具,多数编程语言都有一种对应的测试工具。这就造成了想要对软件进行安全缺陷检测 的学习成本很大,对一个多语言混杂的大型项目来说,需要精通各种测试工具才能实现比 较完整的安全缺陷检测,这也造成了在实际软件开发的过程中,很少对安全缺陷进行测试。
[0007] 其次,现有的缺陷检测工具生成的缺陷报告难懂且格式不统一,即使对一个软件 项目进行了较为完整的安全缺陷检测,想要快速、简单地读其各类报告也将非常困难,并且 由于缺陷报告分散也不便于对软件安全缺陷有一个整体的了解。
[0008] 再次,现在的缺陷检测通常只提供检测与查看功能,缺陷报告仍需手写,费时费 力。
[0009] 现有的比较完善的安全缺陷发现系统非常少,目前虽然《软件安全漏洞检测装置 和方法》(中国发明专利申请,公布号:CN 102541729A,公布日2012. 7.4)提供了模糊测试 和渗透测试的缺陷检测功能,并且配套有相应的缺陷管理功能来查看缺陷,但对于实际应 用时检测软件安全而言,一两种检测方法得到的检测结果比较片面,不足以反应出软件整 体安全状况,检测结果仍不完善。

【发明内容】

[0010] 有鉴于此,本发明提供了一种软件安全缺陷发现系统,能够对待测软件进行静态 分析、行为监测、模糊测试和渗透测试,测试方式完善,能够较完善、准确地发现软件的安全 缺陷,且提高了检测速度。
[0011] 本发明的软件安全缺陷发现系统,包括静态测试模块、行为监控模块、模糊测试模 块、渗透测试模块、行为监控知识库和缺陷数据库;其中,静态测试模块、行为监控模块、模 糊测试模块、渗透测试模块分别与缺陷数据库连接,行为监控模块、模糊测试模块、渗透测 试模块分别与静态测试模块连接,行为监控知识库与行为监测模块连接;
[0012] 其中,静态分析模块内包括若干个静态分析插件,每一个静态分析插件分别对应 着一个特定编程语言;静态分析模块在系统对被测软件的源代码目录进行递归扫描并获取 源代码目录下所有文件后,根据文件名后缀将文件分类并过滤掉静态分析模块中静态分析 插件不能检测的文件,然后针对各类型的源代码文件,选择对应的静态分析插件进行安全 检测,得到安全缺陷数据;将安全缺陷数据按照设定的缺陷数据库格式进行格式化处理后 存入缺陷数据库;
[0013] 行为监控模块针对由静态分析模块获得的安全缺陷,对输入的待测软件进行行为 监控,同时,也对待测软件进行其他的常规的行为监控,得到系统调用序列,并与行为监控 知识库中的参考系统调用序列相匹配;将系统行为异常的系统调用序列存入缺陷数据库 中;
[0014] 模糊测试模块针对由静态分析模块获得的安全缺陷,对待测软件进行模糊测试, 同时,也对待测软件进行其他的常规的模糊测试,将能够造成被测软件出现安全问题的模 糊测试用例存入缺陷数据库中;
[0015] 渗透测试模块针对由静态分析模块获得的安全缺陷,对待测软件进行渗透测 试,同时,也对待测软件进行其他的常规的渗透测试;其中,利用一台Linux服务器运行 metasploit软件对待测软件进行渗透测试;将能够造成被测软件出现安全问题的渗透测 试用例名存入缺陷数据库中;其中,Linux服务器监听来自待测软件所在系统的请求,当监 听到待测软件所在系统发送的待测软件及其所在系统的信息后,调用metasploit完成对 待测软件所在系统端口和服务的扫描,得到输出结果后,发送给待测软件所在系统。
[0016] 进一步地,所述缺陷数据库格式如下表所示:

[0018] 进一步地,对静态分析插件中的静态分析规则进行规则扩展,扩展方法如下:采用 "name"确定规则名;采用"file_type = A,B,…"指定本规则生效所针对的源代码文件编 码类型为A,B,…;采用"gr印=八.C\(/i"表示调用规则C进行匹配;采用"category" 表示本规则的分类;采用"category_link"链接到缺陷详情相关网址;采用"severity"表 示安全缺陷严重程度;采用"description"对缺陷进行描述。
[0019] 进一步地,建立渗透知识库,将Linux服务器下metasploit针对不同平台下、不同 版本的目标软件生成的渗透测试用例存入渗透知识库中,渗透检测模块直接调用渗透知识 库中的渗透测试用例去攻击被测软件,进行渗透测试。
[0020] 有益效果:
[0021] (1)本发明的软件安全缺陷发现系统,能够将静态分析、行为监测、模糊测试和渗 透测试四种缺陷检测方法融入系统中,让系统有一个完整且强大的缺陷检测流程,并且对 生成的大量繁杂的安全缺陷检测结果数据进行处理,使其数据格式统一,查看方便。同时, 检测流程自动化,能够减少安全缺陷测试人员的使用难度。
[0022] (2)本发明的静态分析模块能够适用于多种编程语言,且使用方便,需要选择待测 软件使用的编程语言和输入项目路径,便可自动进行静
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1