24小时论文定制热线

热门毕设:土木工程工程造价桥梁工程计算机javaasp机械机械手夹具单片机工厂供电采矿工程
您当前的位置:论文定制 > 毕业设计论文 >
快速导航
毕业论文定制
关于我们
我们是一家专业提供高质量代做毕业设计的网站。2002年成立至今为众多客户提供大量毕业设计、论文定制等服务,赢得众多客户好评,因为专注,所以专业。写作老师大部分由全国211/958等高校的博士及硕士生设计,执笔,目前已为5000余位客户解决了论文写作的难题。 秉承以用户为中心,为用户创造价值的理念,我站拥有无缝对接的售后服务体系,代做毕业设计完成后有专业的老师进行一对一修改与完善,对有答辩需求的同学进行一对一的辅导,为你顺利毕业保驾护航
代做毕业设计
常见问题

人机协同 Java 字节码漏洞扫描系统的设计与实现

添加时间:2021/08/02 来源:未知 作者:乐枫
现存基于词法分析的静态漏洞扫描工具未充分考虑上下文,无法准确判别误报漏洞代码的固有特征,存在大量误报信息,开发人员需要手动筛选正报漏洞,不仅增大维护成本,甚至导致部分开发人员弃用扫描工具。
以下为本篇论文正文:

摘 要

  软件系统规模以及复杂性的不断增大,软件安全问题层出不穷,其产生的原因往往是程序本身在代码设计或实现过程中的错误或缺陷(称为漏洞),普通软件工程师的缺陷密度一般为 50-250 个缺陷/KLOC.在源码级别对程序进行漏洞扫描和安全审计,可以在源头上减少 10%-50% 安全漏洞的产生。但现存基于词法分析的静态漏洞扫描工具未充分考虑上下文,无法准确判别误报漏洞代码的固有特征,存在大量误报信息,开发人员需要手动筛选正报漏洞,不仅增大维护成本,甚至导致部分开发人员弃用扫描工具。

  为了降低目前漏洞扫描工具误报率,本文依托于公司的众包审核平台,设计并实现了一个人机协同 Java 字节码漏洞扫描系统。本文对静态漏洞扫描工具以及常见误报漏洞进行了分析,详细研究了字节码上下文提取、代码特征提取以及机器学习分类模型,同时融合众包专家审核,并结合实际场景中的漏洞扫描需求,实现该系统。首先,系统基于静态漏洞扫描工具对项目进行漏洞扫描,并确保其完备性。其次,基于 Joana(Java Object-sensitive ANAlysis)程序切片工具对漏洞相关代码进行上下文提取,并基于 N-gram 语言模型对代码上下文进行特征提取。然后,利用基于完全匹配、随机森林算法的双层分类模型对扫描漏洞结果进行误报过滤。最后,将漏洞结果送予众包审核进行专家误报漏洞过滤,并将审核结果存储留作后续过滤模型的迭代训练。并根据最终漏洞结果为用户提供机器过滤以及专家审核融合的完备、低误报漏洞扫描报告。本系统主要分为交互展示模块、漏扫核心模块以及迭代学习模块,并使用 SpringBoot 框架、Pug模板引擎、微服务等技术与架构完成系统的实现。

  本文实现的人机协同 Java 字节码漏洞扫描系统提供低误报漏洞扫描服务。

  在 OWASP 数据集上实验表明,本系统在 95.39% 召回率的情况下,其精准率可以达到 89.71%,与原版扫描工具相比,本系统将误报率减少近 22%.本系统在确保低漏报率的基础上有效地降低传统静态漏洞扫描工具的误报率,从而节约维护成本,帮助开发者提高代码整体质量。目前,本系统已在公司平台上线,用于支撑公司静态漏洞扫描服务。

  关键词:漏洞扫描,误报过滤,众包审核,人机协同

Abstract

  With the increasing scale and complexity of software systems, software security problems emerge one after another. The causes are often errors or defects (called vulnerabilities) in the code design or implementation process of the program itself. The defect density of ordinary software engineers is generally 50-250 defects / KLOC. Vulnerability scanning and security audit are carried out at the source code level, It can reduce the generation of security vulnerabilities by 10% - 50% at the source. However, the existing static vulnerability scanning tools based on lexical analysis do not fully consider the context and can not accurately distinguish the inherent characteristics of false positive vulnerability codes. There is a large amount of false positive information. Developers need to manually screen positive vulnerabilities, which not only increases the maintenance cost, but also leads some developers to abandon the scanning tools.

  In order to reduce the false positive rate of current vulnerability scanning tools, this paper designs and implements a man-machine cooperative Java bytecode vulnerability scanning system based on the company's crowdsourcing audit platform. This paper analyzes the static vulnerability scanning tool and common false positive vulnerabilities, studies the bytecode context extraction, code feature extraction and machine learning classification model in detail, integrates the audit of crowdsourcing experts, and realizes the system in combination with the vulnerability scanning requirements in the actual scene. Firstly, the system scans the vulnerability of the project based on the static vulnerability scanning tool and ensures its completeness. Secondly, the context of vulnerability related code is extracted based on Joana (Java object sensitive analysis) program slicing tool, and the feature of code context is extracted based on n-gram language model. Then, the double-layer classification model based on perfect matching and random forest algorithm is used to filter the false positives of the scanning vulnerability results. Finally, the vulnerability results are sent to the crowdsourcing audit for expert false alarm vulnerability filtering, and the audit results are stored for the iterative training of the subsequent filtering model. According to the final vulnerability results, it provides users with a complete and low false positive vulnerability scanning report of machine filtering and expert audit fusion. The system is mainly pided into interactive display module, missed scan core module and iterative learning module, and the implementation of the system is completed by using technologies and architectures such as springboot framework, Pug template engine and microservice.

  The man-machine cooperative Java bytecode vulnerability scanning system implemented in this paper provides low false alarm vulnerability scanning service.

  Experiments on OWASP data set show that the accuracy of the system can reach 89.71% with a recall rate of 95.39%. Compared with the original scanning tool, the system reduces the false alarm rate by nearly 22%. On the basis of ensuring a low false alarm rate, the system effectively reduces the false alarm rate of the traditional static vulnerability scanning tool, so as to save the maintenance cost and help developers improve the overall quality of the code. At present, the system has been launched on the company's platform to support the company's static vulnerability scanning service.

  Keywords: vulnerability scanning, false positive filtering, crowdsourcing audit, man-machine collaboration

目录

  第一章 引言

  1.1 研究背景与意义

  随着计算机技术的广泛使用,软件系统的复杂性和规模也在不断增大,在给生活带来极大便利的同时,也暴露出更多的安全问题 [1].近年来,软件安全问题层出不穷,其产生的主要原因往往是程序本身在代码设计或实现过程中存在错误或缺陷(称为漏洞),恶意攻击者通常会利用这些安全漏洞攻击软件系统,从而导致各类信息被窃、重要数据丢失、服务器性能下降,严重威胁被攻击软件系统和用户的利益安全。360 互联网安全中心 [2] 指出,软件开发过程中通常会引入大量缺陷,普通软件工程师的缺陷密度一般为 50-250 个缺陷/KLOC1.同时《2019 中大型政企机构网络安全建设发展趋势研究报告》 [3] 中指出源码安全审计可以在系统开发阶段发现潜在安全漏洞,可节约 5%-20% 后期安全维护费用,并且可减少 10%-50% 系统安全漏洞。因此在源码级别对程序进行漏洞扫描和安全审计,可以在源头上减少安全漏洞的产生,从而节约维护费用,有效减少恶意攻击事件的发生,保证软件安全性。

  程序分析技术的迅速发展也推进了代码漏洞扫描技术的进展,尤其是代码漏洞静态扫描技术。但是代码漏洞静态检测方法在不执行程序的情况下进行漏洞扫描,难以在有限时间内判定抽象路径的可达性 [4].为了不漏掉真实漏洞,即保证低漏报,大多静态扫描工具使用基于模式匹配、数据流分析等技术,并采用过度近似策略,这些工具通常不能充分了解程序上下文,会受到无关信息的干扰 [5].以上原因导致现有漏洞扫描工具在尽可能检测出漏洞的同时,会产生大量的误报漏洞,即现有工具一般低漏报、高误报。开发人员或安全工程师需要手动检查以及修正这些漏洞,而大量误报的存在增加了工程师筛选真正漏洞的成本,这也是导致部分开发者弃用漏洞扫描工具的原因之一 [6].因此,降低漏洞扫描工具的误报率至关重要。

  由于误报漏洞的某些固有特征,如不可达漏洞代码等,目前直接通过静态漏洞扫描工具无法舍弃这种误报,但在安全工程师或开发人员眼中却一目了然。

  如图 1.1中的代码片段,可能产生漏洞的位置为第 10 行,由于用户可控的参数param 可能会赋值给 bar,但是第 6 行的条件判断永远为 true,因此第 9 行代码永远不会被执行,故该代码不存在漏洞,但很多漏洞扫描工具会将其作为漏洞返回,此为误报。

  综上所述,由于代码的固有特征以及静态扫描的本质缺陷,静态漏洞扫描工具存在大量误报结果,而纯人工漏洞检测需要手动检测相关代码,存在成本高、耗时长等缺点。因此设计一种人机协同的、有效降低漏洞扫描误报率的服务是有意义且十分必要的。通过本系统,用户提交漏洞扫描任务后,多种扫描工具将对项目进行漏洞扫描,以确保漏洞结果的完备性;通过基于特征提取与机器学习的误报过滤模型失败误报漏洞,最后通过众包专家审核人工核实是否正报,降低整体漏洞扫描的误报率,进而减少开发人员或安全工程师审计代码安全性的时间,节约项目开发与维护成本,帮助开发人员提高系统整体安全性。如何结合机器学习以及众包审核等技术来实现上述系统即是本文研究与阐述的重点。

  1.2 研究现状

  代码漏洞扫描相关领域一直都是工业界与学术界的研究热点,本节主要介绍漏洞扫描相关领域的国内外研究现状。

  1.2.1 漏洞扫描现状

  代码漏洞扫描一般依赖于两种程序分析技术:动态程序分析和静态程序分析。其中,动态程序分析技术通过运行程序并观察程序在运行过程中的相关行为来进行漏洞扫描 [7].基于动态程序分析技术的漏洞扫描可以准确发现程序在运行时可能会产生的漏洞,但其扫描成本较高,漏洞覆盖率较低,无法有效扫描出漏洞。与之相反,静态程序分析技术不需要执行程序,直接扫描代码中可能存在的错误 [8].基于静态程序分析技术的漏洞扫描通过分析程序代码中不同的控制流程以及变量可能存在的不同值在程序运行前进行漏洞扫描,也正因如此,静态扫描通常会产生大量的误报信息。

  常见静态分析技术包括:词法分析、语法分析、抽象语法树分析、语义分析、控制流分析、数据流分析、污点分析 [9] 和无效代码分析等。其中,词法分析 [10] 基于模式匹配,对源码字符流进行扫描,将之与预定义漏洞正则表达式匹配,从而判断是否漏洞,这类分析技术实现较为简单,但未考虑上下文,只能识别特定类型漏洞,会产生大量误报。数据流与污点分析等主要借助数据流图对代码中的数据流向进行相关分析,这一类分析方法适合于数组越界、注入类等漏洞,但无法很好分析容器变量、控制流等信息,也会存在大量误报。

  市场上效果较好的主流 Java 静态扫描工具主要有如下几种:基于缺陷模式匹配的 PMD [11],它能检测源代码中如不必要对象创建、未使用字段等漏洞;基于缺陷模式匹配的 CheckStyle,它主要用来分析代码编写是否符合规定的编码规则;基于缺陷模式匹配、数据流分析以及污点分析的 SpotBugs2和 Find-secbugs3插件,它们主要对 Java 字节码进行相关漏洞扫描;商业工具 FortifySCA,它自定义统一的中间表示形式可以分析绝大多数主流编程语言编写的代码 [12].

  其中,PMD 和 CheckStyle 主要关注代码规范问题,SpotBugs 和 Find-sec-bugs 更注重分析安全问题,而 FortifySCA 是商业工具,价格较为昂贵。

  以上工具主要存在误报率高的问题 [13],增加了开发者或安全工程师手动筛选正报漏洞的成本,甚至导致开发人员弃用扫描工具。MITRE4组织发起 CWE(Common Weakness Enumeration)5项目对软件系统的常见漏洞进行了分类整理,并为每种漏洞提供相关示例以及解决方案。这一标准可以为工程师提供统一标准参考,针对高误报问题,学术界则提出了很多误报过滤技术。

  1.2.2 误报过滤现状

  过高的误报率会增加开发人员的开发维护成本,甚至导致开发人员弃用漏洞扫描工具。降低漏洞扫描工具误报率的方法一般分为两种:一是在扫描工具层面,改进工具本身的扫描机制,提高扫描工具的准确性;二是在扫描结果处理层面,对扫描工具产生的结果进行二次过滤。前者需要对工具本身使用的核心技术进行改进或替换,不利于后期迭代扩展,该方法的实现难度较大。后者在漏洞扫描工具的基础上,通过构建误报检测模型对漏洞结果进行过滤,以区分误报漏洞和正报漏洞,该方法基于代码特征分析与机器学习中的分类模型,无需关注扫描工具底层原理,适用性较广,故研究者较多。

  Bharti 等人 [14] 通过结合程序切片、迭代上下文扩展(ICE)以及有界模型检查的循环抽象(LABMC)来对程序中的大循环进行抽象,从而检测出由于大循环造成的相关漏洞误报,该方法局限于大循环里的误报漏洞,对于其他位置的误报并不能很好检测出。Ibéria 等人 [15] 使用常见的分类模型如 ID3、KNN、朴素贝叶斯等对基于污点传播扫描的漏洞进行误报检测,此分类模型效果较好,但只针对基于污点传播扫描的漏洞,类型有所局限。JooWoo 等人 [16] 使用抽象语法树表示代码的结构性特征,并使用支持向量机模型(SVM)来进行分类模型的训练,该方法忽略了代码的语义信息。Koc 等人 [17] 提取误报和正报代码的字节码指令集,并结合贝叶斯和长短时记忆模型在六种不同的漏洞类型上进行分类的训练,精确度接近 80%,该方法实验数据较少,无法保证真实环境下的效果,且实验涉及漏洞较少,无法保证其他漏洞类型上的效果。Arzt 等人 [18]

  提出一种基于符号执行方法来检测安卓程序中的数据流误报,通过检测扫描出的漏洞代码执行路径,找出进入该执行路径的相关条件,判断这些条件是否能被满足,从而消除逻辑上无法执行的路径上产生的相关漏洞,该方法需要大量计算资源,在处理大规模程序时无法保证产生结果。

  使用机器学习等技术的最大问题是能否在真实工程项目中获得如实验中足够高的准确率。以上相关研究的实验均是在相关机构公布的数据集或少数开源项目上进行,无法保证其在真实项目中的效果。因此,我们需要结合众包审核技术来扩增大量真实的数据集,以此确保误报过滤在真实项目中的效果。

  1.2.3 众包技术现状

  众包技术可以在极大程度上解决误报过滤模型前期训练数据不足的问题。

  众包技术 [19] 是软件测试领域的一个新兴趋势,众包技术通过将任务直接发布至互联网,并招募大量众包工人参与完成任务,从而获取大量真实的数据。其中定向众包 [20] 是一种众包工人分配方式,定向众包通过众包平台将相关任务分配给指定的众包工人,这些定向的众包工人一般为某一领域的专家或某一组织的内部成员。因此,一般可以认为定向众包工人能够高效高质量地完成任务,即众包审核后的结果是可靠的。

  现有众包技术一般用于众包测试领域,即平台发布测试任务,众包工人完成任务并填写相关测试报告,经被测产品方确认后给予众包工人相应奖励,如HackerOne、补天、漏洞盒子等现有企业级产品。本文结合漏洞扫描与众包审核技术,将扫描后的漏洞分发给相关领域专家进行误报漏洞审核,进一步降低系统整体的漏洞率;同时,众包审核后产生的真实数据为误报过滤模型的迭代训练提供了数据支撑。

  1.3 本文主要研究工作

  针对当前代码漏洞静态扫描工具误报率高,开发人员难以快速筛选正报结果从而导致扫描工具不可用或不易用的问题,本文深入研究现有代码漏洞扫描工具的原理与优缺点,并结合众包审核技术设计并构建了人机协同的低误报 Java字节码漏洞扫描系统。

  本系统主要通过以下三个方面的设计来实现该目标:

  首先系统关注于扫描工具的改造与集成。对比选取市场上主流漏洞扫描工具,并根据 CWE 标准为工具能扫描出的漏洞修改或补充相关描述信息。扫描工具在本身扫描机制实现中可能存在不合理的地方,从而直接导致部分误报的产生,因此,本文深入研究工具的扫描机制以及相应漏洞列表,并结合部分误报漏洞特征,在扫描工具层面手动屏蔽部分漏洞的扫描。此部分需对扫描工具本身进行相应改造与封装,并按统一标准集成到系统中。

  其次系统集中于如何训练分类模型,实现对误报漏洞的过滤。本文将采用代码缩减技术与机器学习相结合的方法 [17] 实现误报过滤模型的构建。漏洞相关代码一般是少量的,本文基于扫描工具漏洞相关位置信息提取漏洞相关上下文,以消除无关代码的干扰。然后,根据具体实验效果,选取 N-gram 与随机森林进行分类模型的训练。

  最后系统围绕如何结合众审进一步实现误报过滤,同时促进误报过滤模型的迭代训练,实现人机协同的迭代漏洞扫描系统。根据机器扫描结果与众审结果生成人机融合扫描报告,误报更低可靠性更高。众审结果不断扩增真实数据集,促进误报过滤模型的迭代训练,使得系统整体误报率更低。

  综合上述需求与设计,本系统使用 Spring Boot 框架开发,并使用 Docker 进行独立部署,与其他服务松耦合。系统使用 HTTP 协议与其他服务进行数据传输,并向外提供 RESTful 接口,简单标准易扩展。其中,封装的扫描工具和过滤模型需按指定标准集成接入,方便工具和模型的快速迭代和统一管理。静态报告采用 Pug 模板引擎进行编译,可自动化渲染出图文并茂的漏洞扫描报告。

  1.4 本文组织结构

  本文的组织结构如下:

  第一章引言部分。本章首先介绍了项目背景以及本项目的研究意义,然后分析了国内外静态漏洞扫描的研究现状以及存在的不足,最后介绍了本文的主要研究工作和论文的组织结构。

  的具体需求,选取适合本项目的相关技术方案及框架。主要包括扫描工具、程序切片技术、分类算法、微服务以及页面渲染工具等。

  第三章漏洞扫描系统的需求分析与设计。首先对系统进行了整体概述,然后结合用例图、逻辑视图等方式对系统进行了功能以及非功能性需求分析,最后介绍了交互展示模块、漏扫核心模块、迭代学习模块三个模块的概要设计。

  第四章漏洞扫系统的具体实现。在第三章的基础上,阐述了交互展示模块、漏扫核心模块以及迭代学习模块的具体实现,并给出了相应的核心类图、关键代码以及界面截图。

  第五章漏洞扫描系统的测试与实验评估。首先介绍了系统的测试环境,然后对整个系统进行了相关功能与性能测试,最后对本系统降低漏洞扫描误报率效果进行了实验验证。

  第六章总结与展望。对本文所做工作进行了总结,分析了研究工作中存在的不足,并对未来的进一步工作进行了展望。

  第二章 相关技术综述

  2.1 常见漏洞类型

  2.1.1 SQL 注入

  2.1.2 路径遍历

  2.1.3 弱加密

  2.2 漏洞扫描相关工具

  2.2.1 SpotBugs 工具

  2.2.2 Find-sec-bugs 工具

  2.2.3 程序切片技术

  2.3 语言模型与分类算法

  2.3.1 N-gram 模型

  2.3.2 Random Forest 算法

  2.4 系统核心技术栈

  2.4.1 Docker 容器技术

  2.4.2 微服务

  2.4.3 Pug 模板引擎

  2.5 本章小结

  第三章 系统需求分析与概要设计

  3.1 系统整体概述

  3.2 系统需求分析

  3.2.1 漏洞类型分析

  3.2.2 功能性需求

  3.2.3 非功能性需求

  3.2.4 用例分析

  3.3 系统总体设计

  3.3.1 系统架构

  3.3.2 4+1 视图

  3.3.3 持久化对象设计

  3.4 系统各模块设计

  3.4.1 交互展示模块设计

  3.4.2 漏扫核心模块设计

  3.4.3 迭代学习模块设计

  3.5 本章小结

  第四章 详细设计与实现

  4.1 交互展示模块

  4.1.1 任务管理与分发的实现

  4.1.2 报告前端渲染实现

  4.2 漏扫核心模块

  4.2.1 漏洞扫描工具集成

  4.2.2 上下文提取实现

  4.2.3 误报过滤实现

  4.2.4 转众包审核实现

  4.3 迭代学习模块

  4.3.1 数据集与数据预处理

  4.3.2 分类模型训练的实现

  4.3.3 模型相关参数评估

  4.4 页面展示

  4.5 本章小结

  第五章 系统测试与实验分析

  5.1 测试环境

  5.2 功能与性能测试

  5.2.1 功能测试

  5.2.2 性能测试

  5.2.3 健壮性测试

  5.3 实验分析

  5.3.1 数据集

  5.3.2 实验流程

  5.3.3 评估指标

  5.3.4 结果分析

  5.4 案例分析

  5.5 本章小结

第六章 总结与展望

  6.1 总结

  软件系统规模不断增大,软件安全问题也层出不穷,在源码级别对程序进行漏洞扫描可以一定程度减少漏洞产生。多数静态扫描工具基于词法分析扫描漏洞,采用过度近似策略以保证结果的完备性,这导致其误报率过高。针对这一问题,本文设计并实现人机协同 Java 字节码漏洞扫描系统,通过机器误报过滤以及人工众包审核,有效降低漏洞扫描工具误报率,为开发人员节约成本。

  本文为实现上述目标,主要阐述了以下三个核心方面的设计与实现:

  首先对比选取市场上主流漏洞扫描工具,并根据 CWE 标准为工具漏洞列表补充相关描述信息。最终选取开源工具 SpotBugs 和 Find-sec-bugs 插件作为 Java字节码漏洞扫描核心工具,并将其改造封装成符合系统接入标准的统一工具,主要实现 start、status 和 stop 三个原语操作。同时提供相应 Dockerfile 部署文件为后续 docker 化工作提供扩展。借助 Joana 程序后向切片工具提取漏洞相关上下文内容,作为漏洞描述扩充项之一。

  其次利用 OWASP benchmark1.1 数据集进行初始误报过滤分类模型的训练与评估,其中 90% 数据为训练集,10% 数据为测试数据集。分类主要针对对象为漏洞上下文信息,对漏洞上下文进行分词、去除停用词等预处理操作,再利用N-gram 提取三元特征,最后使用随机森林作为分类器进行模型训练。

  最后,为进一步迭代改进误报过滤模型,系统接入众包审核服务,众审专家对漏洞进行人工审核,并融合机器扫描过滤和人工审核报告。众审结果可以提取为带正误报标签的漏洞库,为误报过滤迭代训练提供数据支撑。

  本系统使用 Angular2 作为前端架构,Pug 模板引擎作为静态报告生成框架,为用户提供友好的交互方式。使用 Spring Boot 作为后端框架,并使用 Docker 进行独立部署,提供轻量级微服务。同时使用 Redis 作为缓存以减少数据库访问压力,MongoDB 作为数据库存储大量漏洞信息。系统与其他服务通过 HTTP 协议进行数据传输,并对外提供 RESTful 接口。

  本文首先阐述了研究背景与意义,并介绍相关技术及工具。其次,通过框架图、流程图、用例图等描述了系统概要设计和各模块功能设计。然后,通过具体时序图和关键代码描述了系统详细设计与实现方法。最后,对系统功能和性能进行测试,并通过实验验证系统可以有效降低漏洞扫描工具误报率。

  6.2 展望

  本文设计并实现了一个人机协同 Java 字节码漏洞扫描系统并已部署到线上服务器,此系统致力于为用户提供低误报低漏洞的漏洞扫描服务。为进一步提高系统效果,未来将针对以下几个方式改进系统。

  1. 扩展扫描器数量。目前本系统仅支持单扫描器,后续为系统改造并集成多个扫描器,扫描器接入均需符合统一接入标准。通过多个扫描器扫描结果融合,以确保结果完备性,从而降低漏报率。

  2. 扩展漏洞特征。目前本系统使用 Joana 程序后向切片工具提取漏洞上下文,其在大型项目上存在时间隐患,后续需对其进一步优化。同时,系统目前使用 N-gram 语言模型提取上下文三元特征,后续将进一步扩展使用上下文的语义语法等特征。

  3. 扩展误报过滤模型。目前本系统使用随机森林作为误报过滤分类器,该分类模型在小量数据集上效果较好。后续随着真实项目漏洞数据库扩展,将尝试使用深度学习等方法在大量数据集上训练模型,选取效果优胜者作为系统过滤模型,从而提供系统准确率。

  4. 适配漏洞类型。目前对于所有类型误报过滤,本系统均使用随机森林分类模型,该模型在各类型漏洞上过滤效果有明显差异。后续将针对特定类型漏洞,使用特定分类算法进行模型训练,将过滤模型与漏洞类型适配,进一步降低误报率。

  此外,随着系统用户量增长以及访问需求增长,将采用分布式部署方式以满足更高的并发性需求

  参考文献

  [1] C. Banerjee, S. Pandey, Research on software security awareness: problems andprospects, ACM SIGSOFT Software Engineering Notes 35 (5) (2010) 1-5.

  [2] 360 团队, 360 代码安全保障系统 v5.0 技术白皮书 (2015) 1-2.

  [3] 中国测评 CSTC, 2019 中大型政企机构网络安全建设发展趋势研究报告(2019) 2-4.

  [4] T. Ball, B. Cook, V. Levin, S. K. Rajamani, Slam and static driver verifier: Technology transfer of formal methods inside microsoft, in: International Conferenceon Integrated Formal Methods, Springer, 2004, pp. 1-20.

  [5] O. Tripp, S. Guarnieri, M. Pistoia, A. Aravkin, Aletheia: Improving the usabilityof static security analysis, in: Proceedings of the 2014 ACM SIGSAC Conferenceon Computer and Communications Security, 2014, pp. 762-774.

  [6] B. Johnson, Y. Song, E. Murphy-Hill, R. Bowdidge, Why don't software developers use static analysis tools to find bugs?, in: 2013 35th International Conferenceon Software Engineering (ICSE), IEEE, 2013, pp. 672-681.

  [7] M. D. Ernst, Invited talk static and dynamic analysis: synergy and duality,in: C. Flanagan, A. Zeller (Eds.), Proceedings of the 2004 ACM SIGPLANSIGSOFT Workshop on Program Analysis For Software Tools and Engineering,PASTE'04, Washington, DC, USA, June 7-8, 2004, ACM, 2004, p. 35.

  [8] P. Louridas, Static code analysis, IEEE Software 23 (4) (2006) 58-61.

  [9] 肖锋, 张玉清, 源码审核技术中的词法分析, 中国科学院研究生院学报 26 (03)(2009) 408-414.

  [10] 周严, 基于污点分析的静态漏洞检测可扩展框架, Master's thesis, 南京大学(2017)。

  [11] T. Copeland, PMD applied, Vol. 10, Centennial Books Arexandria, Va, USA,2005.

  [12] 王斌, 基于 Fortify SCA 的隐通道分析技术的研究与实现, Master's thesis, 北京理工大学 (2016)。

  [13] T. Kremenek, D. Engler, Z-ranking: Using statistical analysis to counter the impact of static analysis approximations, in: International Static Analysis Symposium, Springer, 2003, pp. 295-315.

  [14] B. Chimdyalwar, P. Darke, A. Chavda, S. Vaghani, A. Chauhan, Eliminating staticanalysis false positives using loop abstraction and bounded model checking, in:International Symposium on Formal Methods, Springer, 2015, pp. 573-576.

  [15] I. Medeiros, N. Neves, M. Correia, Detecting and removing web application vulnerabilities with static analysis and data mining, IEEE Transactions on Reliability65 (1) (2015) 54-69.

  [16] J. Yoon, M. Jin, Y. Jung, Reducing false alarms from an industrial-strength staticanalyzer by SVM, in: Proceedings of 21st Asia-Pacific Software EngineeringConference, Vol. 2, IEEE, 2014, pp. 3-6.

  [17] U. Koc, P. Saadatpanah, J. S. Foster, A. A. Porter, Learning a classifier for falsepositive error reports emitted by static code analysis tools, in: Proceedings of the1st ACM SIGPLAN International Workshop on Machine Learning and Programming Languages, 2017, pp. 35-42.

  [18] S. Arzt, S. Rasthofer, R. Hahn, E. Bodden, Using targeted symbolic executionfor reducing false-positives in dataflow analysis, in: Proceedings of the 4th ACMSIGPLAN International Workshop on State of the Art in Program Analysis, 2015,pp. 1-6.

  [19] 章晓芳, 冯洋, 众包软件测试技术研究进展, 软件学报 29 (1) (2018) 69-88.

  [20] T. D. LaToza, A. Van Der Hoek, Crowdsourcing in software engineering: Models,motivations, and challenges, IEEE software 33 (1) (2015) 74-80.

  [21] Z. S. Alwan, M. F. Younis, Detection and prevention of sql injection attack: Asurvey, International Journal of Computer Science and Mobile Computing 6 (8)(2017) 5-17.

  [22] S. Edwards, J. Spacco, D. Hovemeyer, Can industrial-strength static analysis beused to help students who are struggling to complete programming activities?, in:

  Proceedings of the 52nd Hawaii International Conference on System Sciences,2019, pp. 1-10.

  [23] K. Liu, D. Kim, T. F. Bissyandé, S. Yoo, Y. Le Traon, Mining fix patterns forfindbugs violations, IEEE Transactions on Software Engineering (2018) 1-1.

  [24] E. H. Oskouei, O. Kal?ps?z, Comparing bug finding tools for java open sourcesoftware (2018)。

  [25] B. Xu, J. Qian, X. Zhang, Z. Wu, L. Chen, A brief survey of program slicing,ACM SIGSOFT Software Engineering Notes 30 (2) (2005) 1-36.

  [26] M. Weiser, Program slicing, IEEE Transactions on software engineering (4)(1984) 352-357.

  [27] K. J. Ottenstein, L. M. Ottenstein, The program dependence graph in a softwaredevelopment environment, ACM Sigplan Notices 19 (5) (1984) 177-184.

  [28] S. Horwitz, T. Reps, D. Binkley, Interprocedural slicing using dependence graphs,ACM Transactions on Programming Languages and Systems (TOPLAS) 12 (1)(1990) 26-60.

  [29] J.-F. Bergeretti, B. A. Carré, Information-flow and data-flow analysis ofwhile-programs, ACM Transactions on Programming Languages and Systems(TOPLAS) 7 (1) (1985) 37-61.

  [30] V. Berzins, Software Merging and Slicing, IEEE Computer Society Press, 1995.

  [31] I. S. Chung, W. K. Lee, G. S. Yoon, Y. R. Kwon, Program slicing based on specification, in: Proceedings of the 2001 ACM symposium on Applied computing,2001, pp. 605-609.

  [32] W. K. Lee, I. S. Chung, G. S. Yoon, Y. R. Kwon, Specification-based programslicing and its applications, Journal of Systems Architecture 47 (5) (2001) 427-443.

  [33] K. Li, H. Xu, Y. Wang, D. Povey, S. Khudanpur, Recurrent neural network language model adaptation for conversational speech recognition., in: Interspeech,ISCA, 2018, pp. 3373-3377.

  [34] L. Verwimp, J. Pelemans, P. Wambacq, et al., Character-word lstm language models, arXiv preprint arXiv:1704.02813.

  [35] Y. Kim, Y. Jernite, D. Sontag, A. M. Rush, Character-aware neural language models, in: Thirtieth AAAI Conference on Artificial Intelligence, AAAI Press, 2016,pp. 2741-2749.

  [36] J. Tanha, M. van Someren, H. Afsarmanesh, Semi-supervised self-training for decision tree classifiers, International Journal of Machine Learning and Cybernetics8 (1) (2017) 355-370.

  [37] A. Mathur, G. M. Foody, Multiclass and binary svm classification: Implicationsfor training and classification users, IEEE Geoscience and remote sensing letters5 (2) (2008) 241-245.

  [38] P. F. Brown, V. J. D. Pietra, P. V. de Souza, J. C. Lai, R. L. Mercer, Class-basedn-gram models of natural language, Computational Linguistics 18 (4) (1992) 467-479.

  [39] T. Huang, Y. Nevmyvaka, A practical markov chain monte carlo approach to decision problems., in: FLAIRS Conference, AAAI Press, 2001, pp. 520-524.

  [40] M. Pal, Random forest classifier for remote sensing classification, InternationalJournal of Remote Sensing 26 (1) (2005) 217-222.

  [41] K. J. Lidl, Understanding docker, login Usenix Mag. 42 (4)。

  [42] H. Kang, M. Le, S. Tao, Container and microservice driven design for cloud infrastructure devops, in: 2016 IEEE International Conference on Cloud Engineering(IC2E), IEEE, 2016, pp. 202-211.

  [43] 张仁良, 软件架构中的非功能需求, 微型电脑应用 1 (2009) 61-64.

  [44] P. B. Kruchten, The 4+ 1 view model of architecture, IEEE software 12 (6) (1995)42-50.

  [45] 孟祥双, 前后端分离式 web 应用开发研究, 电子元器件与信息技术 3 (6)(2019) 40-43.

  [46] E. Ayanoglu, Y. Aytas, D. Nahum, Mastering RabbitMQ, Packt Publishing Ltd,2016.

  [47] P. Bertelsen, Semantics of java byte code (1997)。

  [48] 佘青, 利用 apache jmeter 进行 web 性能测试的研究, Ph.D. thesis (2012)。

  [49] M. Hossin, M. Sulaiman, A review on evaluation metrics for data classificationevaluations, International Journal of Data Mining & Knowledge ManagementProcess 5 (2) (2015) 1.

致 谢

  在本篇毕业设计完成之际,我向所有在我毕设完成过程中指导和帮助过我的人致以最真挚的感谢。

  首先,感谢我的指导老师陈振宇老师和房春荣老师,这一次论文写作过程中离不开两位老师的谆谆教诲。在选题之初,两位老师帮我整理思路,并指明可行性方向。本次论文写作期间恰好不幸遭遇新冠肺炎疫情,但在次期间,两位老师多次通过会议线上跟踪我们的项目以及论文进度,并不断提出宝贵意见,不断帮助我改进项目与论文,督促我及时完成项目与论文。在我遇到瓶颈与打击时,房老师多次抽出时间和我进行沟通,鼓励我振奋精神,并给予技术性支持。

  再次感谢两位老师!

  其次,感谢我的实验室"iSE 实验室"以及实验室里众多兄弟姐妹,感谢实验室为我提供良好的学习氛围以及资源平台,感谢实验室成员协助我攻克不熟悉领域的难题,热心为我提供技术性支持与帮助。

  我要感谢母校南京大学,两年的研究生生涯虽然短暂但却充实,感谢母校为我提供良好的学习平台,我将谨记"励学敦行,诚朴雄伟"的校训砥砺前行。

  此外,我要感谢父母和家人对我的鼓励与帮助,在疫情期间想尽办法为我提供能专心完成项目以及论文的环境。

  最后,我要感谢各位论文审稿老师和专家,向你们的专业与敬业致敬。我也将努力成为向你们那样的人,无论未来在什么岗位上,都将认真对待。

(如您需要查看本篇毕业设计全文,请您联系客服索取)

相关内容
相关标签:Java毕业设计
好优论文定制中心主要为您提供代做毕业设计及各专业毕业论文写作辅导服务。 网站地图
所有论文、资料均源于网上的共享资源以及一些期刊杂志,所有论文仅免费供网友间相互学习交流之用,请特别注意勿做其他非法用途。
如有侵犯您的版权或其他有损您利益的行为,请联系指出,论文定制中心会立即进行改正或删除有关内容!