CN110990836B - 一种基于自然语言处理技术的代码泄露检测系统和方法 - Google Patents
一种基于自然语言处理技术的代码泄露检测系统和方法 Download PDFInfo
- Publication number
- CN110990836B CN110990836B CN201911305706.8A CN201911305706A CN110990836B CN 110990836 B CN110990836 B CN 110990836B CN 201911305706 A CN201911305706 A CN 201911305706A CN 110990836 B CN110990836 B CN 110990836B
- Authority
- CN
- China
- Prior art keywords
- module
- code
- source code
- suspicious
- webpage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于自然语言处理技术的代码泄露检测系统和方法,通过将代码视为更严格更具逻辑性的特殊语言,活用自然语言处理技术对源代码进行解析并分析,以取代人工解析、分析的过程,提取最能代表项目的关键信息;使用网络爬虫技术提取网页信息、并通过机器学习技术对采集的网页信息进行内容筛选提取;使用传统的文本相似度计算方法与深度学习算法相结合的策略,对源代码与网上可疑代码进行相似度比较,按照相似度高低显示可疑网页,为最终判定提供依据。解决传统的人工手段解析源代码并从源码中提取关键信息时,过度依赖人的经验、大规模代码解析的低效、耗时耗财力等问题。
Description
技术领域
本发明属于信息安全技术领域,具体涉及一种基于自然语言处理技术的代码泄露检测系统和方法。
背景技术
企业的信息安全关系到企业的正常发展。对于IT类企业,信息泄露是典型的信息安全事故,主要表现为项目中的代码、文档等资料泄露到网上。近年来,代码泄露事件频发,对企业或者个人都产生了一些负面影响,信息安全面临极大的挑战。产品核心代码泄露,可能会对产品的安全带来潜在威胁;企业机密信息泄露,可能会对企业造成直接经济损失;不仅是企业,信息泄露还会危害公众用户个人隐私。因此避免信息泄露很有必要。
那么,信息是如何泄露出去的呢?信息安全的威胁来自多个方面,例如病毒木马、黑客攻击、局域网内部ARP、溢出攻击、内部人员故意泄密、内部人员无意泄密、数据信息存储设备故障、自然灾害等。据调查报告显示,80%的安全威胁来自企业内部,60%的人离职会带走企业数据。
针对这些威胁,出现了相关的安全策略以及产品或者服务。例如以下预防信息泄露产品。
①DLP(Data Leakage Prevention)数据泄露防护
数据泄密防护(DLP)是通过一定的技术手段,防止企业的指定数据或信息资产以违反安全策略规定的形式流出企业的一种策略。通过加密、文档维护、文档外发限制、离线办公、设备管理、日志审计等多种方法,进行防护。
②加密软件
透明加密软件、磁盘加密软件等。所谓强制透明加密,是指采用后台自动加密方式,对操作者所存储的文档和数据实时进行强制加密,而操作者并无直观的感知。强制透明加密软件对于研发部门、设计部门或者其他核心部门的所有指定格式文档,均采用加密方式存储。
加密方式对部门之间的文档数据交互,以及对外信息交流产生直接的影响,因此,这种软件往往只部署在单位最核心的部门,或者是小型用户单位。不可能大规模部署在大集团用户。
③安全过滤网关的防泄密
以关键词查询为核心技术的安全过滤网关防泄密产品。这种产品一般是针对网页发帖、IM信息交互、邮件外发等内容进行深度过滤。利用深度的内容钻取技术获取传输的真实内容,附件可以准确的还原。通过对网络出口进行内容过滤的方式,一方面是因为内容本身没有进行加密和控制权限,另一方面是防范的途径非常有限。
④移动存储介质管理
移动存储介质往往成为一种泄密出口和泄密工具。一般会有部署在单位内部的移动介质管理系统,和单个的加密移动存储产品两种类型。不管移动存储介质管理产品多么的完善,都不足以防止单位内部信息泄漏。
市场上目前没有针对代码文档泄露至网上的检测产品或者服务。
由于信息泄露事故主要是由于企业内部员工的违规操作造成的,比如在个人博客中公开企业内部项目代码、使用公共存储服务上传公司项目代码等。为了避免信息泄露的发生,企业一方面需要加强员工的信息安全教育,防患于未然,另一方面需要定期检查现有项目,尽早发现已经发生的泄露事件。
人工检查项目是检查信息泄露的一种对策。由项目的负责人(或者项目成员)从项目中抽取关键字,使用搜索引擎搜索关键字,然后核对搜索出来的网页是否含有从项目中泄露出来的内容。人工检查的局限性在于企业有众多的历史项目,其中不乏代码量很大的大型项目,单纯依靠人工检查,受限于人工成本,只能检查有限的范围。如果能通过技术手段自动化整个检查过程,提升检查效率并提高检查精度,有助于尽早地检测到信息泄露情况并作出对应。
机器学习是一种能够赋予机器学习的能力,以此让它完成直接编程无法完成的功能的方法。从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。从应用领域上来说,机器学习跟模式识别,统计学习,数据挖掘,计算机视觉,语音识别,自然语言处理(NLP)等领域有着很深的联系。其中NLP技术的主要目的是让机器能够理解人类的语言,可以应用到智能问答、主题提取、机器翻译等领域。代码文本使用的编程语言作为比人类语言有着更加严格规则的人工语言,同样也可以作为NLP技术的使用对象。
发明内容
本发明所要解决的技术问题是针对上述现有技术的不足,提供一种基于自然语言处理技术的代码泄露检测系统和方法。
为实现上述技术目的,本发明采取的技术方案为:
一种基于自然语言处理技术的代码泄露检测系统,包括权限管理模块、邮件通知模块、日志记录模块、系统设定模块、项目登录模块、项目解析模块、关键字管理模块、搜索引擎模块、可疑分析判定模块,可疑页面表示及确认模块、Dashboard模块、数据库。
所述权限管理模块,用于针对企业用户管理系统访问权限的设定;
所述邮件通知模块,用于项目解析完成和信息泄露检测完成的情况下,向相关人员发送相关邮件;
所述日志记录模块,用于异常情况、错误发生时记录相关日志信息,方便解决问题;
所述系统设定模块,用于针对搜索引擎的设置和相似度阈值设置进行系统设定;
所述项目登录模块,用于代码上传及相关基础信息设定;
所述项目解析模块,用于代码解析,并提取关键字;
所述关键字管理模块,用于对关键字进行增删改查;
所述搜索引擎模块,用于基于搜索引擎取得可疑页面;
所述可疑分析判定模块,用于对提取的可疑页面提取网页正文中的代码,并与项目代码进行相似度计算;
所述可疑页面表示及确认模块,用于对提取的可疑页面提取网页正文中的代码,按照可疑度排序表示后,人工可对可疑页面进行判定,确认是否真实泄露
所述Dashboard模块,用于对项目数量、关键字数量、可疑网页数量、真实泄露网页数量等进行统计分析;
所述数据库,用于存储代码泄露检测系统的数据。
为优化上述技术方案,采取的具体措施还包括:
上述的搜索引擎模块包括爬虫模块和搜索API模块;
所述爬虫模块基于Google、Baidu和Yahoo通用搜索引擎搜索爬取可疑页面;
所述搜索API模块基于Google提供的搜索API以及GitHub提供的搜索API,取得可疑页面。
一种基于自然语言处理技术的代码泄露检测方法,所述方法包括以下步骤:
步骤1:上传项目源代码至项目登录模块,设定项目的基本信息;
步骤2:项目解析模块对项目源代码进行解析,提取函数、变量、注释、类、包等代码信息,基于代码信息提取关键字(Keyword)代码信息;
步骤3:关键字管理模块对关键字进行人工确认,包括增、删、改和查;
步骤4:搜索引擎模块检索关键字代码信息,抓取网页并保存;
使用爬虫模块或者搜索API模块分析搜索结果并保存;
步骤5:可疑分析判定模块将可疑网页中的代码块与源代码进行相似度比较;
步骤6:设定相似度阈值,可疑页面表示及确认模块显示高可疑网页相关信息;
步骤7:采用深度学习方法,对可疑度计算进行准确度改善。
上述的步骤1具体为:
步骤1.1:通过SVN、GIT或本地文件上传的形式,将源代码上传至系统;
步骤1.2:对步骤1.1中上传的源代码进行预处理,消除与源代码完全无关的文件,只保留源代码文本文件;
上述的步骤2具体为:
步骤2.1:对步骤1.2中取得的源代码文本文件进行解析,将源代码按文件提取关键字信息,所述关键信息包括包、类、函数、变量和注释;
步骤2.2:将步骤2.1中提取的关键字信息与源代码文件建立索引,方便后续检索;
步骤2.3:对步骤2.1中提取的关键字信息进行筛选:
将同一个源代码文件中的关键字,采用TF-IDF改进算法对关键字打分,提取得分高的Top N个关键字,其中N=代码量*4;
步骤2.4:采用步骤2.3中的方法,对所有源代码文件进行关键字筛选;
步骤2.5:对步骤2.4中取得的每个文件的关键字,再采用TF-IDF改进算法对关键字打分,提取得分高的Top N个关键字,其中N=代码量*4;
所述TF-IDF改进算法通过源代码文本分词、去停用词、函数单位加权和源代码文本单位加权实现源代码文本间关键词加权;
具体的,源代码文本分词:对源代码解析,提取包名、函数名、变量名和注释信息,对提取的信息进行分词;
去停用词:分词完成后,去停字符长度为1的词;
函数单位加权:函数体内部分词结果,加大注释的权重,计算各单词权重词频,得到函数单位的关键词;
源代码文本单位加权:针对源代码文本单位中的函数,调整函数名的权重,统计词频,对各个函数的关键词进行TF-IDF计算,得到源代码文本单位的关键词。
上述的步骤3具体为:
将步骤2.4中取得的关键字保存至系统的数据库,可进行增删改查操作。
上述的步骤4具体为:
步骤4.1:获取保存至系统数据库中的关键字信息,并将其作为输入项,代入爬虫模块;
步骤4.2:启动爬虫模块,根据Google、Baidu、Yahoo的搜索结果爬取相应网页,其中爬取网页数可设置;
步骤4.3:将步骤4.2中抓取的网页保存至系统的数据库。
步骤4.4:获取步骤4.3保存至系统数据库中的网页信息,过滤广告、网页Header和网页Footer信息,保留网页正文;
步骤4.5:过滤步骤4.4中取得的网页正文,提取并保留网页中的源代码内容;
步骤4.6:对步骤4.5中提取的源代码内容进行分割,按照关键字与代码块内容建立索引,便于搜索。
上述的步骤5具体为:
获取步骤4.6中的网页源代码及步骤2.2中的解析待检测源代码,分别作为源代码A和源代码B,将源代码A与源代码B进行相似度计算(该方法为传统文本相似度计算方法);
上述的步骤5.1中,源代码A与源代码B采用余弦相似度计算或杰卡德相似度计算。
上述的步骤6具体为:
步骤6.1:设定阈值,显示步骤5.1中相似度高于阈值的可疑网页内容;
步骤6.2:对显示的高可疑网页内容进行人工判定,确认是否为真实泄露。
上述的步骤7具体为:
步骤7.1:对人工确认的可疑网页确认结果,进行标记;标记好的数据,作为训练集;
步骤7.2:采用基于FastText框架的词向量网络模型,进行训练,得到网页泄露判定器;
步骤7.3:对搜集的可疑网页,代入网页泄露判定器,区分是真实泄露,还是非泄露。
本发明具有以下有益效果:
1.本发明通过将代码视为更严格更具逻辑性的特殊语言,活用自然语言处理技术对源代码进行解析并分析,以取代人工解析、分析的过程,提取最能代表项目的关键信息(即关键字);解决传统的人工手段解析源代码并从源码中提取关键信息时,过度依赖人的经验、大规模代码解析的低效、耗时耗财力等问题;
2.本发明使用网络爬虫技术提取网页信息、并通过机器学习技术对采集的网页信息进行内容筛选提取(只提取网页中代码模块,过滤掉网页中的广告、文章标题内容等信息),为后续代码泄露判定做准备;解决了传统的人工手段搜索公网上是否发布了非公开项目的源代码时,比如使用浏览器在各种搜索引擎(Baidu、Google、Yahoo等)中输入关键字,根据搜索结果人工判定网页是否含有泄露的源码信息的过程中,依然存在的人工搜索的耗时耗财力、人工搜索存在遗漏的可能性问题;
3.本发明使用传统的文本相似度计算方法与深度学习算法相结合的策略,对源代码与网上可疑代码进行相似度比较,按照相似度高低显示可疑网页,为最终判定提供依据;解决了传统的人工进行代码比对的耗时耗财力以及人工比对存在的判定失误问题。
附图说明
图1是本发明系统的服务器构成图;
图2是本发明方法的流程示意图;
图3是本发明系统的架构图;
图4是本发明系统的权限管理模块
图5是本发明系统的项目登录模块
图6是本发明系统的项目登录模块
图7是本发明系统的关键字管理模块
图8是本发明系统的可疑网页表示及确认模块界面一
图9是本发明系统的可疑页面表示及确认模块界面二
图10是本发明系统的Dashboard模块
图11是本发明方法的流程实施例图;
图12是本发明改进了TF-IDF算法的应用原理图;
图13是本发明系统的结构示意图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细描述。
本发明的一种基于自然语言处理技术的代码泄露检测系统和方法,主要包含以下几个实施内容:
1)建设内容:为了保障企业的信息安全,需要检查内部的代码等资料是否泄漏到网络上。目前这一工作需要人工抽取关键字、检索并判定网页,不光耗费大量人工,而且检查的范围也很有限。本发明利用AI技术(特别是NLP技术)对相关环节加以改进,以达到自动检查的效果。
2)关键技术:采用NLP等技术对项目的源代码进行分析,抽取出有代表性的关键字;利用爬虫技术检索到含有关键字的网页;采用NLP、深度学习等技术计算可疑网页和代码的相似度,来判断代码是否泄露。
3)关键指标:检测的自动化(降低人工成本)、检测的定期化(及早发现泄露情况)、检测的效率化(扩大检查范围)、检测的智能化(减少检查错误)。
参照图1-3和图13,本发明的一种基于自然语言处理技术的代码泄露检测系统,包括权限管理模块、邮件通知模块、日志记录模块、系统设定模块、项目登录模块、项目解析模块、关键字管理模块、搜索引擎模块、可疑分析判定模块,可疑页面表示及确认模块、Dashboard模块、数据库。
所述权限管理模块,用于针对企业用户管理系统访问权限的设定;
所述邮件通知模块,用于项目解析完成和信息泄露检测完成的情况下,向相关人员发送相关邮件;
所述日志记录模块,用于异常情况、错误发生时记录相关日志信息,方便解决问题;
所述系统设定模块,用于针对搜索引擎的设置和相似度阈值设置进行系统设定;
所述项目登录模块,用于代码上传及相关基础信息设定;
所述项目解析模块,用于代码解析,并提取关键字;
所述关键字管理模块,用于对关键字进行增删改查;
所述搜索引擎模块,用于基于搜索引擎(Google、Baidu、Bing、Yahoo、GitHub等)取得可疑页面;
所述可疑分析判定模块,用于对提取的可疑页面提取网页正文中的代码,并与项目代码进行相似度(可疑度)计算;
所述可疑页面表示及确认模块,用于对提取的可疑页面提取网页正文中的代码,按照可疑度排序表示后,人工可对可疑页面进行判定,确认是否真实泄露
所述Dashboard模块,用于对项目数量、关键字数量、可疑网页数量、真实泄露网页数量等进行统计分析;
所述数据库,用于存储代码泄露检测系统的数据。
实施例中,搜索引擎模块包括爬虫模块和搜索API模块;
所述爬虫模块基于Google、Baidu和Yahoo通用搜索引擎搜索爬取可疑页面;
所述搜索API模块基于Google提供的搜索API以及GitHub提供的搜索API,取得可疑页面。
主要功能模块的说明如下:
权限管理模块:
参照图4,为了方便企业用户的无缝对接,本发明提供了外部LDAP/AD、本地LDAP两种用户管理方式;系统管理员用户登录后,页面上显示企业成员基本信息以及是否有登录到本系统的权限的信息;权限管理模块支持模糊检索以及精确检索;
权限管理模块通过“权限追加”与“权限解除”进行权限管理:
权限追加:可为选中的用户添加系统登录权限;
权限解除:可解除选中用户的系统登录权限。
项目登录模块:
参照图5,项目一览。该模块展示的是当前用户参与的项目列表,列表中包含以下信息:项目名、项目负责人(上传项目者)、创建日期、关键字数量、可疑网页数量、检测详细、检测状态、其他操作。
“项目创建中”:上传代码至后台服务器,并创建项目的过程;
“项目创建失败”:代码上传失败或者项目创建失败;
“代码解析中”:解析代码并自动抽取关键字的过程;
“代码解析完成”:代码解析并抽取关键字的成功,该状态下可打开“关键字”页面,对关键字进行增删改查操作;
“检索中”:关键字确认完成后,必须手动执行“检索可疑网页”操作,状态变更为“检索中”,以进行后续检测;
“检索完成”:可疑网页搜索完成后,显示检索完成;
“检测中”:可疑网页与源代码进行比较的过程;
“检测完成”:可疑网页与源代码比较结束后的状态,该状态下可进行“可疑网页”的详细确认。
参照图6,新建项目。新建项目对话框中填写项目信息,搜索引擎为百度,谷歌,雅虎,GitHub等。
项目名称为必填项,项目成员、部门领导为选填项,搜索引擎为必填,并可多选。
本系统的项目文件上传有2种方式:仓库(SVN或Git)、文件。
关键字管理模块:
参照图7,当项目解析完成并成功提取关键字成功后,用户可以查看关键字一览。点击项目一览中的“关键字”链接,将跳转到关键字页面。用户可以针对关键字进行“修改”、“删除”、“批量删除”、“新增关键字”操作。
可疑页面表示及确认模块:
参照图8,当项目检测完成后,点击项目列表中的“可疑网页”链接,跳转到可疑网页一览页面。
可疑网页一览展示所有可疑系数超过80%(可疑系数阈值)的结果。包含的信息有:网页标题(点击可跳转)、来源、关键字、代码文件名、网页日期、可疑系数、确认状态、更多。
页面上方“标记为泄露”、“标记为未泄露”按钮,可针对可疑网页进行人工确认,以判定是否真的泄露。
参照图9,点击“更多”列中的“详情”链接,弹出可疑网页详情对话框。对话框展示网页疑似代码以及项目原始代码等信息。
Dashboard模块:
参照图10,针对所有项目/单个项目统计可疑网页数量,关键字数量,针对不同搜索引擎统计信息泄露百分比,将信息在一个画面中集中展示。
一种基于自然语言处理技术的代码泄露检测方法,包括以下步骤:
步骤1:上传项目源代码至项目登录模块,设定项目的基本信息;
步骤2:项目解析模块对项目源代码进行解析,提取函数、变量、注释、类、包等代码信息,基于代码信息提取关键字(Keyword)代码信息;
步骤3:关键字管理模块对关键字进行人工确认,包括增、删、改和查;
步骤4:搜索引擎模块检索关键字代码信息,抓取网页并保存;
使用爬虫模块或者搜索API模块分析搜索结果并保存;
步骤5:可疑分析判定模块将可疑网页中的代码块与源代码进行相似度比较;
步骤6:设定相似度阈值,可疑页面表示及确认模块显示高可疑网页相关信息;
步骤7:采用深度学习方法,对可疑度计算进行准确度改善。
实施例中,所述步骤1具体为:
步骤1.1:通过SVN、GIT或本地文件上传的形式,将源代码上传至系统;
步骤1.2:对步骤1.1中上传的源代码进行预处理,消除与源代码完全无关的文件,只保留源代码文本文件;
实施例中,所述步骤2具体为:
步骤2.1:对步骤1.2中取得的源代码文本文件进行解析,将源代码按文件提取关键字信息,所述关键信息包括包、类、函数、变量和注释;
步骤2.2:将步骤2.1中提取的关键字信息与源代码文件建立索引,方便后续检索;
步骤2.3:对步骤2.1中提取的关键字信息进行筛选:
将同一个源代码文件中的关键字,采用TF-IDF改进算法对关键字打分,提取得分高的Top N个关键字,其中N=代码量*4(超参数,可人为根据经验指定);
步骤2.4:采用步骤2.3中的方法,对所有源代码文件进行关键字筛选;
步骤2.5:对步骤2.4中取得的每个文件的关键字,再采用TF-IDF改进算法对关键字打分,提取得分高的Top N个关键字,其中N=代码量*4(超参数,可人为根据经验指定);
传统TF-IDF算法,TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF为词频(Term Frequency),IDF为逆文本频率指数(Inverse Document Frequency)。存在的缺陷是:单纯的认为单词在文本中出现频率越少就越重要,出现频率越多就越无用;但是对于大部分文本,并不能完全适用。
参照图12,针对源代码,本发明改进了TF-IDF算法,所述TF-IDF改进算法通过源代码文本分词、去停用词、函数单位加权和源代码文本单位加权实现源代码文本间关键词加权;
具体的,源代码文本分词:对源代码解析,提取包名、函数名、变量名、注释等。由于源代码的写法,遵循一定规则,例如函数、变量的命名方式,遵从驼峰命名方式。对提取的信息进行分词。
去停用词:传统TF-IDF中使用的语料中记载了常见的停用词,即没有什么意义的词。对于代码,却不同。分词完成后,字符长度为1的词,我们认为无用。
函数单位加权:函数体内部分词结果,加大注释的权重,计算各单词权重词频,得到函数单位的关键词。(函数单位内,注释中的信息,更具有代表性)
源代码文本单位加权:源代码文本单位,含有众多函数,调整函数名的权重,统计词频,对各个函数的关键词进行TF-IDF计算,得到源代码文本单位的关键词。(源代码文本单位内,函数名更具有代表性)
实施例中,所述步骤3具体为:
将步骤2.4中取得的关键字保存至系统的数据库,可进行增删改查操作。
实施例中,所述步骤4具体为:
步骤4.1:获取保存至系统数据库中的关键字信息,并将其作为输入项,代入爬虫模块;
步骤4.2:启动爬虫模块,根据Google、Baidu、Yahoo的搜索结果爬取相应网页,其中爬取网页数可设置;
步骤4.3:将步骤4.2中抓取的网页保存至系统的数据库。
步骤4.4:获取步骤4.3保存至系统数据库中的网页信息,过滤广告、网页Header和网页Footer信息,保留网页正文;
步骤4.5:过滤步骤4.4中取得的网页正文,提取并保留网页中的源代码内容;
步骤4.6:对步骤4.5中提取的源代码内容进行分割,按照关键字与代码块内容建立索引,便于搜索。
实施例中,所述步骤5具体为:
获取步骤4.6中的网页源代码及步骤2.2中的解析待检测源代码,分别作为源代码A和源代码B,将源代码A与源代码B进行相似度计算(该方法为传统文本相似度计算方法);
上述的步骤5.1中,源代码A与源代码B采用余弦相似度计算或杰卡德相似度计算。
实施例中,所述步骤6具体为:
步骤6.1:设定阈值,显示步骤5.1中相似度高于阈值的可疑网页内容;
步骤6.2:对显示的高可疑网页内容进行人工判定,确认是否为真实泄露。
参照图11,实施例中,所述步骤7具体为:
步骤7.1:对人工确认的可疑网页确认结果,进行标记;标记好的数据,作为训练集;
步骤7.2:采用基于FastText框架的词向量网络模型,进行训练,得到网页泄露判定器(分类器);
步骤7.3:对搜集的可疑网页,代入网页泄露判定器,区分是真实泄露,还是非泄露。
具体应用结果如表1所示:
表“系统检测”对比“人工检测”
方法 | 项目数 | 代码量 | 耗时 | 效率 | 泄露页面数 |
人工检测 | 8 | 1000Ks | 4800min | 0.2Ks/min | 6 |
系统检测 | 10 | 6827Ks | 127min | 53.8Ks/min | 7 |
单位说明:Ks(千行)min(分钟)Ks/min(千行/分钟)。
表1中人工检测的工程(8个),是实施例中公司实际的项目。由于发生过信息泄露的安全事故,需要采用人工检测的方式进行复查。人工检测发现泄露页面数6个,发现泄露页面数后,将相关页面从Internet删除,如果删除完全,理论上不会再检测出相关泄露网页。
表1中系统检测的工程(10个),含上述8个工程。采用本发明系统自动检测+人工确认的方式,效率提升269倍,同时发现了人工检测未发现的泄露页面。
因此,本发明在效率以及检测覆盖度上优于人工检测。
综上所述,本发明的代码泄露检测系统,采用人工智能领域的自然语言处理技术,对源代码进行自动解析,活用互联网搜索引擎,定期检测代码是否被泄露到互联网,可实现及早发现,及时处理,避免重大损失。
本发明系统适用于软件研发企业,以及拥有软件源代码资产的其他行业。市场上,针对信息安全,以防止泄露为主,但是不管如何预防,信息泄露事件时有发生。
本发明系统区别于一般预防信息泄露产品,旨在信息泄露事件发生后的自动检测预警,企业导入本代码泄露检测系统后,与现有技术相比(主要是人工检测),可实现检测的自动化(降低人工成本)、检测的定期化(及早发现泄露情况)、检测的效率化(扩大检查范围)及检测的智能化(减少检查遗漏)。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (8)
1.一种基于自然语言处理技术的代码泄露检测系统,其特征在于,包括权限管理模块、邮件通知模块、日志记录模块、系统设定模块、项目登录模块、项目解析模块、关键字管理模块、搜索引擎模块、可疑分析判定模块,可疑页面表示及确认模块、Dashboard模块和数据库;
所述权限管理模块,用于针对企业用户管理系统访问权限的设定;
所述邮件通知模块,用于项目解析完成和信息泄露检测完成的情况下,向相关人员发送相关邮件;
所述日志记录模块,用于异常情况、错误发生时记录相关日志信息,方便解决问题;
所述系统设定模块,用于针对搜索引擎的设置和相似度阈值设置进行系统设定;
所述项目登录模块,用于代码上传及相关基础信息设定;
所述项目解析模块,用于代码解析,并提取关键字;
所述关键字管理模块,用于对关键字进行增删改查;
所述搜索引擎模块,用于基于搜索引擎取得可疑页面;
所述可疑分析判定模块,用于对提取的可疑页面提取网页正文中的代码,并与项目代码进行相似度计算;
所述可疑页面表示及确认模块,用于对提取的可疑页面提取网页正文中的代码,按照可疑度排序表示后,人工可对可疑页面进行判定,确认是否真实泄露;
所述Dashboard模块,用于对项目数量、关键字数量、可疑网页数量、真实泄露网页数量进行统计分析;
所述数据库,用于存储代码泄露检测系统的数据;
所述搜索引擎模块包括爬虫模块和搜索API模块;
所述爬虫模块基于Google、Baidu和Yahoo通用搜索引擎搜索爬取可疑页面;
所述搜索API模块基于Google提供的搜索API以及GitHub提供的搜索API,取得可疑页面;
基于所述检测系统的代码泄露检测方式包括:
步骤1:上传项目源代码至项目登录模块,设定项目的基本信息;
步骤2:项目解析模块对项目源代码进行解析,提取函数、变量、注释、类、包代码信息,基于代码信息提取关键字代码信息;
步骤3:关键字管理模块对关键字进行人工确认,包括增、删、改和查;
步骤4:搜索引擎模块检索关键字代码信息,抓取网页并保存;
使用爬虫模块或者搜索API模块分析搜索结果并保存;
步骤5:可疑分析判定模块将可疑网页中的代码块与源代码进行相似度比较;
步骤6:设定相似度阈值,可疑页面表示及确认模块显示高可疑网页相关信息;
步骤7:采用深度学习方法,对可疑度计算进行准确度改善。
2.根据权利要求1所述的一种基于自然语言处理技术的代码泄露检测系统的代码泄露检测方法,其特征在于,所述步骤1具体为:
步骤1.1:通过SVN、GIT或本地文件上传的形式,将源代码上传至系统;
步骤1.2:对步骤1.1中上传的源代码进行预处理,消除与源代码完全无关的文件,只保留源代码文本文件。
3.根据权利要求2所述的一种基于自然语言处理技术的代码泄露检测系统的代码泄露检测方法,其特征在于,所述步骤2具体为:
步骤2.1:对步骤1.2中取得的源代码文本文件进行解析,将源代码按文件提取关键字信息,所述关键字信息包括包、类、函数、变量和注释;
步骤2.2:将步骤2.1中提取的关键字信息与源代码文件建立索引,方便后续检索;
步骤2.3:对步骤2.1中提取的关键字信息进行筛选:
将同一个源代码文件中的关键字,采用TF-IDF改进算法对关键字打分,提取得分高的Top N个关键字,其中N=代码量*4;
步骤2.4:采用步骤2.3中的方法,对所有源代码文件进行关键字筛选;
步骤2.5:对步骤2.4中取得的每个文件的关键字,再采用TF-IDF改进算法对关键字打分,提取得分高的Top N个关键字,其中N=代码量*4;
所述TF-IDF改进算法通过源代码文本分词、去停用词、函数单位加权和源代码文本单位加权实现源代码文本间关键词加权;
具体的,源代码文本分词:对源代码解析,提取包名、函数名、变量名和注释信息,对提取的信息进行分词;
去停用词:分词完成后,去停字符长度为1的词;
函数单位加权:函数体内部分词结果,加大注释的权重,计算各单词权重词频,得到函数单位的关键词;
源代码文本单位加权:针对源代码文本单位中的函数,调整函数名的权重,统计词频,对各个函数的关键词进行TF-IDF计算,得到源代码文本单位的关键词。
4.根据权利要求3所述的一种基于自然语言处理技术的代码泄露检测系统的代码泄露检测方法,其特征在于,所述步骤3具体为:
将步骤2.4中取得的关键字保存至系统的数据库,可进行增删改查操作。
5.根据权利要求4所述的一种基于自然语言处理技术的代码泄露检测系统的代码泄露检测方法,其特征在于,所述步骤4具体为:
步骤4.1:获取保存至系统数据库中的关键字信息,并将其作为输入项,代入爬虫模块;
步骤4.2:启动爬虫模块,根据Google、Baidu、Yahoo的搜索结果爬取相应网页,其中爬取网页数可设置;
步骤4.3:将步骤4.2中抓取的网页保存至系统的数据库;
步骤4.4:获取步骤4.3保存至系统数据库中的网页信息,过滤广告、网页Header和网页Footer信息,保留网页正文;
步骤4.5:过滤步骤4.4中取得的网页正文,提取并保留网页中的源代码内容;
步骤4.6:对步骤4.5中提取的源代码内容进行分割,按照关键字与代码块内容建立索引,便于搜索。
6.根据权利要求5所述的一种基于自然语言处理技术的代码泄露检测系统的代码泄露检测方法,其特征在于,所述步骤5具体为:
获取步骤4.6中的网页源代码及步骤2.2中的解析待检测源代码,分别作为源代码A和源代码B,将源代码A与源代码B进行相似度计算;
源代码A与源代码B采用余弦相似度计算或杰卡德相似度计算。
7.根据权利要求6所述的一种基于自然语言处理技术的代码泄露检测系统的代码泄露检测方法,其特征在于,所述步骤6具体为:
步骤6.1:设定阈值,显示步骤5.1中相似度高于阈值的可疑网页内容;
步骤6.2:对显示的高可疑网页内容进行人工判定,确认是否为真实泄露。
8.根据权利要求7所述的一种基于自然语言处理技术的代码泄露检测系统的代码泄露检测方法,其特征在于,所述步骤7具体为:
步骤7.1:对人工确认的可疑网页确认结果,进行标记;标记好的数据,作为训练集;
步骤7.2:采用基于FastText框架的词向量网络模型,进行训练,得到网页泄露判定器;
步骤7.3:对搜集的可疑网页,代入网页泄露判定器,区分是真实泄露,还是非泄露。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911305706.8A CN110990836B (zh) | 2019-12-18 | 2019-12-18 | 一种基于自然语言处理技术的代码泄露检测系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911305706.8A CN110990836B (zh) | 2019-12-18 | 2019-12-18 | 一种基于自然语言处理技术的代码泄露检测系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110990836A CN110990836A (zh) | 2020-04-10 |
CN110990836B true CN110990836B (zh) | 2022-05-20 |
Family
ID=70095027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911305706.8A Active CN110990836B (zh) | 2019-12-18 | 2019-12-18 | 一种基于自然语言处理技术的代码泄露检测系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990836B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898100A (zh) * | 2020-06-17 | 2020-11-06 | 新浪网技术(中国)有限公司 | 代码泄露溯源的方法、装置及终端设备 |
CN112182338A (zh) * | 2020-11-02 | 2021-01-05 | 国网北京市电力公司 | 托管平台的监控方法和装置 |
EP3992838B1 (en) * | 2020-11-02 | 2024-07-31 | Tata Consultancy Services Limited | Method and system for extracting natural language elements embedded in application source code |
CN112613031A (zh) * | 2020-11-26 | 2021-04-06 | 新华三技术有限公司 | 一种数据流的检测方法和装置 |
CN114781008B (zh) * | 2022-04-15 | 2022-10-28 | 山东省计算中心(国家超级计算济南中心) | 面向物联网终端固件安全检测的数据识别方法及装置 |
CN114968778A (zh) * | 2022-05-24 | 2022-08-30 | 中电科网络空间安全研究院有限公司 | 一种大规模源代码相似度检测方法、系统及装置 |
CN117596054B (zh) * | 2023-11-29 | 2024-05-07 | 北京中电汇通科技有限公司 | 一种基于动态网络信息安全的网络安全方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250769A (zh) * | 2016-07-30 | 2016-12-21 | 北京明朝万达科技股份有限公司 | 一种多级过滤的源代码数据检测方法及装置 |
CN110209901A (zh) * | 2019-05-29 | 2019-09-06 | 四川长虹电器股份有限公司 | 对Github上特定目标敏感信息监控的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9002876B2 (en) * | 2010-12-02 | 2015-04-07 | Sap Se | Interpreted computer language to analyze business object data with defined relations |
-
2019
- 2019-12-18 CN CN201911305706.8A patent/CN110990836B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250769A (zh) * | 2016-07-30 | 2016-12-21 | 北京明朝万达科技股份有限公司 | 一种多级过滤的源代码数据检测方法及装置 |
CN110209901A (zh) * | 2019-05-29 | 2019-09-06 | 四川长虹电器股份有限公司 | 对Github上特定目标敏感信息监控的方法 |
Non-Patent Citations (1)
Title |
---|
基于多特征权重分配的源代码搜索优化;李阵等;《计算机应用》;20180310(第3期);第812-817页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110990836A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110990836B (zh) | 一种基于自然语言处理技术的代码泄露检测系统和方法 | |
CN107577939B (zh) | 一种基于关键字技术的数据防泄漏方法 | |
CN106790256B (zh) | 用于危险主机监测的主动机器学习系统 | |
US7386439B1 (en) | Data mining by retrieving causally-related documents not individually satisfying search criteria used | |
AU2010202627A1 (en) | Automated forensic document signatures | |
CN108509561B (zh) | 基于机器学习的岗位招聘数据筛选方法、系统及存储介质 | |
CN111314292A (zh) | 一种基于敏感数据识别的数据安全检查方法 | |
Singh et al. | Design and implementation of continuous monitoring and auditing in SAP enterprise resource planning | |
Jiang et al. | An insider threat detection method based on user behavior analysis | |
CN103279476A (zh) | 一种web应用系统敏感文字的检测方法及系统 | |
CN107196942B (zh) | 一种基于用户语言特征的内部威胁检测方法 | |
CN109918638B (zh) | 一种网络数据监测方法 | |
Garba et al. | An email content-based insider threat detection model using anomaly detection algorithms | |
Liu et al. | An illegal billboard advertisement detection framework based on machine learning | |
Savenkov et al. | Organizations Data Integrity Providing through Employee Behavioral Analysis Algorithms | |
Heidenreich | How to design a method for measuring IT security in micro enterprises for IT security level measuring? A literature analysis | |
Zhu et al. | Bs-net: A behavior sequence network for insider threat detection | |
Alotaibi | ETDC: an efficient technique to cleanse data in the data warehouse | |
Deniswara et al. | Reimagining a New Transformation of Digital Forensic Accounting: Strategic Analysis of the Use of Big Data Analytics in the Covid-19 Pandemic Era as an Opportunity for the Industries in Indonesia | |
Wu et al. | Design of a Computer‐Based Legal Information Retrieval System | |
Kim et al. | Carnegie Mellon University’s CERT dataset Analysis and suggestions | |
Dhake et al. | Stratification of hacker forums and predicting cyber assaults for proactive cyber threat intelligence | |
Li | Improved Insider Threat Detection Method of University Cluster System based on Log-Clustering | |
Liu | Construction of Computer Mega Data Security Technology Platform Based on Machine Learning | |
RU2778460C1 (ru) | Способ и устройство для кластеризации фишинговых веб-ресурсов на основе изображения визуального контента |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |