CN107169360A - 一种源代码安全漏洞的检测方法及系统 - Google Patents

一种源代码安全漏洞的检测方法及系统 Download PDF

Info

Publication number
CN107169360A
CN107169360A CN201710448153.6A CN201710448153A CN107169360A CN 107169360 A CN107169360 A CN 107169360A CN 201710448153 A CN201710448153 A CN 201710448153A CN 107169360 A CN107169360 A CN 107169360A
Authority
CN
China
Prior art keywords
source code
security
loophole
input
tree
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.)
Pending
Application number
CN201710448153.6A
Other languages
English (en)
Inventor
司徒健辉
林广银
文革萍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Electric Power Development Ltd By Share Ltd In Shajiao A Power Plant
Original Assignee
Guangdong Electric Power Development Ltd By Share Ltd In Shajiao A Power Plant
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Electric Power Development Ltd By Share Ltd In Shajiao A Power Plant filed Critical Guangdong Electric Power Development Ltd By Share Ltd In Shajiao A Power Plant
Priority to CN201710448153.6A priority Critical patent/CN107169360A/zh
Publication of CN107169360A publication Critical patent/CN107169360A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种源代码安全漏洞的检测方法及系统,所述方法包括:检测和定位源代码中所有的操作入口;分析每个操作入口,建立参照树,记录安全信息,作为安全属性;遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;根据检测到的安全漏洞来产生告警提示和修正建议。本发明中所描述的方法可以大大降低误报率,并且提供了一种有效的、仅通过检测可利用的安全流量对源码进行自动化安全审计的解决方案。这种方法避免了检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。基于参考树的FSR信息,该方法也可以对修改有漏洞的源码提供精确的指导。

Description

一种源代码安全漏洞的检测方法及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种源代码安全漏洞的检测方法及系统。
背景技术
软件漏洞是当今信息系统绝大多数安全漏洞的来源。软件漏洞是软件中存在的一些缺陷,这些缺陷可以被第三方或程序利用来进行未经授权的资源访问,或改变控制权限来执行其他操作。软件漏洞轻则造成相应的经济或财产损失(如敏感信息被盗,不可用的服务),重则导致严重的灾难,尤其是发生在被人类生活和生计所依赖的关键基础设施的软件系统上(如核,生物,化学实验室,电网,水处理和分配系统,空中交通控制和交通信号系统)。
与代码审计有关的前期工作多聚焦于缓冲区溢出漏洞。D.Wagner等提出了一种用于发现C语言代码中潜在缓冲区溢出的关键安全性问题的方法。该方法将缓冲区溢出检测转化为一个整数约束问题,并使用一些简单的图论技术构建了一个整数约束求解的有效算法。最后利用安全知识设计一个可以捕捉有可能会在实际程序中出现的安全相关性漏洞的启发式。Vinod Ganapathy等提出了一种将C字符的操作建模为一种线性规划,并根据线性规划的相关文献来确定缓冲区范围的方法,来了解并消除源代码中存在的缓冲区溢出漏洞。
代码安全审查的对象是实践于应用中的源代码。这些审计的主要目的是发现安全漏洞和缺陷,然后准确地识别与修复。事实上,安全漏洞的概念被引入到软件主要是由于大多数软件及其功能无法在未知情况下保持正常运行。一般来说,攻击者有两个渠道来利用软件的缺陷:一是通过软件的输入;二是通过软件与其他应用层实例之间的接口。
几乎所有的可利用安全漏洞都可以被用于执行非预期的操作,特殊的输入、接口或环境入口会触发这些安全漏洞从而对系统造成破坏。例如,黑客总是构造一些精心设计的字符串作为应用程序的输入来使其崩溃,或改变它的控制流来做其他恶意操作(如拒绝服务攻击,SQL注入和跨站点脚本攻击)。可利用安全漏洞总是与外部输入、接口或其他环境入口相关。
但是,现有技术中检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种源代码安全漏洞的检测方法及系统,所描述的方法可以大大降低误报率,并且提供了一种有效的、仅通过检测可利用的安全流量对源码进行自动化安全审计的解决方案。这种方法避免了检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。基于参考树的FSR信息,该方法也可以对修改有漏洞的源码提供精确的指导。
为实现上述目的,本发明提供了一种源代码安全漏洞的检测方法,其特征在于,所述方法包括:
检测和定位源代码中所有的操作入口;
分析每个操作入口,建立参照树,记录安全信息,作为安全属性;
遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;
根据检测到的安全漏洞来产生告警提示和修正建议。
上述的一种源代码安全漏洞的检测方法,其特征在于:所述操作入口包括但不限于用户输入、网络输入项、I/O输入项。
上述的一种源代码安全漏洞的检测方法,其特征在于:所述源代码包括C、C++、C#、JAVA和Perl的主流开发语言。
上述的一种源代码安全漏洞的检测方法,其特征在于:所述安全属性为程式化安全规则FSR,包括但不限于正则表达式、ACL。
上述的一种源代码安全漏洞的检测方法,其特征在于:所述利用安全属性来检查是否有可利用安全漏洞的存在包括:检查参考树的父亲节点的FSR和孩子节点的FSR之间是否存在矛盾。
一种源代码安全漏洞的检测系统,其特征在于,所述系统包括:
操作入口定位器,用于检测和定位源代码中所有的操作入口;
解析引擎模块,用于分析每个操作入口建立参照树;
漏洞检测器,用于遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;
告警修复生成器,用于根据检测到的安全漏洞来产生告警提示和修正建议。
上述的一种源代码安全漏洞的检测系统,其特征在于:所述操作入口定位器搜索外部输入的API。
上述的一种源代码安全漏洞的检测系统,其特征在于:所述解析引擎模块在句法分析中自动分配一些FSR规则。
上述的一种源代码安全漏洞的检测系统,其特征在于:所述外部输入包括但不限于scanf输入、getchar输入、getwindowstext输入、socket输入。
本发明的有益效果是:
本发明中所描述的方法可以大大降低误报率,并且提供了一种有效的、仅通过检测可利用的安全流量对源码进行自动化安全审计的解决方案。这种方法避免了检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。基于参考树的FSR信息,该方法也可以对修改有漏洞的源码提供精确的指导。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的一种源代码安全漏洞的检测方法流程图。
图2是本发明的一种源代码安全漏洞的检测系统结构框图。
图3是本发明的检测缓冲区溢出漏洞的参考树示意图。
具体实施方式
如图1所示,一种源代码安全漏洞的检测方法,所述方法包括:
101、检测和定位源代码中所有的操作入口;
102、分析每个操作入口,建立参照树,记录安全信息,作为安全属性;
103、遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;
104、根据检测到的安全漏洞来产生告警提示和修正建议。
优选的,所述操作入口包括但不限于用户输入、网络输入项、I/O输入项。而可以用来检测这些操作入口的方法是找到所有用于获取外界输入、用于与接口和其他环境入口做交互的API。
优选的,所述源代码包括C、C++、C#、JAVA和Perl的主流开发语言。
优选的,所述安全属性为程式化安全规则FSR,包括但不限于正则表达式、ACL。每个引用或引申的参考项可以追溯到的节点应该包含在树中。记录和保持原有的安全属性对进一步操作参考树来说是十分必要的。FSR可以定义不同树的安全性能,它是一种可被机器识别的自动处理过程。
优选的,所述利用安全属性来检查是否有可利用安全漏洞的存在包括:检查参考树的父亲节点的FSR和孩子节点的FSR之间是否存在矛盾。
如图2所示,一种源代码安全漏洞的检测系统,所述系统包括:
操作入口定位器201,用于检测和定位源代码中所有的操作入口;
解析引擎模块202,用于分析每个操作入口建立参照树;
漏洞检测器203,用于遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;
告警修复生成器204,用于根据检测到的安全漏洞来产生告警提示和修正建议。
优选的,所述操作入口定位器搜索外部输入的API。
优选的,所述解析引擎模块在句法分析中自动分配一些FSR规则。解析引擎利用的是编译器技术,它可以找到所有可以追溯到操作入口的代码块。它可以在句法分析中自动分配一些FSR规则。最后,该引擎将产生源代码参考树。
优选的,所述外部输入包括但不限于scanf输入、getchar输入、getwindowstext输入、socket输入。
以下给出本发明的几种具体应用情景:
情景一:缓冲区溢出漏洞
一般来说,当一个数据块B写入缓冲器A时,若B的大小大于A的合法分配的大小就会发生缓冲区溢出。缓冲器溢出的另一种形式是整数溢出,这是程序的一种潜在问题,即程序中保存的数据大小是通过以字节为单位的数据类型限制的。在这里指定FSR的格式为{FSR:“{length}$”}。
图3为通过解析引擎建立的一棵参考树。所有节点都将被编号为n.n,这体现了父节点和子节点之间的关系。同时,该节点的FSR和位置信息也将被记录下来。安全性分析模块将通过检查每个子节点的FSR是否与其父节点一致来处理参考树。一种解决方案是从参考书中的叶节点开始遍历,比较它们与父节点的FSR。在图3中,节点1.2有两个子节点,子节点1.2.1和1.2.2,他们允许的最大缓冲区长度为30和20。因为它们的父节点(节点1.2)的允许长度为50,所以当子节点到父节点之间可能会发生溢出。于是在这里发现了一个安全漏洞,系统的告警和修复模块会产生警告,并将产生相关修复建议如“建议修改节点1.2的最大缓冲区长度为20”。
情景二:特权提升漏洞
特权提升漏洞允许攻击者或代码获取其本不应有的更高水平的权限。这里的特权可能不仅代表用户(如管理员,超级用户或访客)的特权,也代表代码(如内核或用户模式)的特权。因此,可以使用访问控制列表(ACL)来分类处理这样的漏洞。
情景三:信息泄露或数据篡改漏洞
信息泄露和数据篡改漏洞允许非法用户或代码修改系统内的数据,以实现恶意攻击或将受保护的数据暴露给到没有权限访问该数据的用户。对于这些漏洞的FSR规则也在ACL中有描述。
综上,本发明中所描述的方法可以大大降低误报率,并且提供了一种有效的、仅通过检测可利用的安全流量对源码进行自动化安全审计的解决方案。这种方法避免了检测攻击者无法通过输入操作、接口或者其他环境条件进入的不可利用性安全流量,从而可以减少源代码审计分析的开销,尤其是对于大型应用程序。基于参考树的FSR信息,该方法也可以对修改有漏洞的源码提供精确的指导。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (9)

1.一种源代码安全漏洞的检测方法,其特征在于,所述方法包括:
检测和定位源代码中所有的操作入口;
分析每个操作入口,建立参照树,记录安全信息,作为安全属性;
遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;
根据检测到的安全漏洞来产生告警提示和修正建议。
2.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述操作入口包括但不限于用户输入、网络输入项、I/O输入项。
3.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述源代码包括C、C++、C#、JAVA和Perl的主流开发语言。
4.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述安全属性为程式化安全规则FSR,包括但不限于正则表达式、ACL。
5.如权利要求1所述的一种源代码安全漏洞的检测方法,其特征在于:所述利用安全属性来检查是否有可利用安全漏洞的存在包括:检查参考树的父亲节点的FSR和孩子节点的FSR之间是否存在矛盾。
6.一种源代码安全漏洞的检测系统,其特征在于,所述系统包括:
操作入口定位器,用于检测和定位源代码中所有的操作入口;
解析引擎模块,用于分析每个操作入口建立参照树;
漏洞检测器,用于遍历参考树,利用安全属性来检查是否有可利用安全漏洞的存在;
告警修复生成器,用于根据检测到的安全漏洞来产生告警提示和修正建议。
7.如权利要求6所述的一种源代码安全漏洞的检测系统,其特征在于:所述操作入口定位器搜索外部输入的API。
8.如权利要求6所述的一种源代码安全漏洞的检测系统,其特征在于:所述解析引擎模块在句法分析中自动分配一些FSR规则。
9.如权利要求7所述的一种源代码安全漏洞的检测系统,其特征在于:所述外部输入包括但不限于scanf输入、getchar输入、getwindowstext输入、socket输入。
CN201710448153.6A 2017-06-14 2017-06-14 一种源代码安全漏洞的检测方法及系统 Pending CN107169360A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710448153.6A CN107169360A (zh) 2017-06-14 2017-06-14 一种源代码安全漏洞的检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710448153.6A CN107169360A (zh) 2017-06-14 2017-06-14 一种源代码安全漏洞的检测方法及系统

Publications (1)

Publication Number Publication Date
CN107169360A true CN107169360A (zh) 2017-09-15

Family

ID=59818640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710448153.6A Pending CN107169360A (zh) 2017-06-14 2017-06-14 一种源代码安全漏洞的检测方法及系统

Country Status (1)

Country Link
CN (1) CN107169360A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874669A (zh) * 2018-06-13 2018-11-23 山东浪潮通软信息科技有限公司 一种基于Web缺陷的检验方法
CN109922062A (zh) * 2019-03-04 2019-06-21 腾讯科技(深圳)有限公司 源代码泄露监控方法及相关设备
CN111008376A (zh) * 2019-12-09 2020-04-14 国网山东省电力公司电力科学研究院 一种基于代码动态分析的移动应用源代码安全审计系统
CN111310190A (zh) * 2018-12-11 2020-06-19 中国航天科工集团六院情报信息研究中心 一种网络安全漏洞的检测方法
CN112948263A (zh) * 2021-03-30 2021-06-11 建信金融科技有限责任公司 安全测试方法、装置、设备及介质
CN113486359A (zh) * 2021-07-13 2021-10-08 杭州安恒信息技术股份有限公司 软件漏洞的检测方法、装置、电子装置和存储介质
US11463478B2 (en) 2019-10-29 2022-10-04 International Business Machines Corporation Remediation strategy optimization for development, security and operations (DevSecOps)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101551836A (zh) * 2008-04-03 2009-10-07 西门子(中国)有限公司 一种代码审计的方法及装置
CN101661543A (zh) * 2008-08-28 2010-03-03 西门子(中国)有限公司 软件源代码安全漏洞的检测方法及检测装置
CN104462981A (zh) * 2013-09-12 2015-03-25 深圳市腾讯计算机系统有限公司 漏洞检测方法及装置
CN104850493A (zh) * 2015-04-24 2015-08-19 百度在线网络技术(北京)有限公司 一种检测源代码漏洞的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101551836A (zh) * 2008-04-03 2009-10-07 西门子(中国)有限公司 一种代码审计的方法及装置
CN101661543A (zh) * 2008-08-28 2010-03-03 西门子(中国)有限公司 软件源代码安全漏洞的检测方法及检测装置
CN104462981A (zh) * 2013-09-12 2015-03-25 深圳市腾讯计算机系统有限公司 漏洞检测方法及装置
CN104850493A (zh) * 2015-04-24 2015-08-19 百度在线网络技术(北京)有限公司 一种检测源代码漏洞的方法和装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108874669A (zh) * 2018-06-13 2018-11-23 山东浪潮通软信息科技有限公司 一种基于Web缺陷的检验方法
CN111310190A (zh) * 2018-12-11 2020-06-19 中国航天科工集团六院情报信息研究中心 一种网络安全漏洞的检测方法
CN109922062A (zh) * 2019-03-04 2019-06-21 腾讯科技(深圳)有限公司 源代码泄露监控方法及相关设备
US11463478B2 (en) 2019-10-29 2022-10-04 International Business Machines Corporation Remediation strategy optimization for development, security and operations (DevSecOps)
CN111008376A (zh) * 2019-12-09 2020-04-14 国网山东省电力公司电力科学研究院 一种基于代码动态分析的移动应用源代码安全审计系统
CN111008376B (zh) * 2019-12-09 2021-11-05 国网山东省电力公司电力科学研究院 一种基于代码动态分析的移动应用源代码安全审计系统
CN112948263A (zh) * 2021-03-30 2021-06-11 建信金融科技有限责任公司 安全测试方法、装置、设备及介质
CN113486359A (zh) * 2021-07-13 2021-10-08 杭州安恒信息技术股份有限公司 软件漏洞的检测方法、装置、电子装置和存储介质
CN113486359B (zh) * 2021-07-13 2024-03-19 杭州安恒信息技术股份有限公司 软件漏洞的检测方法、装置、电子装置和存储介质

Similar Documents

Publication Publication Date Title
CN107169360A (zh) 一种源代码安全漏洞的检测方法及系统
CN110233849B (zh) 网络安全态势分析的方法及系统
US10915659B2 (en) Privacy detection of a mobile application program
CN107659570A (zh) 基于机器学习与动静态分析的Webshell检测方法及系统
CN106250769B (zh) 一种多级过滤的源代码数据检测方法及装置
US12032682B2 (en) Systems and methods for improving accuracy in recognizing and neutralizing injection attacks in computer services
CN104520871A (zh) 漏洞矢量信息分析
CN106570399A (zh) 一种跨App组件间隐私泄露的检测方法
CN107194251A (zh) Android平台恶意应用检测方法及装置
CN106528421A (zh) 一种Android应用中SDK处理方法
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN103577323A (zh) 基于动态关键指令序列胎记的软件抄袭检测方法
CN108985061A (zh) 一种基于模型融合的webshell检测方法
Li et al. Large-scale third-party library detection in android markets
CN107491691A (zh) 一种基于机器学习的远程取证工具安全分析系统
US10002254B2 (en) Systems and methods for SQL type evaluation to detect evaluation flaws
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备
Shahriar et al. Content provider leakage vulnerability detection in Android applications
US10025936B2 (en) Systems and methods for SQL value evaluation to detect evaluation flaws
Lyu et al. An Efficient and Packing‐Resilient Two‐Phase Android Cloned Application Detection Approach
Congyi et al. Method for detecting Android malware based on ensemble learning
Liu et al. A Markov detection tree-based centralized scheme to automatically identify malicious webpages on cloud platforms
CN109299610A (zh) 安卓系统中不安全敏感输入验证识别方法
Zhao et al. Research on smart contract evaluation method for open source blockchain
Sun et al. Padetective: A systematic approach to automate detection of promotional attackers in mobile app store

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20170915

RJ01 Rejection of invention patent application after publication