针对WEB注入漏洞的中间语言表示方法及系统技术方案

技术编号:35413970 阅读:18 留言:0更新日期:2022-11-03 11:11
本发明专利技术公开一种针对WEB注入漏洞的中间语言表示方法及系统。在漏洞检测时,若直接对源代码进行分析,会包含大量无关信息,导致漏洞检测效果不佳。利用本发明专利技术的中间语言表示将源代码进行转义后,可以提取与漏洞相关的语义信息,所提取的信息中不包含与漏洞无关的噪声数据,能更加精确地描述与漏洞存在直接关系的逻辑代码。并且,此中间语言表示与实际的开发语言和开发环境无关,可以视为一种描述漏洞结构的语言。利用此中间语言表示作为输入对Bi

【技术实现步骤摘要】
针对WEB注入漏洞的中间语言表示方法及系统


[0001]本专利技术涉及WEB程序的漏洞检测领域,尤其涉及针对WEB注入漏洞的中间语言表示方法及系统和基于中间语言表示的针对PHP的WEB注入漏洞的检测方法及系统。

技术介绍

[0002]自从分布式计算模式(如信息物理系统和物联网)流行以来,WEB应用的数量一直在快速增长中,但漏洞的数量也在随之增长。而注入攻击在所有WEB漏洞中被广泛认为是最具破坏性的威胁之一。注入攻击会将脚本嵌入到用户输入中,导致在WEB应用程序后面运行的关系数据库管理系统执行恶意SQL语句,或者在用户的浏览器内执行恶意脚本。根据2020年国家信息安全漏洞共享平台公布的漏洞分布情况,WEB应用漏洞占比高达27.7%,在各种漏洞类型中注入攻击占据一半。因此,进行检测和防止注入漏洞对于提高现代WEB应用程序的可靠性和可信度至关重要。在各种WEB应用程序的编程语言中,由于PHP语言具有编写灵活、运行快速等特点,被广泛用于WEB开发。据W3Techs统计,2021年PHP语言在WEB服务器的编程语言中占比78.8%,仍有很高的占比。因此,针对PHP语言的WEB漏洞检测仍是当前的研究热点。
[0003]一般来说,检测PHP注入漏洞的方法有两种。一种是进行动态测试,它的基本思想是模拟黑客对WEB应用程序进行攻击,具体为设计各种攻击向量,并利用这些向量对系统进行攻击,并分析其是否攻击成功。如Liu M等人认为恶意的sql语句中具有独特的语义,因此可以用语义知识生成语义相同的测试用例,而生成的测试用例可以更全面的检测SQLi漏洞,基于此思想设计了DeepSQLi。DeepSQLi利用神经语言模型对给定的测试用例或正常用户输入进行变异,从而产生更多样化的测试用例。但由于其本质是黑盒测试,所以不可能进行完全的、毫无遗漏的输入测试,如因用例的语义缺失无法覆盖所有执行路径而导致的检测失败。
[0004]另一种方式是静态测试,其本质是主要通过词法和语法分析等方法离线分析变量间的依赖关系,以检测污点数据能否从污点源传播到污点汇聚点。在此过程中既不运行目标程序,也无需修改代码。静态检测也分为两种,一是基于规则的静态检测。Son等结合了污染分析和控制流图来发现一些语义漏洞,如丢失授权问题和拒绝服务攻击,但是其检测结果的误报率较高无法直接使用,需要对结果进行人工检查。Wasef等提出了一种基于遗传算法和静态分析的PHP web应用程序检测方法,该方法通过消除控制流图中的不可行的路径来降低误报率。而Russell等与Nguyen等强调了静态和动态分析的劣势,在检测软件漏洞时,会导致很高比例的错误和误报。并且,Seokmo等也强调了静态分析技术用于漏洞检测时,存在检测精度低的问题。另一种是基于学习的静态检测,此方法可以避免人工设计规则库,并且可以检测新型漏洞。其主要思想是利用静态分析对源代码进行分析或预处理,之后训练神经网络,从而实现漏洞检测。如Medeiros等利用数据挖掘技术替代了人工审核,从而降低检测的误报。并且,Zheng等对传统机器学习和深度学习方法在软件漏洞检测方面进行比较评估,证实了与传统的机器方法相比,深度学习方法确实在检测软件漏洞方面做得更
好。
[0005]由于传统的静态检测方法会存在大量的误报,所以将机器学习引入漏洞检测是现今的发展趋势。若利用机器学习进行漏洞检测就需要对源代码进行预处理,找到漏洞所在位置并提取出漏洞特征,但是现有的特征提取表示方法都会缺少漏洞相关信息,如源代码文本,AST特征,操作码和php

token等。源代码文本是将源代码中的无意义的标记符号去除后的结果。AST特征就是将源代码信息用AST表示,去掉其中的特殊标记符。操作码是PHP语言里zend引擎执行的一种中间代码。源代码可以被表示为操作码的形式,并以操作码的形式对漏洞进行特征表示。php

token是利用PHP内置函数token_get_all将源代码按PHP标记进行分割,得到PHP的token序列,用此序列作为源代码的漏洞特征表示。
[0006]但是上述的中间表示都有其问题,具体如下:源代码文本和AST作为漏洞特征会包含大量的无关信息导致漏洞检测不准确;Fidalgo等利用操作码进行特征提取,但是操作码无法表示过多的语义信息导致了漏洞语义缺失;Fang等对php

token重新设计,将源代码中的函数名保留。因此,此方法进行转义时函数的参数会被舍弃,但是某些函数会根据参数的不同有不同的作用,导致丢失漏洞相关信息。并且,此表示的可读性很差,会有很多冗余信息。
[0007]为了解决上述问题,针对基于PHP的WEB应用的SQL注入漏洞、跨站脚本攻击和命令注入漏洞,本专利技术提出了一种中间语言用于漏洞特征提取,并基于此中间语言设计了漏洞检测工具。该中间语言可以从源代码中提取出只与漏洞有关的语义信息,并对漏洞进行抽象表示,此抽象表示既保留了漏洞语义信息也具有可读性。相比上述提到的表示方法,本专利技术的中间语言表示是专用于漏洞的特征表示,可以更准确地描述漏洞的语义信息,剔除无关代码,并且保留了代码的可读性。同时,本专利技术利用此中间语言表示作为输入对Bi

LSTM网络进行训练,可以得到一个漏洞检测模型,并可利用此模型对源代码进行漏洞检测。

技术实现思路

[0008]本专利技术公开一种针对WEB注入漏洞的中间语言表示,此表示可用于精确描述代码中的漏洞信息,并且本专利技术基于此中间表示公开一种针对PHP的WEB注入漏洞检测方法。此中间语言表示可以精确地提取与漏洞存在直接关系的信息,避免引入过多噪声数据,并且利用此中间语言的漏洞检测方法也具有较高的准确性。
[0009]根据本专利技术的一个方面,提供一种针对WEB注入漏洞的中间语言表示方法,所述方法用于表示各种变量和函数的分类语言;所述方法包括:
[0010]对源代码进行转义时,根据代码的语义进行分类表示,包括字符串操作,敏感函数;以及
[0011]在转义过程中会针对每一行进行转义,转义结束后根据特定的语法进行组合作为目标代码的中间表示。
[0012]优选地,不同的代码语义被分类为:
[0013]敏感函数、清洁函数、变量、比较符、字符串、字符串操作、白名单、类型验证、条件语句和循环语句;
[0014]其中,敏感函数是用于引发SQL注入、XSS和命令注入的函数;清洁函数是用于对用户输入进行形式验证的函数;变量包含被污染变量和未污染变量,类型验证包含数字验证、
数字转换、字符串验证和字符串转换,字符串操作包含字符串的连接、添加和替换;各个分类的结果用特定的关键字进行表示。
[0015]优选地,是对源代码的每条语句进行分类转义,而不是对源代码中的每个词进行分类得到漏洞的中间语言表示;源代码转义为中间语言表示时,是以语句作为最小转义对象,根据源代码中每个语句的语义进行分类转义;转义过程是上下文相关的,根据污染源的传播路径进行针对性的转义,与漏洞无关的部分不会被转义,并且一个代本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对WEB注入漏洞的中间语言表示方法,其特征在于,所述方法用于表示各种变量和函数的分类语言;所述方法包括:对源代码进行转义时,根据代码的语义进行分类表示,包括字符串操作,敏感函数;以及在转义过程中会针对每一行进行转义,转义结束后根据特定的语法进行组合作为目标代码的中间表示。2.根据权利要求1所述的中间语言表示方法,其特征在于,不同的代码语义被分类为:敏感函数、清洁函数、变量、比较符、字符串、字符串操作、白名单、类型验证、条件语句和循环语句;其中,敏感函数是用于引发SQL注入、XSS和命令注入的函数;清洁函数是用于对用户输入进行形式验证的函数;变量包含被污染变量和未污染变量,类型验证包含数字验证、数字转换、字符串验证和字符串转换,字符串操作包含字符串的连接、添加和替换;各个分类的结果用特定的关键字进行表示。3.根据权利要求2所述的中间语言表示方法,其特征在于,是对源代码的每条语句进行分类转义,而不是对源代码中的每个词进行分类得到漏洞的中间语言表示;源代码转义为中间语言表示时,是以语句作为最小转义对象,根据源代码中每个语句的语义进行分类转义;转义过程是上下文相关的,根据污染源的传播路径进行针对性的转义,与漏洞无关的部分不会被转义,并且一个代码语句的转义是多个关键字的组合。4.根据权利要求3所述的中间语言表示方法,其特征在于,进行转义前会对目标程序进行预处理,提取其包含漏洞的代码;此次预处理先分析并提取出代码中存在漏洞的部分,对此部分进行信息标注作为待转义的代码;标注的信息包括漏洞类型、所在文件和所在代码行。5.根据权利要求1所述的中间语言表示方法,其特征在于,在各个关键字组合时根据特定语法进行组合;根据关键字在源代码中所在的位置与语义决定其组合方式,并且会根据语义对其进行特定的修饰;修饰的内容包括字符串长度、变量在字符串中的位置。6.根据权利要求5所述的中间语言表示方法,其特征在于,关键字的组合是包括对一条代码语句的组合和整个源代码的组合;一条...

【专利技术属性】
技术研发人员:张国栋刘子龙郭薇
申请(专利权)人:沈阳航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1