CN116541855A - 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 - Google Patents
跨协程运行时漏洞分析方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116541855A CN116541855A CN202310822917.9A CN202310822917A CN116541855A CN 116541855 A CN116541855 A CN 116541855A CN 202310822917 A CN202310822917 A CN 202310822917A CN 116541855 A CN116541855 A CN 116541855A
- Authority
- CN
- China
- Prior art keywords
- stain
- pool
- function
- value
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 101
- 238000012038 vulnerability analysis Methods 0.000 title claims abstract description 22
- 238000003860 storage Methods 0.000 title claims abstract description 11
- 238000012544 monitoring process Methods 0.000 claims abstract description 48
- 239000000523 sample Substances 0.000 claims abstract description 46
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 352
- 230000007480 spreading Effects 0.000 claims description 33
- 238000003892 spreading Methods 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 13
- 239000003795 chemical substances by application Substances 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 4
- 239000003153 chemical reaction reagent Substances 0.000 claims description 2
- 238000011176 pooling Methods 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种跨协程运行时漏洞分析方法、装置、电子设备及存储介质,涉及代码安全领域,所述方法包括:在go源码编译阶段预插桩探针;在程序运行时通过所述预插桩探针监控请求相关的函数、污点源函数、污点传播函数和污点汇聚函数,根据依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值;对污点池索引值对应的第二污点池相关联的请求进行拦截。能够综合分析不同请求的不同协程的数据流,实现不同请求的不同协程之间污点传播的分析,降低漏报。同时通过本地两级污点池的设置实现漏洞的实时上报和拦截处置。
Description
技术领域
本申请涉及代码安全领域,具体而言,涉及一种跨协程运行时漏洞分析方法、装置、电子设备及存储介质。
背景技术
在用户交易场景中需要进行单向多次请求交互。例如,在进行在线购物时,用户需要从商户网站获取商品信息、提交订单、进行支付等操作,这些操作需要通过多次请求进行交互,并且这些请求是单向的,即每次请求只涉及客户端向服务端发送数据,而不涉及服务端返回数据给客户端。具体来说,在进行在线购物时,用户可以通过浏览器发送请求获取商品列表、商品详情等信息,然后选择商品并提交订单,这些操作需要通过多次请求进行交互。如果用户选择在线支付,还需要进行支付操作,这也需要通过多次请求进行交互。
go语言非常适合构建微服务架构,而在微服务架构中http服务经常需要调用rpc服务来处理业务逻辑,就会出现多个请求且每个其请求会产生多个协程的场景,另外在grpc的应用场景中,尤其在客户端和服务端通过流式的方式进行双向通讯时,服务端和客户端往往会出现不同请求的不同协程同时处理的场景,以提高***的并发性能和吞吐量。
go协程是go语言中的轻量级线程实现,由go运行时(runtime)管理。在一个函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。当被调用的函数返回时,这个goroutine也自动结束。需要注意的是,如果这个函数有返回值,那么这个返回值会被丢弃。协程工作在用户态,它类似于现场的运行方式可以并行处理任务。
现有的代码安全解决方案是通过插桩关键函数监测应用程序运行的各个阶段的数据流信息,将污点数据整体上传服务端再生成方法调用图检测漏洞。在处理单个请求的单个协程的污点追踪和安全防护的场景中,在请求开始建立污点池,并和该请求的协程相关联,在进行关键方法调用时,结合方法参数和该请求协程相关联的污点池进行计算,从而实现污点追踪和安全防护的需求。
但是在实际应用中,往往会存在多个请求的多个协程处理同一个业务逻辑,而在Go语言中我们无法获取各请求的协程之间的关联关系,如果在请求中启动了其它协程,则无法进行污点追踪和漏洞防护。现有技术中污点传播分析是针对单一请求的分析过程,未考虑到污点的跨请求跨协程传播情况,这样会存在漏报的情况发生。另外,污点数据整体上传服务端再生成方法调用图检测漏洞的方式查找效率低,无法对漏洞进行实时的拦截修复处置。
发明内容
有鉴于此,本申请实施例的目的在于提供一种跨协程运行时漏洞分析方法及装置,能够综合分析不同请求之间跨协程的数据流,实现跨请求跨协程间的污点传播的分析,降低漏报。同时通过本地两级污点池的设置实现漏洞的实时上报和拦截处置。
本申请实施例第一方面提供了一种跨协程运行时漏洞分析方法,包括:
在go源码编译阶段,对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针;
在程序运行时,通过所述预插桩探针监控请求相关的函数,获取所有请求,并分别获取所有请求中每个请求的第一上下文信息;
通过所述预插桩探针监控污点源函数,判断是否产生污点输入;
若是,计算污点源函数的返回值的特征值,并获取污点源函数的参数所对应请求的第一上下文信息;
建立与污点源函数的参数所对应请求相关联的第二污点池,第二污点池包括用于指示第二污点池位置的污点池索引值,将污点源函数的详细信息和第二上下文信息添加到所述第二污点池,并生成用于指示污点源函数在第二污点池位置的污点源调用索引值;
建立第一污点池,将污点源函数的返回值的特征值、污点池索引值和污点源调用索引值组合为污点特征调用索引信息并添加到第一污点池;
通过所述预插桩探针监控污点传播函数,计算污点传播函数的参数的特征值,在所述第一污点池查询污点传播函数的参数的特征值是否存在;
若存在,依次获取污点传播函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,将污点传播函数的详细信息和第三上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点传播函数在第二污点池位置的污点传播调用索引值;
将污点传播函数的返回值的特征值、污点池索引值和污点传播调用索引值组合为污点特征调用索引信息并添加到第一污点池;
通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;
若存在,依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,将污点汇聚函数的详细信息和第四上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点汇聚函数在第二污点池位置的污点汇聚调用索引值;
将污点汇聚函数的参数的特征值、污点池索引值和污点汇聚调用索引值组合为污点特征调用索引信息并添加到第一污点池;
依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,对污点池索引值对应的第二污点池相关联的请求进行拦截。
在上述实现过程中,该跨协程运行时漏洞分析方法,通过运行时编译预插桩探针,实现在程序运行时对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数的实时监控。再通过建立两级污点池,在第一污点池存储全局所有请求的污点的特征值(生命期内唯一的摘要信息)和其在第二污点池的索引,另外针对每个请求建立一个第二污点池,存储单个请求相关的污点的详细信息和上下文信息。通过对监控点函数在第一污点池的特征值查找,可以快速实现跨请求跨协程的污点追踪,同时通过两级污点池设计,能够满足更快速的大量查询需要,适应go语言多并发协程的情况。
可选地,所述对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针,包括:
获取编译源码参数,通过go build命令的toolexec参数在编译源码参数中添加agent;
在go源码编译阶段,通过所述agent解析传入的编译命令和编译参数,获取到编译参数中的文件列表和包信息;
对所述文件列表中的文件进行语法分析获取到token序列,通过token序列获取抽象语法树结构;
通过所述agent修改抽象语法树结构,在关键函数中***检测逻辑代码。
可选地,所述关键函数包括:请求相关的函数、污点源函数、污点传播函数、污点汇聚函数。
可选地,所述第一上下文信息包括:请求参数、url和请求方法。
可选地,所述通过所述预插桩探针监控污点源函数,判断是否产生污点输入,包括:判断当前污点源函数的返回值是否不为空。
可选地,所述污点源函数的详细信息包括:污点数据类型、污点源函数名称、参数、返回值、堆栈跟踪信息;所述污点数据类型为源;所述第二上下文信息包括:污点源函数的参数所对应请求的第一上下文信息。
可选地,所述污点传播函数的详细信息包括:污点数据类型、污点传播函数名称、参数、返回值、堆栈跟踪信息;所述污点数据类型为传播;所述第三上下文信息包括:污点传播函数的参数的特征值在第一污点池查找到的特征值对应的污点特征调用索引信息。
可选地,所述污点汇聚函数的详细信息包括:污点数据类型、污点汇聚函数名称、参数、返回值、堆栈跟踪信息;污点数据类型为汇聚;所述第四上下文信息包括:污点汇聚函数的参数的特征值在第一污点池查找到的特征值对应的污点特征调用索引信息。
可选地,所述对污点池索引值对应的第二污点池相关联的请求进行拦截,包括:替换请求的url,执行重定向操作。
可选地,所述方法还包括:通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;如果存在,对污点汇聚函数执行return操作,结束污点汇聚函数执行。
可选地,所述方法还包括:在请求结束后,将污点池索引值对应的第二污点池中依次添加的污点源函数、污点传播函数、污点汇聚函数组成数据污染路径,以及污点源函数的详细信息和第二上下文信息、污点传播函数的详细信息和第三上下文信息、污点汇聚函数的详细信息和第四上下文信息,组成漏洞信息进行上报。
本申请实施例第二方面提供了一种跨协程运行时漏洞分析装置,包括:
插桩模块,用于在go源码编译阶段对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针;
第一监控模块,用于在程序运行时通过所述预插桩探针监控请求相关的函数获取所有请求,分别获取所有请求中每个请求的第一上下文信息;
第二监控模块,用于通过所述预插桩探针监控污点源函数,判断是否产生污点输入;若是,计算污点源函数的返回值的特征值,获取污点源函数的参数所对应请求的第一上下文信息;还用于建立与污点源函数的参数所对应请求相关联的第二污点池,第二污点池包括用于指示第二污点池位置的污点池索引值,将污点源函数的详细信息和第二上下文信息添加到所述第二污点池,并生成用于指示污点源函数在第二污点池位置的污点源调用索引值;还用于建立第一污点池,将污点源函数的返回值的特征值、污点池索引值和污点源调用索引值组合为污点特征调用索引信息添加到第一污点池;
第三监控模块,用于通过所述预插桩探针监控污点传播函数,计算污点传播函数的参数的特征值,在所述第一污点池查询污点传播函数的参数的特征值是否存在;若存在,依次获取污点传播函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,将污点传播函数的详细信息和第三上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点传播函数在第二污点池位置的污点传播调用索引值; 还用于将污点传播函数的返回值的特征值、污点池索引值和污点传播调用索引值组合为污点特征调用索引信息添加到第一污点池;
第四监控模块,用于通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;如果存在,依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,将污点汇聚函数的详细信息和第四上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点汇聚函数在第二污点池位置的污点汇聚调用索引值;还用于将污点汇聚函数的参数的特征值、污点池索引值和污点汇聚调用索引值组合为污点特征调用索引信息添加到第一污点池;
拦截模块,用于依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,对污点池索引值对应的第二污点池相关联的请求进行拦截。
本申请实施例第三方面提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器运行所述计算机程序时,执行本申请实施例第一方面中的任一实现方式的步骤。
本申请实施例第四方面提供了一种可读存储介质,所述可读取存储介质中存储有计算机程序,所述计算机程序在处理器上运行时,执行本申请实施例第一方面中的任一实现方式的步骤。
本申请实施例第五方面提供了一种计算机程序产品,所述计算机程序产品在计算机上运行时,执行如第一方面中的任一实现方式的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:通过运行时编译预插桩探针,实现在程序运行时对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数的实时监控。再通过建立两级污点池,在第一污点池存储全局所有请求的污点的特征值(生命期内唯一的摘要信息)和其在第二污点池的索引,另外针对每个请求建立一个第二污点池,存储单个请求相关的污点的详细信息和上下文信息。通过对监控点函数在第一污点池的特征值查找,可以快速实现跨请求跨协程的污点追踪,同时通过两级污点池设计,能够满足更快速的大量查询需要,适应go语言多并发协程的情况。能够综合分析多协程的数据流,实现跨请求跨协程之间的污点传播分析,降低漏报。同时通过本地两级污点池的设置实现漏洞的实时上报和拦截处置。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种跨协程运行时漏洞分析方法的流程示意图;
图2为本申请实施例提供的一种跨协程运行时漏洞分析方法的跨协程传播及追踪示意图;
图3为本申请实施例提供的一种跨协程运行时漏洞分析方法的另一种跨协程传播及追踪示意图;
图4为本申请实施例提供的一种跨协程运行时漏洞分析装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。显而易见地,下面所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请实施例的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
实施例一:
请参阅图1,图1为本申请实施例提供的一种跨协程运行时漏洞分析方法的流程示意图。其中,方法包括以下步骤:
S100:在go源码编译阶段对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针;
本实施例中,获取编译源码参数,通过go build命令的toolexec参数在编译源码参数中添加agent;在go源码编译阶段,通过agent解析传入的编译命令和编译参数,获取到编译参数中的文件列表和包信息;对文件列表中的文件进行语法分析获取到token序列,通过token序列获取抽象语法树结构;通过agent修改抽象语法树结构,在关键函数中***检测逻辑代码。关键函数包括请求相关的函数、污点源函数、污点传播函数、污点汇聚函数。
需要说明的是,本申请实施例提到的技术术语“agent”是指编译拦截工具,这其实可以看作是一个插桩(hook)机制,利用toolexec参数来指定一个我们的程序(即agent),在编译时用这个程序调用编译拦截工具,从而介入编译过程。本申请实施例提到的“插桩”是指在保证被测程序原有逻辑完整性的基础上在程序中***检测逻辑代码,通过对“预插桩探针”抛出的程序运行特征数据(即运行时数据)的分析,获得程序的控制流和数据流,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。其中的“预插桩探针”,根据插桩点、捕获数据需求等的不同,可以设计具有相应捕获功能的“预插桩探针”,获取所需的数据。在同一个被测程序中,根据不同的测试需要,可以包括仅插桩一个“预插桩探针”,也可以在其中多个不同的插桩点分别***“预插桩探针”。
插桩的位置具体是污点追踪相关点,例如:source点(污点源函数)、propagation(污点传播函数)、sink点(污点汇聚函数),还包括http请求,rpc请求的相关方法/函数,如ServeHTTP方法。
source点的污点源函数如:http.Header.Get、http.(*Request).FormValue。
http.Header.Get是从 HTTP 请求头中获取指定键的值。这个函数返回一个字符串类型的值,如果指定的键不存在则返回空字符串。http.(*Request).FormValue是从HTTP POST 请求中获取指定键的值。这个函数返回一个字符串类型的值,如果指定的键不存在则返回空字符串。插桩的污点源函数主要是涉及从请求中获取值的函数/方法。
propagation点的污点传播函数如:stirngs.Clone、strings.Join。strings.Clone是复制一个字符串,并返回一个指向该字符串的指针。这个函数返回一个字符串类型的指针。strings.Join是将一个字符串切片连接成一个单独的字符串。这个函数返回一个字符串类型的值。插桩的污点传播函数主要是对一些字符串进行操作的函数/方法
sink点的污点汇聚函数如:os.OpenFile、os.Rename。os.OpenFile是打开一个文件,并返回一个指向该文件的指针。这个函数返回一个 *File 类型的值。os.Rename是将一个文件重命名为另一个文件。这个函数返回一个 error 类型的值,如果操作成功则返回nil。插桩的污点汇聚函数主要是一些关键操作的函数/方法。
S101:在程序运行时通过预插桩探针监控请求相关的函数获取所有请求,分别获取所有请求中每个请求的第一上下文信息;第一上下文信息包括请求参数、url和请求方法。通过监控所有请求并获取请求的上下文信息,便于后续污点池建立后污点源详细信息获取,以及根据请求的上下文信息对请求进行实时拦截。
本实施例中,监控的污点源函数可以存在一个或多个,污点传播函数可能存在一个或多个,即一个污点传播函数的调用来源于一个污点源函数的调用,或来源于多个污点源函数或污点传播函数的调用。且污点源函数、污点传播函数和污点汇聚函数的调用可能来源于同一请求的不同协程,也可能来源于不同请求的不同协程。
由于实际的污点传播过程是非线性的复杂传播路径,如一个污点传播过程可能存在多个污点源函数或多个污点传播函数的调用。如图2中所示,图2为本申请实施例提供的一种跨协程运行时漏洞分析方法的跨协程传播及追踪示意图。此次污点传播过程涉及两个污点源函数a和b,两个污点传播函数c和d,一个污点汇聚函数e。污点源函数a的调用来自请求1产生的协程A,污点源函数b的调用来自请求2产生的协程C,污点传播函数c的调用来自请求1产生的协程B,污点传播函数d的调用来自请求2产生的协程D,污点汇聚函数e的调用来自请求2产生的协程E。
又如图3中所示,图3为本申请实施例提供的一种跨协程运行时漏洞分析方法的另一种跨协程传播及追踪示意图。此次污点传播过程涉及一个污点源函数A,一个污点传播函数B,一个污点汇聚函数C。污点源函数A的调用来自请求a产生的协程1,污点传播函数B的调用来自请求a产生的协程2,污点汇聚函数C的调用来自请求a产生的协程3。为了能实现跨请求和/或跨协程的污点传播分析。通过运行时编译预插桩探针,实现在程序运行时对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数的实时监控。再通过建立两级污点池,在第一污点池存储全局所有请求的污点的特征值和其在第二污点池的索引,另外针对每个请求建立一个第二污点池,存储单个请求相关的污点的详细信息和上下文信息。通过对监控点函数在第一污点池的特征值查找,可以快速实现跨请求跨协程的污点追踪,降低漏报。同时通过本地两级污点池的设置实现漏洞的实时上报和拦截处置。
S102:通过预插桩探针监控污点源函数,判断当前污点源函数的返回值是否不为空,从而判断是否产生污点输入;
若是,即污点源函数的返回值不为空,即当前污点源函数被调用。如http.Header.Get从 HTTP 请求头中获取指定键的值,返回的不是空字符串即返回值不为空。计算污点源函数的返回值的特征值,获取污点源函数的参数所对应请求的第一上下文信息,如请求参数、url和请求方法。
本实施例中,计算污点源函数的返回值的特征值实际是对返回字符串的摘要信息提取唯一标识,可以是哈希值。
在另一实施例中,计算污点源函数的返回值的特征值通过计算摘要信息生成一个至少保证在一次HTTP请求的生命期内唯一的摘要特征,对返回字符串的摘要信息提取唯一标识,如以下计算:特征值=字符串的内存地址偏移值/绝对值+字符串序列。
建立与污点源函数的参数所对应请求相关联的第二污点池,第二污点池包括用于指示第二污点池位置的污点池索引值,将污点源函数的详细信息和第二上下文信息添加到第二污点池,并生成用于指示污点源函数在第二污点池位置的污点源调用索引值;
本实施例中,污点源函数的详细信息包括:污点数据类型、污点源函数名称、参数、返回值、堆栈跟踪信息;此时污点数据类型为源;第二上下文信息是污点源函数的参数所对应请求的第一上下文信息,即用于追踪请求相关的上下文信息,便于后续拦截。
建立第一污点池,将污点源函数的返回值的特征值、污点池索引值和污点源调用索引值组合为污点特征调用索引信息添加到第一污点池。
本实施例中,通过二级污点池设计。
L1 级污点池(即第一污点池):保存所有污点的特征值和其在L2级污点池(即第二污点池)的索引,包括用于指示第二污点池位置的污点池索引值和指示污点源函数在第二污点池位置的污点源调用索引值。
L2 级污点池(即第二污点池):建立方式,每个请求对应建立一个L2级污点池,存储请求相关污点的详细信息和上下文信息(污点数据)。
本实施例中,对于污点源,将其产生的污点数据加入该请求相关的L2级污点池,并且将其特征值和L2级污点池的索引加入L1级污点池。污点数据是此次调用的上下文信息和调用污点源函数的详细信息,包括污点的详细信息和上下文信息,详细信息包括:污点数据类型、污点函数名称、参数、返回值。上下文信息包括对应请求的上下文信息。
S103:通过预插桩探针监控污点传播函数,计算污点传播函数的参数的特征值,在第一污点池查询污点传播函数的参数的特征值是否存在;
本实施例中,计算污点传播函数的参数的特征值实际是对参数字符串的摘要信息提取唯一标识,可以是哈希值。也可以按如以下计算:特征值=字符串的内存地址偏移值/绝对值+字符串序列。
本实施例中,判断特征值是否在第一污点池存在,是通过在第一污点池中遍历查找,具体是hash表查询。查询存在代表匹配成功,特征值相等。
若存在,依次获取该污点传播函数的参数的特征值在第一污点池中对应的污点特征调用索引信息及该污点特征调用索引信息对应的污点池索引值,将污点传播函数的详细信息和第三上下文信息加入到该污点池索引值对应的第二污点池中,并生成用于指示污点传播函数在第二污点池位置的污点传播调用索引值;
本实施例中,污点传播函数的详细信息包括:污点数据类型为传播、污点传播函数名称、参数、返回值、堆栈跟踪信息;第三上下文信息包括:污点传播函数的参数的特征值在第一污点池查找到的特征值对应的污点特征调用索引信息。
本实施例中,污点特征调用索引信息可能是污点源函数产生的,也可能是污点传播函数产生的。
将该污点传播函数的返回值的特征值、该污点池索引值、该污点传播调用索引值组合为污点特征调用索引信息添加到第一污点池。
本实施例中,对于传播点,将传播点的输入(参数)计算特征值,并在L1级污点池查询其特征值,如果特征值不存在,则不进行其他操作;如果特征值存在,则将其返回值的特征值加入L1 级污点池,其L2级污点池的污点池索引值和刚查询到的特征值所属的索引相同。同时将其加入到该污点池索引值对应的L2级污点池,生成用于指示污点传播函数在第二污点池位置的污点传播调用索引值并添加到L1 级污点池用于后续污点传播的特征值查找。传播的污点数据是此次调用的上下文信息和调用污点传播函数的详细信息,包括:污点数据类型为传播,其上游标记(第三上下文信息)为传播点输入特征值在L1污点池查找到的特征值对应的污点索引信息。
S104:通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;
本实施例中,计算污点汇聚函数的参数的特征值实际是对参数字符串的摘要信息提取唯一标识,可以是哈希值,也可以按如以下计算:特征值=字符串的内存地址偏移值/绝对值+字符串序列。
本实施例中,判断特征值是否在第一污点池存在,是通过在第一污点池中遍历查找,具体是hash表查询。查询存在代表匹配成功,特征值相等。
如果存在,依次获取该污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及该污点特征调用索引信息对应的污点池索引值,将该污点汇聚函数的详细信息和第四上下文信息加入到该污点池索引值对应的第二污点池中,并生成用于指示该污点汇聚函数在第二污点池位置的污点汇聚调用索引值;
本实施例中,污点汇聚函数的详细信息包括:污点数据类型为汇聚,污点汇聚函数名称、参数、返回值、堆栈跟踪信息;第四上下文信息包括:污点汇聚函数的参数的特征值在第一污点池查找到的特征值对应的污点特征调用索引信息。
本实施例中,污点特征调用索引信息可能是污点源函数产生的也可能是污点传播函数产生的。
将该污点汇聚函数的参数的特征值、该污点池索引值、该污点汇聚调用索引值组合为污点特征调用索引信息添加到第一污点池;
本实施例中,对于汇聚点,其污点追踪算法和传播点类似,其污点类型为汇聚,上游标记(第四上下文信息)为汇聚点输入(参数)的特征值在L1级污点池中查找到特征值所对应的所有污点数据。
S105:根据依次获取该污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及该污点特征调用索引信息对应的污点池索引值;对该污点池索引值对应的第二污点池相关联的请求进行拦截。
本实施例中,对该污点池索引值对应的第二污点池相关联的请求进行拦截,包括:替换请求的url,执行重定向操作等。
作为一种可选的实施方式,通过预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在第一污点池查询污点汇聚函数的参数的特征值是否存在;如果存在,说明存在缺陷,可以实时对该污点汇聚函数执行return操作,结束污点汇聚函数执行。
作为一种可选的实施方式,在请求结束后,将该请求对应的污点池索引值对应的第二污点池中依次添加的污点源函数、污点传播函数、污点汇聚函数组成数据污染路径,以及污点源函数的详细信息和第二上下文信息、污点传播函数的详细信息和第三上下文信息、污点汇聚函数的详细信息和第四上下文信息,组成漏洞信息进行上报。
在上述实现过程中,该跨协程运行时漏洞分析方法,通过运行时编译预插桩探针,实现在程序运行时对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数的实时监控。再通过建立两级污点池,在第一污点池存储全局所有请求的污点的特征值(生命期内唯一的摘要信息)和其在第二污点池的索引,另外针对每个请求建立一个第二污点池,存储单个请求相关的污点的详细信息和上下文信息。通过对监控点函数在第一污点池的特征值查找,可以快速实现跨请求跨协程的污点追踪,同时通过两级污点池设计,能够满足更快速的大量查询需要,适应go语言多并发协程的情况。
实施例二:
请参阅图4,图4为本申请实施例提供的跨协程运行时漏洞分析装置的结构示意图,该装置400包括:
插桩模块410,用于在go源码编译阶段对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针;
第一监控模块420,用于在程序运行时通过所述预插桩探针监控请求相关的函数获取所有请求,分别获取所有请求中每个请求的第一上下文信息;
第二监控模块430,用于通过所述预插桩探针监控污点源函数,判断是否产生污点输入;若是,计算污点源函数的返回值的特征值,获取污点源函数的参数所对应请求的第一上下文信息;还用于建立与污点源函数的参数所对应请求相关联的第二污点池,第二污点池包括用于指示第二污点池位置的污点池索引值,将污点源函数的详细信息和第二上下文信息添加到所述第二污点池,并生成用于指示污点源函数在第二污点池位置的污点源调用索引值;还用于建立第一污点池,将污点源函数的返回值的特征值、污点池索引值和污点源调用索引值组合为污点特征调用索引信息添加到第一污点池;
第三监控模块440,用于通过所述预插桩探针监控污点传播函数,计算污点传播函数的参数的特征值,在所述第一污点池查询污点传播函数的参数的特征值是否存在;若存在,依次获取该污点传播函数的参数的特征值在第一污点池中对应的污点特征调用索引信息及该污点特征调用索引信息对应的污点池索引值,将污点传播函数的详细信息和第三上下文信息加入到该污点池索引值对应的第二污点池中,并生成用于指示污点传播函数在第二污点池位置的污点传播调用索引值; 还用于将该污点传播函数的返回值的特征值、该污点池索引值、该污点传播调用索引值组合为污点特征调用索引信息添加到第一污点池;
第四监控模块450,用于通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;如果存在,依次获取该污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及该污点特征调用索引信息对应的污点池索引值,将污点汇聚函数的详细信息和第四上下文信息加入到该污点池索引值对应的第二污点池中,并生成用于指示污点汇聚函数在第二污点池位置的污点汇聚调用索引值;还用于将该污点汇聚函数的参数的特征值、该污点池索引值、该污点汇聚调用索引值组合为污点特征调用索引信息添加到第一污点池;
拦截模块460,用于根据依次获取该污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及该污点特征调用索引信息对应的污点池索引值;对该污点池索引值对应的第二污点池相关联的请求进行拦截。
上述跨协程运行时漏洞分析装置的详细描述,请参见上述实施例中相关方法步骤的描述。
实施例三:
请参阅图5,图5为本申请实施例提供的一种电子设备的结构示意图,该电子设备500包括:存储器510和处理器520,存储器510和处理器520通过总线530连接,存储器510存储有计算机程序,处理器520读取并运行计算机程序时,以使电子设备500可执行上述的实施例中方法的全部或部分流程,以实现跨协程运行时漏洞分析。
应当理解是,该电子设备可以是个人电脑(Personal Computer,PC)、平板电脑、智能手机等具有逻辑计算功能的电子设备。
本申请实施例还提供了一种可读存储介质,可读取存储介质中存储有计算机程序,计算机程序在处理器上运行时,执行跨协程运行时漏洞分析方法中的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (14)
1.一种跨协程运行时漏洞分析方法,其特征在于,所述方法包括:
在go源码编译阶段,对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针;
在程序运行时,通过所述预插桩探针监控请求相关的函数,获取所有请求,并分别获取所有请求中每个请求的第一上下文信息;
通过所述预插桩探针监控污点源函数,判断是否产生污点输入;
若是,计算污点源函数的返回值的特征值,并获取污点源函数的参数所对应请求的第一上下文信息;
建立与污点源函数的参数所对应请求相关联的第二污点池,第二污点池包括用于指示第二污点池位置的污点池索引值,将污点源函数的详细信息和第二上下文信息添加到所述第二污点池,并生成用于指示污点源函数在第二污点池位置的污点源调用索引值;
建立第一污点池,将污点源函数的返回值的特征值、污点池索引值和污点源调用索引值组合为污点特征调用索引信息并添加到第一污点池;
通过所述预插桩探针监控污点传播函数,计算污点传播函数的参数的特征值,在所述第一污点池查询污点传播函数的参数的特征值是否存在;
若存在,依次获取污点传播函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,将污点传播函数的详细信息和第三上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点传播函数在第二污点池位置的污点传播调用索引值;
将污点传播函数的返回值的特征值、污点池索引值和污点传播调用索引值组合为污点特征调用索引信息并添加到第一污点池;
通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;
若存在,依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,将污点汇聚函数的详细信息和第四上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点汇聚函数在第二污点池位置的污点汇聚调用索引值;
将污点汇聚函数的参数的特征值、污点池索引值和污点汇聚调用索引值组合为污点特征调用索引信息并添加到第一污点池;
依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,对污点池索引值对应的第二污点池相关联的请求进行拦截。
2.根据权利要求1所述的方法,其特征在于,所述对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针,包括:
获取编译源码参数,通过go build命令的toolexec参数在编译源码参数中添加agent;
在go源码编译阶段,通过所述agent解析传入的编译命令和编译参数,获取到编译参数中的文件列表和包信息;对所述文件列表中的文件进行语法分析获取到token序列,通过token序列获取抽象语法树结构;
通过所述agent修改抽象语法树结构,在关键函数中***检测逻辑代码。
3.根据权利要求2所述的方法,其特征在于,所述关键函数包括:请求相关的函数、污点源函数、污点传播函数和污点汇聚函数。
4.根据权利要求1所述的方法,其特征在于,所述第一上下文信息包括:请求参数、url和请求方法。
5.根据权利要求1所述的方法,其特征在于,所述通过所述预插桩探针监控污点源函数,判断是否产生污点输入,包括:判断当前污点源函数的返回值是否不为空。
6.根据权利要求1所述的方法,其特征在于,所述污点源函数的详细信息包括:污点数据类型、污点源函数名称、参数、返回值、堆栈跟踪信息;
所述污点数据类型为源;
所述第二上下文信息包括:污点源函数的参数所对应请求的第一上下文信息。
7.根据权利要求1所述的方法,其特征在于,所述污点传播函数的详细信息包括:污点数据类型、污点传播函数名称、参数、返回值、堆栈跟踪信息;
所述污点数据类型为传播;
所述第三上下文信息包括:污点传播函数的参数的特征值在第一污点池查找到的特征值对应的污点特征调用索引信息。
8.根据权利要求1所述的方法,其特征在于,所述污点汇聚函数的详细信息包括:污点数据类型、污点汇聚函数名称、参数、返回值、堆栈跟踪信息;
所述污点数据类型为汇聚;
所述第四上下文信息包括:污点汇聚函数的参数的特征值在第一污点池查找到的特征值对应的污点特征调用索引信息。
9.根据权利要求1所述的方法,其特征在于,所述对污点池索引值对应的第二污点池相关联的请求进行拦截,包括:替换请求的url,执行重定向操作。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;
如果存在,对污点汇聚函数执行return操作,结束污点汇聚函数执行。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在请求结束后,将污点池索引值对应的第二污点池中依次添加的污点源函数、污点传播函数、污点汇聚函数组成数据污染路径,以及将污点源函数的详细信息和第二上下文信息、污点传播函数的详细信息和第三上下文信息、污点汇聚函数的详细信息和第四上下文信息组成漏洞信息进行上报。
12.一种跨协程运行时漏洞分析装置,其特征在于,包括:
插桩模块,用于在go源码编译阶段对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数预插桩探针;
第一监控模块,用于在程序运行时通过所述预插桩探针监控请求相关的函数获取所有请求,分别获取所有请求中每个请求的第一上下文信息;
第二监控模块,用于通过所述预插桩探针监控污点源函数,判断是否产生污点输入;若是,计算污点源函数的返回值的特征值,获取污点源函数的参数所对应请求的第一上下文信息;还用于建立与污点源函数的参数所对应请求相关联的第二污点池,第二污点池包括用于指示第二污点池位置的污点池索引值,将污点源函数的详细信息和第二上下文信息添加到所述第二污点池,并生成用于指示污点源函数在第二污点池位置的污点源调用索引值;还用于建立第一污点池,将污点源函数的返回值的特征值、污点池索引值和污点源调用索引值组合为污点特征调用索引信息添加到第一污点池;
第三监控模块,用于通过所述预插桩探针监控污点传播函数,计算污点传播函数的参数的特征值,在所述第一污点池查询污点传播函数的参数的特征值是否存在;若存在,依次获取污点传播函数的参数的特征值在第一污点池中对应的污点特征调用索引信息及污点特征调用索引信息对应的污点池索引值,将污点传播函数的详细信息和第三上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点传播函数在第二污点池位置的污点传播调用索引值; 还用于将污点传播函数的返回值的特征值、污点池索引值和污点传播调用索引值组合为污点特征调用索引信息添加到第一污点池;
第四监控模块,用于通过所述预插桩探针监控污点汇聚函数,计算污点汇聚函数的参数的特征值,在所述第一污点池查询污点汇聚函数的参数的特征值是否存在;如果存在,依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,将污点汇聚函数的详细信息和第四上下文信息加入到污点池索引值对应的第二污点池中,并生成用于指示污点汇聚函数在第二污点池位置的污点汇聚调用索引值;还用于将污点汇聚函数的参数的特征值、污点池索引值、污点汇聚调用索引值组合为污点特征调用索引信息添加到第一污点池;
拦截模块,用于依次获取污点汇聚函数的参数的特征值在第一污点池中对应的污点特征调用索引信息以及污点特征调用索引信息对应的污点池索引值,对污点池索引值对应的第二污点池相关联的请求进行拦截。
13.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器运行所述计算机程序时执行权利要求1至11中任一项所述的方法。
14.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310822917.9A CN116541855B (zh) | 2023-07-06 | 2023-07-06 | 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310822917.9A CN116541855B (zh) | 2023-07-06 | 2023-07-06 | 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116541855A true CN116541855A (zh) | 2023-08-04 |
CN116541855B CN116541855B (zh) | 2023-09-08 |
Family
ID=87456413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310822917.9A Active CN116541855B (zh) | 2023-07-06 | 2023-07-06 | 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116541855B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116842531A (zh) * | 2023-08-28 | 2023-10-03 | 北京安普诺信息技术有限公司 | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 |
CN117272331A (zh) * | 2023-11-23 | 2023-12-22 | 北京安普诺信息技术有限公司 | 基于代码疫苗的跨线程漏洞分析方法、装置、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120011493A1 (en) * | 2010-07-08 | 2012-01-12 | Microsoft Corporation | Binary code change vulnerability prioritization |
US20120317647A1 (en) * | 2011-05-26 | 2012-12-13 | Carnegie Mellon University | Automated Exploit Generation |
CN106709356A (zh) * | 2016-12-07 | 2017-05-24 | 西安电子科技大学 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
CN112328423A (zh) * | 2020-11-19 | 2021-02-05 | 腾讯科技(深圳)有限公司 | 一种搜索服务漏洞的处理方法、装置和存储介质 |
CN113176990A (zh) * | 2021-03-25 | 2021-07-27 | 中国人民解放军战略支援部队信息工程大学 | 一种支持数据间关联分析的污点分析框架及方法 |
CN113868136A (zh) * | 2021-09-28 | 2021-12-31 | 中南民族大学 | 一种基于Go语言可执行形式化语义的程序漏洞分析方法 |
CN114510358A (zh) * | 2022-01-19 | 2022-05-17 | 北京金山云网络技术有限公司 | 漏洞扫描方法、装置及分布式漏洞扫描*** |
CN114756872A (zh) * | 2022-04-28 | 2022-07-15 | 杭州孝道科技有限公司 | 基于go语言的注入式污点数据跟踪方法、装置和电子装置 |
-
2023
- 2023-07-06 CN CN202310822917.9A patent/CN116541855B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120011493A1 (en) * | 2010-07-08 | 2012-01-12 | Microsoft Corporation | Binary code change vulnerability prioritization |
US20120317647A1 (en) * | 2011-05-26 | 2012-12-13 | Carnegie Mellon University | Automated Exploit Generation |
CN106709356A (zh) * | 2016-12-07 | 2017-05-24 | 西安电子科技大学 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
CN112328423A (zh) * | 2020-11-19 | 2021-02-05 | 腾讯科技(深圳)有限公司 | 一种搜索服务漏洞的处理方法、装置和存储介质 |
CN113176990A (zh) * | 2021-03-25 | 2021-07-27 | 中国人民解放军战略支援部队信息工程大学 | 一种支持数据间关联分析的污点分析框架及方法 |
CN113868136A (zh) * | 2021-09-28 | 2021-12-31 | 中南民族大学 | 一种基于Go语言可执行形式化语义的程序漏洞分析方法 |
CN114510358A (zh) * | 2022-01-19 | 2022-05-17 | 北京金山云网络技术有限公司 | 漏洞扫描方法、装置及分布式漏洞扫描*** |
CN114756872A (zh) * | 2022-04-28 | 2022-07-15 | 杭州孝道科技有限公司 | 基于go语言的注入式污点数据跟踪方法、装置和电子装置 |
Non-Patent Citations (2)
Title |
---|
刘露平;方勇;刘亮;龙刚;: "基于动态插桩的缓冲区溢出漏洞检测技术研究", 信息安全与通信保密, no. 04 * |
高文莲;白凤凤;: "基于转移函数的移动网络海量数据隐私泄露检测技术", 科学技术与工程, no. 21 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116842531A (zh) * | 2023-08-28 | 2023-10-03 | 北京安普诺信息技术有限公司 | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 |
CN116842531B (zh) * | 2023-08-28 | 2023-11-03 | 北京安普诺信息技术有限公司 | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 |
CN117272331A (zh) * | 2023-11-23 | 2023-12-22 | 北京安普诺信息技术有限公司 | 基于代码疫苗的跨线程漏洞分析方法、装置、设备及介质 |
CN117272331B (zh) * | 2023-11-23 | 2024-02-02 | 北京安普诺信息技术有限公司 | 基于代码疫苗的跨线程漏洞分析方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116541855B (zh) | 2023-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116541855B (zh) | 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 | |
US11163670B2 (en) | Data records selection | |
US9720746B2 (en) | Analytics for application programming interfaces | |
CN109766345B (zh) | 元数据处理方法及装置、设备、可读存储介质 | |
JP2008546054A (ja) | イベントストリームからのイベントパターンの認識 | |
CN106293891B (zh) | 多维投资指标监督方法 | |
CN110532782B (zh) | 一种任务执行程序的检测方法、装置及存储介质 | |
US8938443B2 (en) | Runtime optimization of spatiotemporal events processing | |
Chen et al. | Invariants based failure diagnosis in distributed computing systems | |
CN112688966A (zh) | webshell检测方法、装置、介质和设备 | |
CN107579944B (zh) | 基于人工智能和MapReduce安全攻击预测方法 | |
JP6523799B2 (ja) | 情報分析システム、情報分析方法 | |
CN107920067B (zh) | 一种主动对象存储***上的入侵检测方法 | |
CN112434831A (zh) | 故障排查方法、装置、存储介质及计算机设备 | |
CN113918534A (zh) | 一种策略处理***及方法 | |
Masouleh et al. | Optimization of ETL process in data warehouse through a combination of parallelization and shared cache memory | |
US20120198281A1 (en) | Validation rules for process validation | |
CN116225622A (zh) | 基于Docker的PaaS应用参数模板的测试方法 | |
Punn et al. | Testing big data application | |
CN112507725B (zh) | 金融信息的静态发布方法、装置、设备及存储介质 | |
CN112181816A (zh) | 一种基于场景的接口测试方法、装置、计算机设备及介质 | |
US20200151080A1 (en) | Utilizing application performance management automatic discovery data for plugin priority | |
Papale et al. | SDD sentinel: a support tool for detecting and investigating electronic transaction frauds | |
CN110298669B (zh) | 一种基于图形结构的iOS代充风险控制*** | |
Hemani et al. | Foundations of a generic design for complex event processing |
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 |