CN115168847A - 应用补丁生成方法、装置、计算机设备及可读存储介质 - Google Patents
应用补丁生成方法、装置、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN115168847A CN115168847A CN202210891731.4A CN202210891731A CN115168847A CN 115168847 A CN115168847 A CN 115168847A CN 202210891731 A CN202210891731 A CN 202210891731A CN 115168847 A CN115168847 A CN 115168847A
- Authority
- CN
- China
- Prior art keywords
- target application
- program
- application program
- vulnerability
- information
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例提供了一种应用补丁生成方法、装置、计算机设备及可读存储介质,涉及计算机技术领域,该应用补丁生成方法包括:将用户请求输入目标应用程序,以启动目标应用程序运行;通过部署于目标应用程序的挂钩点的代理探针,获取目标应用程序的挂钩点的程序上下文内容;基于挂钩点的程序上下文内容对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,获得目标应用程序的漏洞分析信息和攻击信息;根据漏洞分析信息和攻击信息生成目标补丁。采用本公开实施例,能够自动生成补丁,提高补丁生成的时效性。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种应用补丁生成方法、应用补丁生成装置、计算机设备及计算机可读存储介质。
背景技术
补丁技术是指软件在更新内容时,不需要重新下载完整的更新后的软件安装包,只需通过补丁更新本地机器上需要更新的程序代码和程序资源的技术。补丁技术广泛地应用于当前主流的系统平台上的各类应用程序(例如即时通讯应用程序、网络游戏等)、系统软件,其中的系统平台包括iOS、Android等移动平台以及Windows等个人计算机平台。
然而,在相关技术中,补丁一般都是依靠人工手动撰写相关代码生成,无法自动化实时更新与生成,当遇到相关漏洞时,还需要相关人员进行上线开发之后才能解决,时效性低。
发明内容
本公开实施例提供了一种应用补丁生成方法、补丁生成装置、计算机设备及计算机可读存储介质,可以自动生成补丁,提高补丁生成的时效性。
本公开实施例提供了一种应用补丁生成方法,包括:将用户请求输入目标应用程序,以启动所述目标应用程序运行;通过部署于所述目标应用程序的挂钩点的代理探针,获取所述目标应用程序的所述挂钩点的程序上下文内容;基于所述挂钩点的程序上下文内容对所述目标应用程序进行漏洞分析以及对所述用户请求进行攻击识别,获得所述目标应用程序的漏洞分析信息和攻击信息;根据所述漏洞分析信息和所述攻击信息生成目标补丁。
本公开实施例提供了一种应用补丁生成装置,包括启动模块、处理模块和生成模块。
其中,启动模块用于将用户请求输入目标应用程序,以启动所述目标应用程序运行;处理模块用于通过部署于所述目标应用程序的挂钩点的代理探针,获取所述目标应用程序的所述挂钩点的程序上下文内容;所述处理模块还用于基于所述挂钩点的程序上下文内容对所述目标应用程序进行漏洞分析以及对所述用户请求进行攻击识别,获得所述目标应用程序的漏洞分析信息和攻击信息;生成模块用于根据所述漏洞分析信息和所述攻击信息生成目标补丁。
在本公开的一些示例性实施例中,处理模块包括插桩单元和处理单元。
其中,插桩单元用于基于运行时应用自我保护RASP对所述目标应用程序中的所述挂钩点插桩所述代理探针。处理单元用于通过所述用户请求,触发所述挂钩点,通过所述RASP的所述代理探针获取到所述用户请求的上下文信息以及所述挂钩点的函数的参数信息,作为所述挂钩点的程序上下文内容。
在本公开的一些示例性实施例中,处理单元还用于根据所述挂钩点的程序上下文内容构建所述目标应用程序的抽象语法树;根据所述挂钩点的程序上下文内容获得所述挂钩点的函数的程序控制流图;针对所述目标应用程序的抽象语法树和所述挂钩点的函数的程序控制流图进行漏洞污点分析,获得所述目标应用程序的漏洞分析信息。
在本公开的一些示例性实施例中,处理单元还用于对所述挂钩点的程序上下文内容进行词法分析,将对应的代码合并成标识,并移除特定字符;将对应的代码合并成的标识分割进标识数组中;将所述标识数组通过语法分析转换成所述抽象语法树;验证所述抽象语法树的语法,若验证语法有错,则抛出语法错误。
在本公开一些示例性实施例中,处理单元还用于根据所述目标应用程序的抽象语法树和所述挂钩点的函数的程序控制流图确定所述目标应用程序的污染源和污点汇聚点;对所述污染源的目标变量进行污点标记;判断标记污点标记的所述目标变量是否能够在不经清洁函数处理时,传播至所述污点汇聚点;若所述目标变量能在不经清洁函数处理时传播至所述污点汇聚点,则确定所述漏洞分析信息为所述目标应用程序存在漏洞;若所述目标变量不能在不经清洁函数处理时传播至所述污点汇聚点,则确定所述漏洞分析信息为所述目标应用程序不存在漏洞。
在本公开一些示例性实施例中,处理模块还包括识别单元和收集单元。
其中,识别单元用于根据所述用户请求在所述目标应用程序中的运行过程,通过所述挂钩点获取到的所述程序上下文内容和数据流进行攻击匹配,以对所述用户请求进行攻击识别。收集单元用于收集记录所述攻击信息,所述攻击信息包括所述挂钩点收集到的信息,以及攻击匹配获得的漏洞信息、漏洞内容以及修复建议中的至少一项。
在本公开一些示例性实施例中,生成模块包括获取单元和生成单元。
其中,获取单元用于获得历史漏洞补丁。生成单元用于据所述漏洞分析信息和所述攻击信息对所述历史漏洞补丁进行更新,并通过变分自编码器生成所述目标补丁。
本公开实施例提供了一种计算机设备,包括处理器、存储器、输入输出接口;处理器分别与存储器和输入输出接口相连,其中,输入输出接口用于接收数据及输出数据,存储器用于存储计算机程序,处理器用于调用该计算机程序,以使包含该处理器的计算机设备执行本公开任一实施例中的应用补丁生成方法。
本公开实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本公开任一实施例中的应用补丁生成方法。
本公开实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本公开任一实施例中的各种可选方式中提供的方法。
本公开实施例的应用补丁生成方法、应用补丁生成装置、计算机设备及计算机可读存储介质,通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容,针对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,能够自动生成补丁,提高补丁生成的时效性。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开实施例提供的一种应用补丁生成方法的网络交互架构图;
图2是本公开实施例提供的一种应用补丁生成方法的流程图;
图3为本公开实施例提供的一种应用补丁生成方法的框架图;
图4是本公开实施例提供的一种对挂钩点插桩代理探针的过程示意图;
图5是本公开实施例提供的一种根据挂钩点的程序上下文内容得到函数的控制流图的示意图;
图6是本公开实施例提供的一种漏洞污点分析过程图;
图7是本公开实施例提供的一种应用补丁生成装置的框图;
图8是本公开实施例提供的一种处理模块的框图;
图9是本公开实施例提供的一种生成模块的框图;
图10是本公开实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
在本公开实施例中,请参见图1,图1是本公开实施例提供的一种应用补丁生成方法的网络交互架构图,本公开实施例可以由终端设备101实现。如图1所示,该系统架构可以包括终端设备101、网络102和服务器103。
网络102用以在终端设备101和服务器103之间提供通信链路的介质,可以是有线网络,也可以是无线网络。
可选地,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(Extensible MarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(InternetProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
终端设备101可以从服务器103中获取数据,对该数据进行显示。可以理解的是,本公开实施例中所提及的终端设备可以是一种计算机设备,本公开实施例中的计算机设备包括但不限于终端设备或服务器。换句话说,计算机设备可以是服务器或终端设备,也可以是服务器和终端设备组成的系统。其中,以上所提及的终端设备可以是一种电子设备,包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、车载设备、增强现实/虚拟现实(Augmented Reality/Virtual Reality,AR/VR)设备、头盔显示器、智能电视、可穿戴设备、智能音箱、数码相机、摄像头及其他具备网络接入能力的移动互联网设备(mobileinternet device,MID),或者火车、轮船、飞行等场景下的终端设备等。
可选地,不同的终端设备101中安装的应用程序的客户端可以是相同的,或基于不同操作系统的同一类型应用程序的客户端。基于终端平台的不同,该应用程序的客户端的具体形态也可以不同,比如,该应用程序客户端可以是手机客户端、PC客户端等。
服务器103可以是提供各种服务的服务器,例如对用户利用终端设备101所进行操作的装置提供支持的后台管理服务器。后台管理服务器可以对接收到的请求等数据进行分析等处理,并将处理结果反馈给终端设备。
可选地,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本公开实施例在此不做限制。
本领域技术人员可以知晓,图1中的终端设备、网络和服务器的数量仅仅是示意性的,根据实际需要,可以具有任意数目的终端设备、网络和服务器。本公开实施例对此不作限定。
图2是本公开实施例提供的一种应用补丁生成方法的流程图。图2所示实施例提供的方法可以由任意的计算机设备执行,这里以上述图1所示实施例中的任一终端设备101执行进行举例说明。
如图2所示,本公开实施例提供的应用补丁生成方法可以包括如下步骤:S210~S240。
S210:将用户请求输入目标应用程序,以启动目标应用程序运行。
在本公开的实施例中,目标应用程序是指在安全测试过程中被作为检测对象的计算机应用程序。
S220:通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容。
在本公开的实施例中,“代理探针(Agent探针)”是指“插桩”的“探针”,其本质上是进行信息采集的代码片段,可以是赋值语句或采集覆盖信息的函数调用。而上述的“插桩”又称为程序插桩,是指在保证被测程序原有逻辑完整性的基础上插入探针,通过对探针抛出的程序运行特征数据(即运行时数据)的分析,获得程序的控制流和数据流,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。其中的探针是根据插桩点(即挂钩点)、捕获数据需求等的不同,可以设计具有相应捕获功能的探针,获取所需的数据。在同一个被测程序中,根据不同的测试需求,可以包括仅插桩一个代理探针,也可以在其中多个不同的插桩点分别插入代理探针。一般来说,这些代理探针是根据不同语言进行开发,但是功能基本相同,主要包括:代码执行中的参数传递、数据库查询(如Open Database Connectivity,ODBC)、目录查询(如Lightweight directory access protocol,LDAP),文件系统权限、监听内存中特定的值,识别受污染的输入、第三方库的使用、对外部应用程序和服务的调用等。
S230:基于挂钩点的程序上下文内容对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,获得目标应用程序的漏洞分析信息和攻击信息。
其中,挂钩点的程序上下文内容可以包括用户请求的上下文信息以及挂钩点的函数的参数信息,此处不做特殊限定。漏洞分析信息是指对目标应用程序本身具有的漏洞进行分析,得到的关于漏洞的分析信息。攻击信息是指通过对目标应用程序本身的信息(如通过挂钩点获得的信息)进行攻击匹配而获得的信息。
S240:根据漏洞分析信息和攻击信息生成目标补丁。
其中,生成目标补丁可以理解为更新和/或重新生成目标补丁。即可以根据漏洞分析信息和攻击信息对历史补丁进行更新,和/或可以根据漏洞信息和攻击信息生成新的补丁。
本公开实施例的应用补丁生成方法,通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容,针对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,能够自动生成补丁,提高补丁生成的时效性。
下面对公开实施例的应用补丁生成方法做进一步的详细描述。
本公开的实施例中,上述S220的通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容,可以包括如下所述的A~B。
A:基于运行时应用自我保护RASP对目标应用程序中的挂钩点插桩代理探针。
在本公开实施例中,RASP(Runtime Application self-protection)为“运行时应用自我保护”的简称。在示例性实施例中,基于RASP对目标应用程序中的挂钩点插桩代理探针具体可以为通过相应的配置,对目标应用程序的挂钩点插桩代理探针。如图4所示,以Java编程的目标应用程序为例,对其执行运行时插桩,可以在被检测Java程序的类加载过程中,采用字节码插桩工具等方式,在相应的位点(挂钩点)插桩相应的代理探针。即服务器启动时,动态修改Java字节码,对敏感操作的函数(即目标应用程序)进行挂钩,注入安全检测和防护逻辑至应用内部。通过在对目标应用程序中的部署挂钩点以及插桩代理探针,能够全方位地对该目标应用程序进行防护补丁的生成,覆盖范围更大,解决了相关技术中补丁针对漏洞更新后不能全面根据漏洞进行修补导致的覆盖范围小的问题。
B:通过用户请求,触发挂钩点,通过RASP的代理探针获取到用户请求的上下文信息以及挂钩点的函数的参数信息,作为挂钩点的程序上下文内容,可以参考图3。
本公开实施例中,在进行用户请求时,触发挂钩点的安全检测和防护逻辑,即触发挂钩点,此时RASP的代理探针可以获取到用户请求的上下文信息以及函数的参数信息,以用于对用户请求进行详细的分析检测及响应。通过RASP可以实现对用户请求的实时分析,提高生成补丁的时效性,解决了相关技术中补丁不能针对攻击进行实时修改导致的准确度降低的缺陷。
可以继续参考图3,S230中的基于挂钩点的程序上下文内容对目标应用程序进行漏洞分析,获得目标应用程序的漏洞分析信息,可以具体包括如下所述的C~E。
C:根据挂钩点的程序上下文内容构建目标应用程序的抽象语法树。
其中,抽象语法树(Abstract Syntax Tree,AST),可以简称为语法树(SyntaxTree),是源代码语法结构的一种抽象表示。其以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码的一种结构。
其中,上述C的根据挂钩点的程序上下文内容构建目标应用程序的抽象语法树,具体可以包括C1~C4。
C1:对挂钩点的程序上下文内容进行词法分析,将对应的代码合并成标识,并移除特定字符。
具体地,通过词法分析读取程序上下文内容的代码,然后按照预定的规则合并成一个个的标识(token),同时移除特定字符。在一些实施例中,该特定字符可以是空白符、注释等,此处不做特殊限定。其中,预定的规则是构建语法树的通用规则,本领域技术人员能够在相关技术中获取,此处不再赘述。
C2:将对应的代码合并成的标识分割进标识数组中。
具体地,将整个对应的代码合并成的标识分割进一个标识列表(或者也可以称为一维数组)。具体可以参考如下示例:
1.const a=5;
2.//转换成
3.[{value:'const',type:'keyword'},{value:'a',type:'identifier'},...]
4.
当词法分析源代码的时候,其会逐个字母地读取代码,所以词法分析也可以被形象地称为扫描(Scanner)。当词法分析遇到空格、操作符或特殊符号时,会认为一句话已经完成了。
C3:将标识数组通过语法分析转换成抽象语法树。
C4:验证抽象语法树的语法,若验证语法有错,则抛出语法错误。
具体地,本公开的示例性实施例可以根据如下内容转换抽象语法树以及验证抽象语法树的语法。
1.[{value:'const',type:'keyword'},{value:'a',type:'identifier'},...]
2.//语法分析后的树形形式
3.{
4.type:"VariableDeclarator",
5.id:{
D:根据挂钩点的抽象语法树获得挂钩点的函数的程序控制流图。
本公开实施例中,程序控制流图也叫程序控制流程图,是程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。其用图的形式表示一个过程内所有基本块执行的可能流向,也能反应一个过程的实时执行过程。
具体地,参考图5,示出了本公开一示例性实施例的一种根据挂钩点的程序上下文内容得到函数的控制流图的示意图。根据挂钩点的程序上下文内容的代码,得到如图5所示的挂钩点的函数的程序控制流图。在本公开的一示例性实施例中,挂钩点的程序上下文内容的代码可以为如下所示。
E:针对目标应用程序的抽象语法树和挂钩点的函数的程序控制流图进行漏洞污点分析,获得目标应用程序的漏洞分析信息。
具体地,如图6所示,根据目标应用程序的抽象语法树和挂钩点的函数的程序控制流图确定目标应用程序的污染源和污点汇聚点。其中,该污染源和污点汇聚点可以通过代码审计确定。代码审计就是检查程序源代码是否存在安全隐患,或者编码不规范的地方,通过自动化工具或者人工审查的方式,对程序源代码逐条进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议。因此,本领域技术人员可以利用代码审计根据目标应用程序的抽象语法书和挂钩点的函数的程序控制流图,确定目标应用程序的污染源和污点汇聚点,关于具体的过程,可以在相关技术中获取,此处不再赘述。
对污染源的目标变量进行污点标记,如图6左侧虚线框中所述,对变量1和变量4均增加了污点标记。
判断标记污点标记的目标变量是否能够在不经清洁函数处理时,传播至污点汇聚点;若目标变量能在不经清洁函数处理时传播至污点汇聚点,则确定漏洞分析信息为目标应用程序存在漏洞,如图6中所示的带有污点标记的变量3,其未经过清洁函数处理,传播至污点汇聚点,说明该变量3为目标应用程序中存在的漏洞;若目标变量不能在不经清洁函数处理时传播至污点汇聚点,则确定漏洞分析信息为目标应用程序不存在漏洞。
本公开的实施例中,污点分析就是分析过程中由污染源引入的数据是否能够不经过无害处理,而直接传播到污点汇聚点。如果不能,说明系统的信息流是安全的,否则,说明系统产生了隐私数据泄露或危险数据操作等安全问题。
在漏洞分析中,使用污点分析技术将所感兴趣的数据(通常是来自程序的外部输入,假定所有输入都是危险的)标记为污点数据,然后通过跟踪和污点数据相关的信息的流向,可以知道这些污点数据是否会影响某些关键程序操作,进而挖掘程序漏洞。
在本公开实施例中,污染源(Source)可以表示直接引入不受信任的数据或者机密数据到系统中。污点汇聚点(Sink)可以表示直接产生安全敏感操作或者泄露隐私数据到外界。此外,本公开实施例中的“目标变量不经清洁函数处理”是指目标变量不经过无害处理。无害处理(Sanitizer)代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害,如图6中所示的带有污点标记的变量4经过清洁函数的处理后,形成为不带有污点标记的变量5,该变量5则不会成为目标应用程序的漏洞。
本公开实施例中,通过上述C~E,能够准确获取漏洞分析信息,提高了生成补丁的准确性。
本公开实施例中,S230中的基于挂钩点的程序上下文内容对用户请求进行攻击识别,获得攻击信息,具体可以包括如下所述的F~G。
F:根据用户请求在目标应用程序中的运行过程,通过挂钩点获取到的程序上下文内容和数据流进行攻击匹配,以对用户请求进行攻击识别。
具体地,对挂钩点获取到的程序上下文内容和参数轨迹信息进行特征提取,然后根据已有的匹配规则对上述信息的不同特征进行攻击匹配,以获得攻击信息。
G:收集记录攻击信息,攻击信息包括挂钩点收集到的信息,以及攻击匹配获得的漏洞信息、漏洞内容以及修复建议中的至少一项。
其中,挂钩点收集到的信息包括在上述F中的挂钩点获取到的程序上下文内容和数据流。本公开实施例中,数据流可以包括参数轨迹信息。
S240:根据漏洞分析信息和攻击信息生成目标补丁。
本公开实施例中,S240具体包括:获得历史漏洞补丁;根据漏洞分析信息和攻击信息对历史漏洞补丁进行更新,并通过变分自编码器生成目标补丁。
本公开实施例中,根据漏洞分析信息和攻击信息对历史漏洞补丁进行更新,并使用变分自编码器生成相关代码,生成目标补丁。
在一些实施例中,用于文本生成的变分自编码器的构建、训练、使用过程可以基于Python编程语言、PyTorch框架、Keras框架或自然语言处理中的工具包完成。
综上所述,本公开实施例的应用补丁生成方法,通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容,针对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,能够提高补丁生成的准确度,实现对用户请求的实时分析,提高补丁生成的时效性。通过在目标应用程序的挂钩点部署代理探针,能够全方位进行防护补丁生成,覆盖范围更大。
进一步的,本公开实施例还提供了一种应用补丁生成装置700。如图7所示,该应用补丁生成装置700包括启动模块701、处理模块702以及生成模块703。
启动模块701用于将用户请求输入目标应用程序,以启动目标应用程序运行。
处理模块702用于通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容。
上述的处理模块702还用于基于挂钩点的程序上下文内容对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,获得目标应用程序的漏洞分析信息和攻击信息。
生成模块703用于根据漏洞分析信息和攻击信息生成目标补丁。
在本公开的一些示例性实施例中,如图8所示,处理模块702包括插桩单元7021和处理单元7022。
其中,插桩单元7021用于基于运行时应用自我保护RASP对所述目标应用程序中的所述挂钩点插桩所述代理探针。处理单元7022用于通过所述用户请求,触发所述挂钩点,通过所述RASP的所述代理探针获取到所述用户请求的上下文信息以及所述挂钩点的函数的参数信息,作为所述挂钩点的程序上下文内容。本公开实施例的应用补丁生成装置通过RASP可以实现对用户请求的实时分析,提高生成补丁的时效性。
在本公开的一些示例性实施例中,处理单元7022还用于根据所述挂钩点的程序上下文内容构建所述目标应用程序的抽象语法树;根据所述挂钩点的抽象语法树获得所述挂钩点的函数的程序控制流图;针对所述目标应用程序的抽象语法树和所述挂钩点的函数的程序控制流图进行漏洞污点分析,获得所述目标应用程序的漏洞分析信息。
在本公开的一些示例性实施例中,处理单元7022还用于对所述挂钩点的程序上下文内容进行词法分析,将对应的代码合并成标识,并移除特定字符;将对应的代码合并成的标识分割进标识数组中;将所述标识数组通过语法分析转换成所述抽象语法树;验证所述抽象语法树的语法,若验证语法有错,则抛出语法错误。
在本公开一些示例性实施例中,处理单元7022还用于根据所述目标应用程序的抽象语法树和所述挂钩点的函数的程序控制流图确定所述目标应用程序的污染源和污点汇聚点;对所述污染源的目标变量进行污点标记;判断标记污点标记的所述目标变量是否能够在不经清洁函数处理时,传播至所述污点汇聚点;若所述目标变量能在不经清洁函数处理时传播至所述污点汇聚点,则确定所述漏洞分析信息为所述目标应用程序存在漏洞;若所述目标变量不能在不经清洁函数处理时传播至所述污点汇聚点,则确定所述漏洞分析信息为所述目标应用程序不存在漏洞。
因此,在本公开实施例中的应用补丁生成装置中,通过上述处理单元,能够准确获取漏洞分析信息,提高了生成补丁的准确性。
在本公开一些示例性实施例中,继续参考图8,处理模块702还包括识别单元7023和收集单元7024。
其中,识别单元7023用于根据所述用户请求在所述目标应用程序中的运行过程,通过所述挂钩点获取到的所述程序上下文内容和数据流和进行攻击匹配,以对所述用户请求进行攻击识别。收集单元7024用于收集记录所述攻击信息,所述攻击信息包括所述挂钩点收集到的信息,以及攻击匹配获得的漏洞信息、漏洞内容以及修复建议中的至少一项。
在本公开一些示例性实施例中,如图9所示,生成模块703包括获取单元7031和生成单元7032。
其中,获取单元7031用于获得历史漏洞补丁。生成单元7032用于据所述漏洞分析信息和所述攻击信息对所述历史漏洞补丁进行更新,并通过变分自编码器生成所述目标补丁。
进一步,本公开实施例提供的一种计算机设备。如图10所示,本公开实施例中的计算机设备可以包括:一个或多个处理器1001、存储器1002和输入输出接口1003。处理器1001分别与存储器1002、输入输出接口1003连接,如图10所示,该处理器1001、存储器1002和输入输出接口1003通过总线1004连接。存储器1002用于存储计算机程序,该计算机程序包括程序指令,输入输出接口1003用于接收数据及输出数据,如用于宿主机与计算机设备之间进行数据交互,或者用于在宿主机中的各个虚拟机之间进行数据交互;处理器1001用于执行存储器1002存储的程序指令。
其中,该处理器1001可以执行如下操作:将用户请求输入目标应用程序,以启动目标应用程序运行;通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容;基于挂钩点的程序上下文内容对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,获得目标应用程序的漏洞分析信息和攻击信息;根据漏洞分析信息和攻击信息生成目标补丁。
在一些可行的实施方式中,该处理器1001可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1002可以包括只读存储器和随机存取存储器,并向处理器1001和输入输出接口1003提供指令和数据。存储器1002的一部分还可以包括非易失性随机存取存储器。例如,存储器1002还可以存储设备类型的信息。
具体实现中,该计算机设备可通过其内置的各个功能模块执行如上述任一方法实施例中各个步骤所提供的实现方式,具体可参见上述方法实施例所示图中各个步骤所提供的实现方式,在此不再赘述。
本公开实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机程序,执行上述任一实施例中所示方法的各个步骤。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由该处理器加载并执行上述任一实施例中各个步骤所提供的应用补丁生成方法,具体可参见该上述任一实施例中各个步骤所提供的实现方式,在此不再赘述。
另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本公开所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本公开方法实施例的描述。作为示例,计算机程序可被部署为在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
该计算机可读存储介质可以是前述任一实施例提供的应用补丁生成装置300或者该计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本公开实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例中的各种可选方式中所提供的方法。
综上所述,本公开实施例的应用补丁生成方法、应用补丁生成装置700、计算机设备、计算机可读存储介质及计算机程序产品,通过部署于目标应用程序的挂钩点的代理探针获取目标应用程序的挂钩点的程序上下文内容,针对目标应用程序进行漏洞分析以及对用户请求进行攻击识别,能够提高补丁生成的准确度,实现对用户请求的实时分析,提高补丁生成的时效性。通过在目标应用程序的挂钩点部署代理探针,能够全方位进行防护补丁生成,覆盖范围更大。解决了传统补丁生成更新效率低、防护效果差、防护范围小的问题。
本公开实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在该说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
本公开实施例提供的方法及相关装置是参照本公开实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程应用显示设备的处理器以产生一个机器,使得通过计算机或其他可编程应用显示设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程应用显示设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程应用显示设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本公开较佳实施例而已,当然不能以此来限定本公开之权利范围,因此依本公开权利要求所作的等同变化,仍属本公开所涵盖的范围。
Claims (10)
1.一种应用补丁生成方法,其特征在于,包括:
将用户请求输入目标应用程序,以启动所述目标应用程序运行;
通过部署于所述目标应用程序的挂钩点的代理探针,获取所述目标应用程序的所述挂钩点的程序上下文内容;
基于所述挂钩点的程序上下文内容对所述目标应用程序进行漏洞分析以及对所述用户请求进行攻击识别,获得所述目标应用程序的漏洞分析信息和攻击信息;
根据所述漏洞分析信息和所述攻击信息生成目标补丁。
2.如权利要求1所述的方法,其特征在于,通过部署于所述目标应用程序的挂钩点的代理探针获取所述目标应用程序的所述挂钩点的程序上下文内容,包括:
基于运行时应用自我保护RASP对所述目标应用程序中的所述挂钩点插桩所述代理探针;
通过所述用户请求,触发所述挂钩点,通过所述RASP的所述代理探针获取到所述用户请求的上下文信息以及所述挂钩点的函数的参数信息,作为所述挂钩点的程序上下文内容。
3.如权利要求1所述的方法,其特征在于,基于所述挂钩点的程序上下文内容对所述目标应用程序进行漏洞分析,获得所述目标应用程序的漏洞分析信息,包括:
根据所述挂钩点的程序上下文内容构建所述目标应用程序的抽象语法树;
根据所述挂钩点的程序上下文内容获得所述挂钩点的函数的程序控制流图;
针对所述目标应用程序的抽象语法树和所述挂钩点的函数的程序控制流图进行漏洞污点分析,获得所述目标应用程序的漏洞分析信息。
4.如权利要求3所述的方法,其特征在于,根据所述挂钩点的程序上下文内容构建所述目标应用程序的抽象语法树,包括:
对所述挂钩点的程序上下文内容进行词法分析,将对应的代码合并成标识,并移除特定字符;
将对应的代码合并成的标识分割进标识数组中;
将所述标识数组通过语法分析转换成所述抽象语法树;
验证所述抽象语法树的语法,若验证语法有错,则抛出语法错误。
5.如权利要求3所述的方法,其特征在于,针对所述目标应用程序的抽象语法树和所述挂钩点的函数的程序控制流图进行漏洞污点分析,获得所述目标应用程序的漏洞分析信息,包括:
根据所述目标应用程序的抽象语法树和所述挂钩点的函数的程序控制流图确定所述目标应用程序的污染源和污点汇聚点;
对所述污染源的目标变量进行污点标记;
判断标记污点标记的所述目标变量是否能够在不经清洁函数处理时,传播至所述污点汇聚点;
若所述目标变量能在不经清洁函数处理时传播至所述污点汇聚点,则确定所述漏洞分析信息为所述目标应用程序存在漏洞;
若所述目标变量不能在不经清洁函数处理时传播至所述污点汇聚点,则确定所述漏洞分析信息为所述目标应用程序不存在漏洞。
6.如权利要求1所述的方法,其特征在于,基于所述挂钩点的程序上下文内容对所述用户请求进行攻击识别,获得攻击信息,包括:
根据所述用户请求在所述目标应用程序中的运行过程,通过所述挂钩点获取到的所述程序上下文内容和数据流进行攻击匹配,以对所述用户请求进行攻击识别;
收集记录所述攻击信息,所述攻击信息包括所述挂钩点收集到的信息,以及攻击匹配获得的漏洞信息、漏洞内容以及修复建议中的至少一项。
7.如权利要求1所述的方法,其特征在于,根据所述漏洞分析信息和所述攻击信息生成目标补丁,包括:
获得历史漏洞补丁;
根据所述漏洞分析信息和所述攻击信息对所述历史漏洞补丁进行更新,并通过变分自编码器生成所述目标补丁。
8.一种应用补丁生成装置,其特征在于,包括:
启动模块,用于将用户请求输入目标应用程序,以启动所述目标应用程序运行;
处理模块,用于通过部署于所述目标应用程序的挂钩点的代理探针,获取所述目标应用程序的所述挂钩点的程序上下文内容;
所述处理模块,还用于基于所述挂钩点的程序上下文内容对所述目标应用程序进行漏洞分析以及对所述用户请求进行攻击识别,获得所述目标应用程序的漏洞分析信息和攻击信息;
生成模块,用于根据所述漏洞分析信息和所述攻击信息生成目标补丁。
9.一种计算机设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于接收数据及输出数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891731.4A CN115168847A (zh) | 2022-07-27 | 2022-07-27 | 应用补丁生成方法、装置、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891731.4A CN115168847A (zh) | 2022-07-27 | 2022-07-27 | 应用补丁生成方法、装置、计算机设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115168847A true CN115168847A (zh) | 2022-10-11 |
Family
ID=83497459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210891731.4A Pending CN115168847A (zh) | 2022-07-27 | 2022-07-27 | 应用补丁生成方法、装置、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115168847A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115310100A (zh) * | 2022-10-12 | 2022-11-08 | 鹏城实验室 | 智能合约漏洞修复方法、设备以及介质 |
CN116992438A (zh) * | 2023-09-25 | 2023-11-03 | 北京安普诺信息技术有限公司 | 基于代码疫苗的实时漏洞修复的方法、装置、设备及介质 |
-
2022
- 2022-07-27 CN CN202210891731.4A patent/CN115168847A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115310100A (zh) * | 2022-10-12 | 2022-11-08 | 鹏城实验室 | 智能合约漏洞修复方法、设备以及介质 |
CN116992438A (zh) * | 2023-09-25 | 2023-11-03 | 北京安普诺信息技术有限公司 | 基于代码疫苗的实时漏洞修复的方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9715593B2 (en) | Software vulnerabilities detection system and methods | |
Costin et al. | A {Large-scale} analysis of the security of embedded firmwares | |
CN104077531B (zh) | 基于开放漏洞评估语言的系统漏洞评估方法、装置和系统 | |
Calleja et al. | The malsource dataset: Quantifying complexity and code reuse in malware development | |
Yamaguchi et al. | Chucky: Exposing missing checks in source code for vulnerability discovery | |
Carmony et al. | Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. | |
CN112685737A (zh) | 一种app的检测方法、装置、设备及存储介质 | |
JP7131946B2 (ja) | アプリケーションの保安性を評価する方法およびシステム | |
CN115168847A (zh) | 应用补丁生成方法、装置、计算机设备及可读存储介质 | |
JPWO2006087780A1 (ja) | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 | |
KR101859562B1 (ko) | 취약점 정보 분석 방법 및 장치 | |
EP3547121A1 (en) | Combining device, combining method and combining program | |
CN110929264A (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
CN113158197B (zh) | 一种基于主动iast的sql注入漏洞检测方法、系统 | |
Khodayari et al. | It’s (dom) clobbering time: Attack techniques, prevalence, and defenses | |
KR20160090566A (ko) | 유효마켓 데이터를 이용한 apk 악성코드 검사 장치 및 방법 | |
CN114036526A (zh) | 漏洞测试方法、装置、计算机设备和存储介质 | |
CN111291377A (zh) | 一种应用漏洞的检测方法及系统 | |
US10880316B2 (en) | Method and system for determining initial execution of an attack | |
McBride et al. | Security analysis of Contiki IoT operating system | |
Mostafa et al. | Netdroid: Summarizing network behavior of android apps for network code maintenance | |
Niu et al. | Clone analysis and detection in android applications | |
US11886599B2 (en) | Method and system for data flow monitoring to identify application security vulnerabilities and to detect and prevent attacks | |
CN113849817B (zh) | 一种JavaScript原型链污染漏洞的检测方法及装置 | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 |
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 |