CN107133518A - 基于参数和信息流的源代码越权检测方法及装置 - Google Patents

基于参数和信息流的源代码越权检测方法及装置 Download PDF

Info

Publication number
CN107133518A
CN107133518A CN201710229932.7A CN201710229932A CN107133518A CN 107133518 A CN107133518 A CN 107133518A CN 201710229932 A CN201710229932 A CN 201710229932A CN 107133518 A CN107133518 A CN 107133518A
Authority
CN
China
Prior art keywords
parameter
information
commission
going beyond
source code
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.)
Granted
Application number
CN201710229932.7A
Other languages
English (en)
Other versions
CN107133518B (zh
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.)
China Minsheng Banking Corp Ltd
Original Assignee
China Minsheng Banking Corp Ltd
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 China Minsheng Banking Corp Ltd filed Critical China Minsheng Banking Corp Ltd
Priority to CN201710229932.7A priority Critical patent/CN107133518B/zh
Publication of CN107133518A publication Critical patent/CN107133518A/zh
Application granted granted Critical
Publication of CN107133518B publication Critical patent/CN107133518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种基于参数和信息流的源代码越权检测方法及装置,该方法包括:对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示;对语法树进行信息流分析,以获得信息流信息;根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测;输出越权高风险的参数及相关信息。由于采用信息流对参数进行越权检测,与应用平台业务逻辑紧密相关,能够对源代码的逻辑进行深入分析,所以能够减少误报率,提高检测的准确率,并且实现了基于业务逻辑的越权漏洞的检测,使应用平台的源代码在银行等业务场景广泛的行业能被安全使用。

Description

基于参数和信息流的源代码越权检测方法及装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种基于参数和信息流的源代码越权检测方法及装置。
背景技术
随着网络技术和应用平台的飞速发展,信息安全正面临着前所未有的挑战。信息系统与互联网或其他网络的互连,使信息系统遭受攻击的概率增加。
近年来,重大安全事件的频频发生揭示了当前信息系统安全形式的严峻性。应用平台源代码是构建信息的基础组件,应用平台源代码中安全漏洞的存在是安全事件频繁发生的根源。因此多种应用平台源代码的安全检测软件应运而生。
目前主流的应用平台源代码检测的开源软件包括:Checkstyle,FindBugs,PMD,Jtest等,商业软件包括:Foritify,CheckMarx和CodeSecure等。其中,Checkstyle是开源软件开发平台SourceForge的开源Java代码静态检测项目,通过分析应用平台源代码的多个方面进行代码规范和风格检查。如编码格式、命名约定、Javadoc、类设计等,进而约束代码编写者遵循代码编写规范。FindBugs是马里兰大学的一款Java静态检测分析开源工具,通过对软件的类文件或JAR文件的字节码和缺陷模式进行对比进而发现软件代码中的缺陷。PMD与CheckStyle相同,该工具也是开源软件开发平台SourceForge的开源Java代码静态检测工具,通过内置编码规则对Java源代码进行是否存在未使用代码、重复代码、潜在漏洞、循环体创建新对象等安全编码问题静态检测。Jtest是Parasoft公司推出的针对Java语言源代码的自动化优化和检测工具,该工具利用其内置的近千条Java编码规范对Java代码进行检测,得到程序中的编码错误。Fortify是提供应用软件安全开发工具和管理方案的厂商,为应用软件开发组织、安全审计人员和应用安全管理人员提供工具并确立最佳的应用软件安全实践和策略。Checkmarx是以色列的一家高科技软件公司,其产品CheckmarxCxSuite可识别、跟踪和修复软件源代码上的技术和逻辑方面的安全风险,以查询语言定位代码安全问题,其采用独特的词汇分析技术和CxQL专利查询技术来扫描和分析源代码中的安全漏洞和弱点。CodeSecure内建语法剖析功能无需依赖编译环境,任何人员均可利用Web操作与集成开发环境双接口,找出存在信息安全问题的源代码,并提供修补建议进行调整。
现有的应用平台源代码检测的开源软件和商业软件并没有严格的信息流机制,会产生极高的误报率,并且均主要关注常规的代码缺陷,只能检测如跨站脚本(简称:XSS),结构化查询语言(简称:SQL),密码管理,危险API接口等缺陷,对于应用平台源代码中的业务逻辑并不了解,不能检测基于业务逻辑而产生的越权的漏洞,使应用平台源代码在银行等业务场景广泛的行业不能被安全使用。
发明内容
本发明实施例提供一种基于参数和信息流的源代码越权检测方法及装置,该方法解决了现有技术中对源代码检测的开源软件和商业软件不能检测基于业务逻辑而产生的越权的漏洞,使应用平台源代码在银行等业务场景广泛的行业不能被安全使用的技术问题。
本发明实施例提供一种基于参数和信息流的源代码越权检测方法,包括:
对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示;
对所述语法树进行信息流分析,以获得信息流信息;
根据预设的越权检测策略和所述信息流信息,对所述应用平台源代码进行越权检测;
输出越权高风险的参数及相关信息。
本发明实施例提供一种基于参数和信息流的源代码越权检测装置,包括:
源代码解析模块,用于对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示;
信息流分析模块,用于对所述语法树进行信息流分析,以获得信息流信息;
越权检测模块,用于根据预设的越权检测策略和所述信息流信息,对所述应用平台源代码进行越权检测;
越权参数输出模块,用于输出越权高风险的参数及相关信息。
本发明实施例提供一种基于参数和信息流的源代码越权检测方法及装置,通过对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示;对语法树进行信息流分析,以获得信息流信息;根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测;输出越权高风险的参数及相关信息。由于采用信息流对参数进行越权检测,与应用平台业务逻辑紧密相关,能够对源代码的逻辑进行深入分析,所以能够减少误报率,提高检测的准确率,并且实现了基于业务逻辑的越权漏洞的检测,使应用平台的源代码在银行等业务场景广泛的行业能被安全使用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于参数和信息流的源代码越权检测方法实施例一的流程图;
图2为本发明基于参数和信息流的源代码越权检测方法实施例二的流程图;
图3为本发明基于参数和信息流的源代码越权检测方法实施例二中步骤204的流程图;
图4为本发明基于参数和信息流的源代码越权检测方法实施例二中步骤205的流程图;
图5为本发明基于参数和信息流的源代码越权检测方法实施例二中步骤205中各参数关系的示意图;
图6为本发明基于参数和信息流的源代码越权检测装置实施例一的结构示意图;
图7为本发明基于参数和信息流的源代码越权检测装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
图1为本发明基于参数和信息流的源代码越权检测方法实施例一的流程图,本实施例的执行主体为基于参数和信息流的源代码越权检测装置,该基于参数和信息流的源代码越权检测装置可以安装或集成在计算机或服务器上,如图1所示,则本实施例提供的基于参数和信息流的源代码越权检测方法包括以下几个步骤。
步骤101,对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示。
其中,应用平台可以为科蓝平台或其他应用平台,本实施例中对此不做限定。
具体地,本实施例中,对应用平台的源代码进行词法、语法、语义解析,将得到的源代码信息用语法树表示,该语法树可以为抽象语法树或其他语法树,本实施例中对此不做限定。解析到的语法树中包括:包信息、类信息、方法信息、定义信息、表达式信息等。
步骤102,对语法树进行信息流分析,以获得信息流信息。
具体地,本实施例中,对语法树进行信息流分析包括对语法树进行控制流分析和信息流分析,信息流信息包括:控制流信息和数据流信息。
其中,控制流信息包括:类间关系信息、方法间关系信息以及其他控制流信息。数据流信息包括:类信息、方法信息、参数信息、常量信息、表达式信息以及其他数据流信息。
步骤103,根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测。
本实施例中,在应用平台的源代码的配置文件中关联存储有参数及与参数相关的信息,与参数相关的信息可以包括:参数对应的交易标识码、参数对应的java处理类、参数对应的前端页面等。
具体地,本实施例中,对预设的越权检测策略不做限定。如预设的越权检测策略可以为:对信息流信息进行分析,识别出信息流信息中的每个参数对应的参数获取方法,判断每个参数获取方法是否存在于易发生越权方法列表中,在易发生越权方法列表中存储了所有从前台获取参数的方法,若某参数对应的参数获取方法存在于易发生越权方法列表中,说明该参数是从前台获取的,具有越权风险,否则该参数不具有越权风险,为安全参数。
本实施例中,预设的越权检测策略还可以为:获取信息流信息中的所有参数,判断每个参数是否存在于易发生越权列表中,若某参数存在于易发生越权列表中,说明该参数具有越权风险,否则该参数不具有越权风险。其中,易发生越权参数是对应用平台的源代码进行解析,获取到信息流信息,并获取信息系流信息中所有的参数,利用越权发生原理对参数进行筛选得到的,可将易发生越权参数写入列表中,形成易发生越权参数列表。
本实施例中,预设的越权检测策略还可以为:判断每个参数及对应的交易标识码是否关联存储于越权处理表中,在越权处理表中存储有应用平台的每个交易及在该交易中会进行越权检测的参数,该越权处理表是根据实际应用预先配置的。若某参数及对应的交易标识码关联存在于越权处理表中,则说明该应用平台会对该参数进行越权检测,该参数是安全参数,否则该参数具有越权风险。
本实施例中,预设的越权检测策略还可以为:获取每个参数及对应的前端页面,根据前端页面判断该参数是否通过用户输入,若该参数为用户输入的,则是安全参数,否则该参数有越权风险。
本实施例中,预设的越权检测策略还可以为:对每个参数的对应的java处理类的信息流信息进行分析,判断每个参数是否从前端页面传递到服务器的参数,若是,则判断该参数和参数标识是否符合预设的越权检测对应关系,若符合,则应用平台会对该参数进行越权检测,该参数为安全参数,否则,该参数具有越权风险。
本实施例中,预设的越权检测策略还可以为:获取每个参数及对应的java处理类的信息流信息,并对java处理类的信息流信息进行分析,判断该参数是否和会话相关,即是否被会话对应的内容覆盖或是否与会话中对应的内容进行比较,若该参数被会话对应的内容覆盖或与会话中对应的内容进行了比较,则该参数和会话相关,则说明该应用平台会该参数进行越权检测,该参数是安全参数,否则该参数具有越权风险。
综上可知,本实施例中,预设的越权检测策略还可以为:根据上述列举的预设的越权检测策略依次对参数进行筛选,每一步中去除安全参数,筛选出有越权风险的参数,再将有越权风险的参数输入到下一步越权检测中,以对参数进行越权检测。其中的筛选顺序本实施例中不做限定。可以理解的是,本实施例中,预设的越权检测策略还可以为:对上述列举的预设的越权检测策略进行挑选,选出至少两个上述列举的预设的越权检测策略,并依次对参数进行筛选,去除安全参数,筛选出有越权风险的参数,以对易发生越权参数进行越权检测。
步骤104,输出越权高风险的参数及相关信息。
本实施例中,经过对应用平台源代码进行越权检测后,去除安全参数,输出具有越权高风险的参数及相关信息,其中具有越权高风险的参数是根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测,去除安全参数后的参数。
其中,相关信息可以包括:的配置文件的XML文本的行号、交易标识码、java处理类、前端页面等,还可以包括其他信息,本实施例中对此不做限定。
本实施例提供的应用平台源代码的越权检测方法,通过对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示;对语法树进行信息流分析,以获得信息流信息;根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测;输出越权高风险的参数及相关信息。由于采用信息流对参数进行越权检测,与应用平台业务逻辑紧密相关,能够对源代码的逻辑进行深入分析,所以能够减少误报率,提高检测的准确率,并且实现了基于业务逻辑的越权漏洞的检测,使应用平台的源代码在银行等业务场景广泛的行业能被安全使用。
图2为本发明基于参数和信息流的源代码越权检测方法实施例二的流程图,如图2所示,本实施例提供的基于参数和信息流的源代码越权检测方法,是在本发明基于参数和信息流的源代码越权检测方法实施例一的基础上,对步骤102-步骤104的进一步细化,并且包括了对基于参数和信息流的源代码进行预处理的步骤,则本实施例提供的基于参数和信息流的源代码越权检测方法包括以下步骤。
步骤201,获取应用平台源代码。
进一步地,本实施例中,可采用用户通过上传设备上传的方式获取待检测的应用平台源代码,也可从预设存储区域获取待检测的应用平台源代码,本实施例中对获取应用平台源代码的方式不做限定。
步骤202,对应用平台源代码进行预处理。
进一步地,本实施例中,解析应用平台的源代码中引入的外部文件、宏信息,将外部文件、宏信息替换到源代码中相应的位置。
步骤203,对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示。
本实施例中,步骤203的实现方式与本发明应用平台源代码的越权检测方法实施例一中的步骤101的实现方式相同,在此不再一一赘述。
步骤204,对语法树进行信息流分析,以获得信息流信息。
进一步地,本实施例中,步骤204,对语法树进行信息流分析,以获得信息流信息具体包括以下步骤:
步骤204a,对语法树进行控制流分析,以获得控制流信息。
其中,控制流信息至少包括:类间关系信息、方法间关系信息。
步骤204b,对语法树进行数据流分析,以获得数据流信息。
其中,数据流信息至少包括:类信息、方法信息、参数信息、常量信息、表达式信息。
可以理解的是,信息流信息包括:控制流信息和数据流信息。
步骤205,根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测。
进一步地,本实施例中,步骤205,根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测具体包括以下步骤。
步骤205a,对信息流信息进行分析,识别出信息流信息中的每个参数对应的参数获取方法,判断每个参数获取方法是否存在于易发生越权方法列表中,若否,则结束,否则,执行步骤205b。
本实施例中,应用平台的配置文件中关联存储有源代码中所有参数的参数名、参数所属交易标识码、参数对应的java处理类、参数对应的前端页面等信息。
进一步地,本实施例中,在易发生越权方法列表中存储有所有从前台获取参数的方法,对信息流信息进行分析,解析出所有参数及每个参数对应的参数获取方法,判断每个参数的参数获取方法是否存在于易发生越权方法列表中,若某参数的参数获取方法存在于易发生越权方法列表中,则说明该参数是从前台获取的,具有越权风险,需要进一步进行越权检测,否则该参数为安全参数。
步骤205b,获取参数获取方法存在于易发生越权方法列表中的第一参数,判断第一参数是否存在于易发生越权列表中,若是,则执行步骤205c,否则,则结束。
其中,图5为本发明基于参数和信息流的源代码越权检测方法实施例二中步骤205中各参数关系的示意图,如图5所示,第一参数为在所有参数中参数获取方法存在于易发生越权方法列表中的参数。在所有参数中参数获取方法不存在于易发生越权方法列表中的参数为安全参数。
其中,易发生越权参数列表中存储有所有易发生越权的参数,易发生越权的参数是对应用平台的源代码进行解析,获取到信息流信息,并获取信息系流信息中所有的参数,利用越权发生原理对参数进行筛选得到的。
进一步地,本实施例中,判断第一参数是否存在于易发生越权参数列表中,若第一参数存在于易发生越权参数列表中,则说明该参数具有越权风险,需要进一步进行越权检测,否则,该参数为安全参数。
步骤205c,获取第一参数中存在于易发生越权列表中的第二参数及对应的交易标识码,判断第二参数及对应的交易标识码是否关联存在于越权处理表中,若是,则结束,否则,执行步骤205d。
其中,如图5所示,第二参数为第一参数中存在于易发生越权列表中的参数,第一参数中不存在于易发生越权列表中的参数为安全参数。
本实施例中,越权处理表中关联存储有应用平台的每个交易及在该交易中会进行越权检测的参数,该越权处理表是根据实际应用预先配置的。关联存储的方式如可以为“A1.a”,其中“.”之前的文字为交易标识码,“.”之后的文字为会进行越权检测的参数。还可以为其他关联存储方式,本实施例中对此不做限定。
具体地,本实施例中,从第一参数中获取具有越权风险的第二参数进一步进行越权检测,由于配置文件中关联存储有每个参数及对应交易标识码,所以通过配置文件,获取每个第二参数及对应的交易标识码,判断第二参数及对应的交易标识码是否关联存在于越权处理表中,若是,则说明应用平台会对该参数进行越权检测,该第二参数是安全参数,否则,说明该第二参数具有越权风险,需要进一步进行越权检测。
步骤205d,获取第二参数中第二参数及对应的交易标识码不关联存在于越权处理表中的第三参数及第三参数对应的前端页面,根据前端页面判断第三参数是否通过用户输入,若是,则结束,否则,执行步骤205e。
其中,如图5所示,第三参数为在第二参数中第二参数及对应的交易标识码不关联存在于越权处理表中的参数,在第二参数中第二参数及对应的交易标识码关联存在于越权处理表中的参数为安全参数。
可以理解的是,根据配置文件获取第五参数对应的前端页面。前端页面可为JSP/HTML页面。
进一步地,本实施例中,根据前端页面中参数的输入格式判断第三参数是否通过用户输入,若输入格式为.txt格式,则说明第三参数是通过用户输入,否则不是通过用户输入。通过用户输入的第三参数为安全参数,否则,将第三参数具有越权风险,需要进一步进行越权检测。
步骤205e,获取第三参数中不通过用户输入的第四参数及第四参数对应的java处理类的信息流信息。
其中,如图5所示,第四参数为在第三参数中不通过用户输入的参数,在第三参数中通过用户输入的参数为安全参数。
具体地,本实施例中,由于配置文件中关联存储有每个参数及对应的java处理类,所以通过配置文件,获取第四参数及第四参数对应的java处理类的信息流信息。
步骤205f,对第四参数对应的java处理类的信息流信息进行分析,若第四参数是从前端页面传递到服务器的参数,则判断第四参数和参数标识是否符合预设的越权检测对应关系,若是,则结束,否则,执行步骤205g。
进一步地,本实施例中,首先通过对java处理类的信息流信息进行分析判断第四参数是否从前端页面传递到服务器的参数,若是,则判断该第四参数和参数标识是否符合预设的越权检测对应关系,若第四参数和参数标识符合预设的越权检测对应关系,则说明应用平台会对该第四参数进行越权检测,该第四参数为安全参数,否则,说明应用平台不会对该第四参数进行越权检测,该第四参数具有越权风险。
其中,第四参数和参数标识的预设的越权检测对应关系的形式本实施例中不做限定。如若应用平台为屹通平台,则参数标识可表示为“checkType”“checkType”取值为1-6的整数。“checkType”取不同的值,代表“checkType”与不同的第四参数具有预设的越权检测对应关系,如“checkType=1”,代表第四参数m与“checkType”具有预设的越权检测对应关系,屹通平台会进行越权检测,“checkType=2”,代表第四参数n与“checkType”具有预设的越权检测对应关系,屹通平台会进行越权检测,具体的越权检测方法为:将该第四参数与登录用户会话中的对应参数进行对比,来检测该第四参数是否发生越权。
步骤205g,获取第四参数和参数标识不符合预设的越权检测对应关系的第五参数及第五参数对应的java处理类的信息流信息。
其中,第五参数为在第四参数中第四参数和参数标识不符合预设的越权检测对应关系的参数,在第四参数中第四参数和参数标识符合预设的越权检测对应关系的参数为安全参数。
步骤205h,对第五参数对应的java处理类的信息流信息进行分析,判断第五参数是否和会话相关,若是,则结束,否则,执行步骤205i。
进一步地,本实施例中,对第五参数对应的java处理类的信息流信息进一步进行分析,此次判断第五参数是否和会话相关。若第五参数来自于会话中对应内容的覆盖或者第五参数与会话中对应的内容进行比较,则说明第五参数与会话相关,与会话相关的第五参数为进行越权检测的参数,为安全参数,否则,该第五参数具有越权风险。
步骤205i,获取第五参数中不与会话相关的第六参数。
其中,如图5所示,第六参数为第五参数中不与会话相关的参数,第五参数中与会话相关的参数为安全参数。
可以理解的是,经过上述步骤205中对具有越权风险的参数一步步的筛选,选出的第六参数为具有高风险的参数。
步骤206,输出越权高风险的参数及相关信息。
进一步地,本实施例中,步骤206中输出越权高风险的参数及相关信息,具体包括:
输出越权高风险的参数名及越权高风险的参数对应的配置文件的XML文本的行号、交易标识码、java处理类、前端页面;
其中,越权高风险的参数为第六参数。
本实施例提供的应用平台源代码的越权检测方法,根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测具体包括:对信息流信息进行分析,识别出信息流信息中的每个参数对应的参数获取方法,判断每个参数获取方法是否存在于易发生越权方法列表中;获取参数获取方法存在于易发生越权方法列表中的第一参数,判断第一参数是否存在于易发生越权列表中;获取第一参数中存在于易发生越权列表中的第二参数及对应的交易标识码,判断第二参数及对应的交易标识码是否关联存在于越权处理表中;获取第二参数中第二参数及对应的交易标识码不关联存在于越权处理表中的第三参数及第三参数对应的前端页面,根据前端页面判断第三参数是否通过用户输入;获取第三参数中不通过用户输入的第四参数及第四参数对应的java处理类的信息流信息;对第四参数对应的java处理类的信息流信息进行分析,若第四参数是从前端页面传递到服务器的参数,则判断第四参数和参数标识是否符合预设的越权检测对应关系;获取第四参数和参数标识不符合预设的越权检测对应关系的第五参数及第五参数对应的java处理类的信息流信息;对第五参数对应的java处理类的信息流信息进行分析,判断第五参数是否和会话相关;获取第五参数中不与会话相关的第六参数。经过六步的越权检测,能够使检测出的越权高风险参数更加准确,进一步减少误报率,提高检测的准确率,并且对易发生越权参数进行大范围到小范围的筛选,有效提高了越权检测的效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图6为本发明基于参数和信息流的源代码越权检测装置实施例一的结构示意图,如图6所示,本实施例提供的基于参数和信息流的源代码越权检测装置包括:源代码解析模块61,信息流分析模块62,越权检测模块63和越权参数输出模块64。
其中,源代码解析模块61,用于对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示。信息流分析模块62,用于对语法树进行信息流分析,以获得信息流信息。越权检测模块63,用于根据预设的越权检测策略和信息流信息,对应用平台源代码进行越权检测。越权参数输出模块64,用于输出越权高风险的参数及相关信息。
本实施例提供的基于参数和信息流的源代码越权检测装置可以执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本发明基于参数和信息流的源代码越权检测装置实施例二的结构示意图,如图7所示,本实施例提供的基于参数和信息流的源代码越权检测装置在本发明基于参数和信息流的源代码越权检测装置实施例一的基础上,进一步地,还包括:源代码获取模块71和源代码预处理模块72。
进一步地,信息流分析模块62,具体用于:对语法树进行控制流分析,以获得控制流信息,控制流信息至少包括:类间关系信息、方法间关系信息;数据流分析模块,用于对语法树进行数据流分析,以获得数据流信息,数据流信息至少包括:类信息、方法信息、参数信息、常量信息、表达式信息;其中,信息流信息包括:控制流信息和数据流信息。
优选地,越权检测模块63,具体用于:对信息流信息进行分析,识别出信息流信息中的每个参数对应的参数获取方法,判断每个参数获取方法是否存在于易发生越权方法列表中;获取参数获取方法存在于易发生越权方法列表中的第一参数,判断第一参数是否存在于易发生越权列表中;获取第一参数中存在于易发生越权列表中的第二参数及对应的交易标识码,判断第二参数及对应的交易标识码是否关联存在于越权处理表中;获取第二参数中第二参数及对应的交易标识码不关联存在于越权处理表中的第三参数及第三参数对应的前端页面,根据前端页面判断第三参数是否通过用户输入;获取第三参数中不通过用户输入的第四参数及第四参数对应的java处理类的信息流信息;对第四参数对应的java处理类的信息流信息进行分析,若第四参数是从前端页面传递到服务器的参数,则判断第四参数和参数标识是否符合预设的越权检测对应关系;获取第四参数和参数标识不符合预设的越权检测对应关系的第五参数及第五参数对应的java处理类的信息流信息;对第五参数对应的java处理类的信息流信息进行分析,判断第五参数是否和会话相关;获取第五参数中不与会话相关的第六参数。
进一步地,越权参数输出模块64,具体用于:输出越权高风险的参数名及越权高风险的参数对应的配置文件的XML文本的行号、交易标识码、java处理类、前端页面;其中,越权高风险的参数为第六参数。
进一步地,源代码获取模块71,用于获取应用平台源代码。源代码预处理模块72,用于对应用平台源代码进行预处理。
本实施例提供的应用平台源代码的越权检测装置可以执行图2、图3和图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种基于参数和信息流的源代码越权检测方法,其特征在于,包括:
对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示;
对所述语法树进行信息流分析,以获得信息流信息;
根据预设的越权检测策略和所述信息流信息,对所述应用平台源代码进行越权检测;
输出越权高风险的参数及相关信息。
2.根据权利要求1所述的方法,其特征在于,所述对所述语法树进行信息流分析,以获得信息流信息,具体包括:
对所述语法树进行控制流分析,以获得控制流信息,所述控制流信息至少包括:类间关系信息、方法间关系信息;
对所述语法树进行数据流分析,以获得数据流信息,所述数据流信息至少包括:类信息、方法信息、参数信息、常量信息、表达式信息;
其中,所述信息流信息包括:控制流信息和数据流信息。
3.根据权利要求2所述的方法,其特征在于,所述根据预设的越权检测策略和所述信息流信息,对所述应用平台源代码进行越权检测,具体包括:
对所述信息流信息进行分析,识别出所述信息流信息中的每个参数对应的参数获取方法,判断每个参数获取方法是否存在于易发生越权方法列表中;
获取所述参数获取方法存在于易发生越权方法列表中的第一参数,判断所述第一参数是否存在于易发生越权列表中;
获取第一参数中存在于易发生越权列表中的第二参数及对应的交易标识码,判断所述第二参数及对应的交易标识码是否关联存在于越权处理表中;
获取所述第二参数中所述第二参数及对应的交易标识码不关联存在于所述越权处理表中的第三参数及所述第三参数对应的前端页面,根据所述前端页面判断所述第三参数是否通过用户输入;
获取所述第三参数中不通过用户输入的第四参数及所述第四参数对应的java处理类的信息流信息;
对所述第四参数对应的java处理类的信息流信息进行分析,若所述第四参数是从前端页面传递到服务器的参数,则判断所述第四参数和参数标识是否符合预设的越权检测对应关系;
获取所述第四参数和参数标识不符合预设的越权检测对应关系的第五参数及所述第五参数对应的java处理类的信息流信息;
对所述第五参数对应的java处理类的信息流信息进行分析,判断所述第五参数是否和会话相关;
获取所述第五参数中不与会话相关的第六参数。
4.根据权利要求3所述的方法,其特征在于,所述输出越权高风险的参数及相关信息,具体包括:
输出越权高风险的参数名及越权高风险的参数对应的配置文件的XML文本的行号、交易标识码、java处理类、前端页面;
其中,所述越权高风险的参数为第六参数。
5.根据权利要求4所述的方法,其特征在于,所述对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示之前,还包括:
获取应用平台源代码;
对所述应用平台源代码进行预处理。
6.一种基于参数和信息流的源代码越权检测装置,其特征在于,包括:
源代码解析模块,用于对应用平台源代码进行解析,并将解析到的源代码信息采用语法树表示;
信息流分析模块,用于对所述语法树进行信息流分析,以获得信息流信息;
越权检测模块,用于根据预设的越权检测策略和所述信息流信息,对所述应用平台源代码进行越权检测;
越权参数输出模块,用于输出越权高风险的参数及相关信息。
7.根据权利要求6所述的装置,其特征在于,所述信息流分析模块,具体用于:
对所述语法树进行控制流分析,以获得控制流信息,所述控制流信息至少包括:类间关系信息、方法间关系信息;数据流分析模块,用于对所述语法树进行数据流分析,以获得数据流信息,所述数据流信息至少包括:类信息、方法信息、参数信息、常量信息、表达式信息;其中,所述信息流信息包括:控制流信息和数据流信息。
8.根据权利要求7所述的装置,其特征在于,所述越权检测模块,具体用于:
对所述信息流信息进行分析,识别出所述信息流信息中的每个参数对应的参数获取方法,判断每个参数获取方法是否存在于易发生越权方法列表中;获取所述参数获取方法存在于易发生越权方法列表中的第一参数,判断所述第一参数是否存在于易发生越权列表中;获取第一参数中存在于易发生越权列表中的第二参数及对应的交易标识码,判断所述第二参数及对应的交易标识码是否关联存在于越权处理表中;获取所述第二参数中所述第二参数及对应的交易标识码不关联存在于所述越权处理表中的第三参数及所述第三参数对应的前端页面,根据所述前端页面判断所述第三参数是否通过用户输入;获取所述第三参数中不通过用户输入的第四参数及所述第四参数对应的java处理类的信息流信息;对所述第四参数对应的java处理类的信息流信息进行分析,若所述第四参数是从前端页面传递到服务器的参数,则判断所述第四参数和参数标识是否符合预设的越权检测对应关系;获取所述第四参数和参数标识不符合预设的越权检测对应关系的第五参数及所述第五参数对应的java处理类的信息流信息;对所述第五参数对应的java处理类的信息流信息进行分析,判断所述第五参数是否和会话相关;获取所述第五参数中不与会话相关的第六参数。
9.根据权利要求8所述的装置,其特征在于,所述越权参数输出模块,具体用于:
输出越权高风险的参数名及越权高风险的参数对应的配置文件的XML文本的行号、交易标识码、java处理类、前端页面;其中,所述越权高风险的参数为第六参数。
10.根据权利要求6-9任一项所述的装置,其特征在于,还包括:
源代码获取模块,用于获取应用平台源代码;
源代码预处理模块,用于对所述应用平台源代码进行预处理。
CN201710229932.7A 2017-04-10 2017-04-10 基于参数和信息流的源代码越权检测方法及装置 Active CN107133518B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710229932.7A CN107133518B (zh) 2017-04-10 2017-04-10 基于参数和信息流的源代码越权检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710229932.7A CN107133518B (zh) 2017-04-10 2017-04-10 基于参数和信息流的源代码越权检测方法及装置

Publications (2)

Publication Number Publication Date
CN107133518A true CN107133518A (zh) 2017-09-05
CN107133518B CN107133518B (zh) 2019-09-24

Family

ID=59716641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710229932.7A Active CN107133518B (zh) 2017-04-10 2017-04-10 基于参数和信息流的源代码越权检测方法及装置

Country Status (1)

Country Link
CN (1) CN107133518B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110061979A (zh) * 2019-04-01 2019-07-26 视联动力信息技术股份有限公司 一种业务对象的检测方法和装置
CN112181784A (zh) * 2020-10-21 2021-01-05 中国工商银行股份有限公司 基于字节码注入的代码故障分析方法及系统
CN112257054A (zh) * 2020-10-22 2021-01-22 北京邮电大学 一种软件应用越权风险检测方法、电子设备及存储介质
CN112765611A (zh) * 2021-01-19 2021-05-07 上海微盟企业发展有限公司 一种越权漏洞检测方法、装置、设备及存储介质
CN115529171A (zh) * 2022-09-16 2022-12-27 浙江网商银行股份有限公司 行为检测方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN102945203A (zh) * 2012-10-26 2013-02-27 深圳出入境检验检疫局信息中心 一种用于移动互联网应用的代码安全测试方法
CN103294598A (zh) * 2013-05-28 2013-09-11 华为技术有限公司 一种源代码检查方法及装置
CN103793652A (zh) * 2012-10-29 2014-05-14 广东电网公司信息中心 一种基于静态分析的应用系统代码安全扫描装置
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN102945203A (zh) * 2012-10-26 2013-02-27 深圳出入境检验检疫局信息中心 一种用于移动互联网应用的代码安全测试方法
CN103793652A (zh) * 2012-10-29 2014-05-14 广东电网公司信息中心 一种基于静态分析的应用系统代码安全扫描装置
CN103927473A (zh) * 2013-01-16 2014-07-16 广东电网公司信息中心 检测移动智能终端的源代码安全的方法、装置及系统
CN103294598A (zh) * 2013-05-28 2013-09-11 华为技术有限公司 一种源代码检查方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110061979A (zh) * 2019-04-01 2019-07-26 视联动力信息技术股份有限公司 一种业务对象的检测方法和装置
CN110061979B (zh) * 2019-04-01 2022-01-11 视联动力信息技术股份有限公司 一种业务对象的检测方法和装置
CN112181784A (zh) * 2020-10-21 2021-01-05 中国工商银行股份有限公司 基于字节码注入的代码故障分析方法及系统
CN112181784B (zh) * 2020-10-21 2024-03-26 中国工商银行股份有限公司 基于字节码注入的代码故障分析方法及系统
CN112257054A (zh) * 2020-10-22 2021-01-22 北京邮电大学 一种软件应用越权风险检测方法、电子设备及存储介质
CN112765611A (zh) * 2021-01-19 2021-05-07 上海微盟企业发展有限公司 一种越权漏洞检测方法、装置、设备及存储介质
CN112765611B (zh) * 2021-01-19 2022-11-25 上海微盟企业发展有限公司 一种越权漏洞检测方法、装置、设备及存储介质
CN115529171A (zh) * 2022-09-16 2022-12-27 浙江网商银行股份有限公司 行为检测方法及装置

Also Published As

Publication number Publication date
CN107133518B (zh) 2019-09-24

Similar Documents

Publication Publication Date Title
CN107133518B (zh) 基于参数和信息流的源代码越权检测方法及装置
US9715593B2 (en) Software vulnerabilities detection system and methods
AU2010350247B2 (en) Code inspection executing system for performing a code inspection of ABAP source codes
CN110737899B (zh) 一种基于机器学习的智能合约安全漏洞检测方法
CN107103239B (zh) 基于应用系统业务处理逻辑的源代码越权检测方法及装置
US8949166B2 (en) Creating and processing a data rule for data quality
CN100461132C (zh) 基于源代码静态分析的软件安全代码分析器及其检测方法
Ko Execution Monitoring of security-critical programs in a distributed system: a specification-based approach
CN108459860A (zh) 区块链智能合约形式化验证代码转换器及转换方法
CN110383238A (zh) 用于基于模型的软件分析的系统和方法
CN103793652A (zh) 一种基于静态分析的应用系统代码安全扫描装置
CN114297654A (zh) 一种源代码层级的智能合约漏洞检测方法及系统
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
US20080301080A1 (en) Method for rule compliance situation checking and related checking system
JP2014532222A (ja) アプリケーション・コード内のダウングレーダ・コードを評価するための方法、コンピュータ・プログラム製品、および装置(情報フロー・ダウングレーダにおける欠陥および非互換性問題の自動検出)
CN103262088A (zh) 信息流降级器的质量和一致性的形式分析
CN106598866A (zh) 一种基于smali中间语言的静态检测系统及方法
CN113326050B (zh) 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法
CN110489973A (zh) 一种基于Fuzz的智能合约漏洞检测方法、装置和存储介质
US9600644B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
CN114911711A (zh) 一种代码缺陷分析方法、装置、电子设备及存储介质
CN115794119B (zh) 一种案例自动解析方法及装置
CN107426211A (zh) 网络攻击的检测方法及装置、终端设备和计算机存储介质
CN106326123A (zh) 一种用于检测数组越界缺陷的方法及系统
Zhang et al. Android-SRV: Scenario-based runtime verification of Android applications

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