CN116842531B - 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 - Google Patents
基于代码疫苗的漏洞实时验证方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116842531B CN116842531B CN202311084273.4A CN202311084273A CN116842531B CN 116842531 B CN116842531 B CN 116842531B CN 202311084273 A CN202311084273 A CN 202311084273A CN 116842531 B CN116842531 B CN 116842531B
- Authority
- CN
- China
- Prior art keywords
- stain
- function
- propagation
- vulnerability
- taint
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 111
- 238000012795 verification Methods 0.000 title claims abstract description 42
- 229960005486 vaccine Drugs 0.000 title claims abstract description 20
- 230000006870 function Effects 0.000 claims abstract description 242
- 239000000523 sample Substances 0.000 claims abstract description 72
- 238000012544 monitoring process Methods 0.000 claims abstract description 45
- 238000001514 detection method Methods 0.000 claims abstract description 22
- 230000002776 aggregation Effects 0.000 claims description 45
- 238000004220 aggregation Methods 0.000 claims description 45
- 238000010586 diagram Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 14
- 230000007480 spreading Effects 0.000 claims description 8
- 238000003892 spreading Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 claims description 7
- 238000004140 cleaning Methods 0.000 claims description 6
- 230000001502 supplementing effect Effects 0.000 claims description 6
- 238000005520 cutting process Methods 0.000 claims description 3
- 238000007781 pre-processing Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 28
- 238000012360 testing method Methods 0.000 abstract description 16
- 239000000243 solution Substances 0.000 description 5
- 230000008520 organization Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012038 vulnerability analysis Methods 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种基于代码疫苗的漏洞实时验证方法、装置、设备及介质,涉及代码安全领域,所述方法包括:对目标程序的关键函数预插桩探针,通过所述预插桩探针监控请求相关的函数并获取请求信息;建立与所述请求对应的污点池,通过所述预插桩探针监控污点源函数、污点传播函数、污点汇聚函数,判断是否存在漏洞检出,验证检出的漏洞是否真实有效,是则上报漏洞;否则忽略漏洞。通过运行时插桩检出漏洞,再建立污点池对漏洞路径进行实时追踪,通过污点池的树节点实时回溯漏洞,进而验证漏洞的有效性,提升漏洞检测精度,降低漏洞误报。同时不产生额外的测试数据,减少对用户的资源消耗,保证业务正常运行,而且实时验证过程对业务无影响。
Description
技术领域
本申请涉及代码安全领域,具体而言,涉及基于代码疫苗的漏洞实时验证方法、装置、设备及介质。
背景技术
为了确保应用程序在交付部署后能够安全稳定的提供服务,通常都会在交付前通过应用安全测试发现和修复其中的薄弱点和漏洞,以防止相关应用程序被黑客及非法人员利用而造成安全危害。而漏洞修复前需要对漏洞进行验证。漏洞验证的目的是降低资产风险,可以及时发现和修复***中的潜在漏洞,从而降低资产风险。这有助于保护组织的网络安全,并减少可能遭受攻击的可能性。可以帮助组织预防针对漏洞的攻击。通过主动验证漏洞并修复,可以减少***遭受攻击的风险,提高***的安全性。可以确保***在遭受攻击时的可靠性。通过及时发现和修复漏洞,可以避免***在关键时刻崩溃或被攻击者利用。可以帮助组织识别和修复***中的潜在漏洞,从而提高***的安全性。这有助于保护组织的网络、数据和用户资产。
现有的漏洞验证方案是通过对已知漏洞进行模拟攻击报文构造,通过模拟攻击测试对目标程序中可能潜藏的已知类型漏洞进行验证,实现服务端的漏洞主动验证。但这种验证方式需要替换用户输入的报文,携带攻击报文再次发起请求,实际上会产生额外的测试脏数据。另外会对用户的资源造成消耗和影响,影响业务的正常运行。而且实现的插桩探针需要将功能代码注入到业务代码,本身会对用户业务有侵入性,当通过模拟攻击测试验证漏洞时,会对业务造成二次影响。
发明内容
有鉴于此,本申请实施例的目的在于提供一种基于代码疫苗的漏洞实时验证方法及装置,通过运行时插桩检出漏洞,再建立污点池对漏洞路径进行实时追踪,通过污点池的树节点实时回溯漏洞,进而验证漏洞的有效性,提升漏洞检测精度,降低漏洞误报。同时不产生额外的测试数据,减少对用户的资源消耗,保证业务正常运行,而且实时验证过程对业务无影响。
本申请实施例第一方面提供了一种基于代码疫苗的实时漏洞验证方法,所述方法包括:对目标程序的关键函数预插桩探针,所述关键函数包括请求相关的函数、污点源函数、污点传播函数和污点汇聚函数;在目标程序运行时加载所述预插桩探针,在预插桩探针的初始化阶段建立污点分析线程池;目标程序接收请求,通过所述预插桩探针监控请求相关的函数并获取请求信息;所述请求信息包括请求参数、url和请求方法;建立与所述请求对应的污点池,在污点池中构造污点哈希表、污点传播结构,并补充获取到的请求信息;通过所述预插桩探针监控污点源函数,判断是否存在污点输入,若存在,在所述污点传播结构中建立对应的根节点;通过所述预插桩探针监控污点传播函数,判断是否存在污点传播,若存在,在所述污点传播结构中建立对应的传播子节点;通过所述预插桩探针监控污点汇聚函数,判断是否存在漏洞检出,若存在,在所述污点传播结构中建立对应的汇聚子节点;同时在所述污点分析线程池新建分析任务,验证检出的漏洞是否真实有效,是则上报漏洞;否则忽略漏洞。
在上述实现过程中,该基于代码疫苗的实时漏洞验证方法,通过运行时插桩监控关键函数检出漏洞,通过污点池回溯污点传播过程的节点树结构,提供污点分析相关的验证数据,再通过污点分析线程池污点池实时对检出的漏洞进行分析,进而验证漏洞的真实有效性,提升漏洞检测精度的同时降低漏洞误报,且不产生传统验证不可避免的额外测试数据,减少对用户的资源消耗,保证业务正常运行,实时验证过程对业务无影响。
可选的,所述在所述污点传播结构中建立对应的根节点,包括:
在所述污点传播结构中建立与污点源函数相关联的根节点,并记录对应的根节点信息;
将污点源函数的参数的哈希值记录到所述污点哈希表中。
可选的,所述通过所述预插桩探针监控污点传播函数,判断是否存在污点传播,若存在,在所述污点传播结构中建立对应的传播子节点,包括:
通过所述预插桩探针监控污点传播函数,在所述污点哈希表中查找污点传播函数的输入参数的哈希值是否存在;若存在,判断存在污点传播;
在所述污点传播结构中建立与污点传播函数相关联的传播子节点,并记录对应的传播子节点信息;所述传播子节点建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点传播函数的输出参数的哈希值记录到所述污点哈希表中。
可选的,所述通过所述预插桩探针监控污点汇聚函数,判断是否存在漏洞检出,若存在,在所述污点传播结构中建立对应的汇聚子节点,包括:
通过所述预插桩探针监控污点汇聚函数,在所述污点哈希表中查找污点汇聚函数的输入参数的哈希值是否存在;若存在,判断存在漏洞检出;
在所述污点传播结构中建立与污点汇聚函数相关联的汇聚子节点,并记录对应的汇聚子节点信息;所述汇聚子节点建立在查找存在的哈希值对应的污点传播函数相关联的传播子节点下,或建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点汇聚函数的输入参数的哈希值记录到所述污点哈希表中。
可选的,所述哈希值的计算过程是:使用参数的内存地址作为第一哈希码,使用参数的内容计算第二哈希码,将第一哈希码先移位操作,再和第二哈希码进行或运算得到哈希值。
上述是为了避免在污点哈希表查找的过程中,可能会出现的哈希冲突,通过双重地址绑定解决该问题。
可选的,所述根节点信息包括污点源函数的详细信息,具体是:污点数据类型为源,污点源函数的名称,污点源函数的参数,堆栈跟踪信息;
所述根节点信息还包括污点源函数的参数对应请求的请求信息;
所述传播子节点信息包括污点传播函数的详细信息,具体是:污点数据类型为传播,污点传播函数的名称,污点传播函数的输入参数和输出参数,堆栈跟踪信息;
所述汇聚子节点信息包括污点汇聚函数的详细信息,具体是:污点数据类型为汇聚,污点汇聚函数的名称,污点汇聚函数的输入参数,堆栈跟踪信息;
所述汇聚子节点信息还包括污点汇聚函数对应的具体执行命令以及漏洞触发类型;其中,根据所述污点汇聚函数的名称确定漏洞触发类型。
可选的,所述验证检出的漏洞是否真实有效,包括:
获取漏洞检出后的污点传播结构;
将漏洞检出时的污点汇聚函数相关联的汇聚子节点作为初始节点进行深度优先搜索遍历所述污点传播结构得到污点传播树状结构图;
剪除污点传播树状结构图中的无用分支,所述无用分支是指污点传播树状结构图中的传播路径包括自定义清洁函数或不包括污点源函数;
获取污点传播树状结构图中汇聚子节点对应的汇聚子节点信息和根节点对应的根节点信息;
根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效。
可选的,所述漏洞触发类型为路径穿越漏洞,所述根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效,包括:
判断根节点相关联的污点源函数是否为path类;
若是,判断根节点相关联的污点源函数的参数是否为string类型,汇聚子节点相关联的污点汇聚函数的输入参数是否为string类型;
若是,判断汇聚子节点信息中是否存在穿越符号;
若是,判断污点源函数的参数结尾是否存在于污点汇聚函数的输入参数中;
若是,确定为路径穿越漏洞。
可选的,所述漏洞触发类型为XXE漏洞,所述根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效,包括:
获取***标识符和汇聚子节点信息中的堆栈跟踪信息;
判断根节点信息中的请求参数是否包含***标识符,若存在,继续判断文件内容是否包含***标识符;
若存在,判断汇聚子节点信息中的堆栈跟踪信息是否存在于预设白名单栈中;
若不存在,确定为XXE漏洞。
可选的,所述方法还包括:
通过所述预插桩探针持续监控污点汇聚函数,当判断存在漏洞检出时,在所述污点分析线程池持续新建队列分析任务,以持续实时验证检出的漏洞是否真实有效。
本申请实施例第二方面提供了一种基于代码疫苗的实时漏洞验证装置,包括:
插桩模块,用于对目标程序的关键函数预插桩探针,所述关键函数包括请求相关的函数、污点源函数、污点传播函数和污点汇聚函数;
预处理模块,用于在目标程序运行时加载所述预插桩探针,在预插桩探针的初始化阶段建立污点分析线程池;
还用于目标程序接收请求,通过所述预插桩探针监控请求相关的函数并获取请求信息;
还用于建立与所述请求对应的污点池,在污点池中构造污点哈希表、污点传播结构,并补充获取到的请求信息;
第一监控模块,用于通过所述预插桩探针监控污点源函数,判断是否存在污点输入,若存在,在所述污点传播结构中建立对应的根节点;
第二监控模块,用于通过所述预插桩探针监控污点传播函数,判断是否存在污点传播,若存在,在所述污点传播结构中建立对应的传播子节点;
第三监控模块,用于通过所述预插桩探针监控污点汇聚函数,判断是否存在漏洞检出,若存在,在所述污点传播结构中建立对应的汇聚子节点;同时在所述污点分析线程池新建分析任务,验证检出的漏洞是否真实有效,是则上报漏洞;否则忽略漏洞。
本申请实施例第三方面提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器运行所述计算机程序时执行本申请实施例第一方面中的任一实现方式的步骤。
本申请实施例第四方面提供了一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序在处理器上运行时执行本申请实施例第一方面中的任一实现方式的步骤。
本申请实施例第五方面提供了一种计算机程序产品,所述计算机程序产品在计算机上运行时,执行如第一方面中的任一实现方式的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
通过运行时插桩实现在程序运行时对请求相关的函数、污点源函数、污点传播函数和污点汇聚函数的实时监控并检出漏洞,通过建立污点池回溯污点传播过程的节点树结构,提供污点分析相关的验证数据,再通过污点分析线程池污点池实时对检出的漏洞进行分析,进而验证漏洞的真实有效性,且不产生传统验证不可避免的额外测试数据,减少对用户的资源消耗,保证业务正常运行,实时验证过程对业务无影响。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种基于代码疫苗的实时漏洞验证方法的漏洞检出过程示意图;
图2为本申请实施例提供的一种基于代码疫苗的实时漏洞验证方法的漏洞验证过程示意图;
图3为本申请实施例提供的一种基于代码疫苗的实时漏洞验证方法的污点传播结构示意图;
图4为本申请实施例提供的一种基于代码疫苗的实时漏洞验证方法的路径穿越漏洞验证过程示意图;
图5为本申请实施例提供的一种基于代码疫苗的实时漏洞验证方法的XXE漏洞验证过程示意图;
图6为本申请实施例提供的一种基于代码疫苗的实时漏洞验证装置的结构示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。显而易见地,下面所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请实施例的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
本公开的实施例的描述中技术术语“探针”,是指“插桩”的“探针”,其本质上是进行信息采集的代码片段,可以是赋值语句或采集覆盖信息的函数调用。在本公开的实施例的描述中技术术语“插桩”,又称“程序插桩”,是指在保证被测程序原有逻辑完整性的基础上在程序中***“探针”,通过对“探针”抛出的程序运行特征数据(即运行时数据)的分析,获得程序的控制流和数据流,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。其中的“探针”,根据插桩点、捕获数据需求等的不同,可以设计具有相应捕获功能的“探针”,获取所需的数据。在同一个被测程序中,根据不同的测试需要,可以包括仅插桩一个“探针”,也可以在其中多个不同的插桩点分别***“探针”。在一般的基于“插桩”的IAST灰盒测试中,其关键是插桩的“探针”;一般来说,这些“探针”是需要根据不同语言进行开发, 但是功能基本相同,主要包括:代码执行中的参数传递、数据库查询(如ODBC)、目录查询(如LDAP),文件***权限、监听内存中特定的值,识别受污染的输入、第三方库的使用、对外部应用程序和服务的调用等。
在本公开的实施例的描述中技术术语“目标程序”,是指在安全测试过程中被作为检测对象的计算机应用程序。对于计算机程序来说,安全漏洞是不可避免的。程序是由人来编程的,兼顾代码质量和开发效率,是不可能存在开发阶段就完全符合编程规范、没有漏洞和缺陷的大型应用程序的;尤其是那些满足诸多功能需求、有着复杂业务逻辑的基于B/S的Web应用程序,是不可避免地存在着漏洞和缺陷的。考虑到大多数的安全漏洞存在于应用程序中,为了减少被非法利用造成损害, 应用程序在上线部署前,一般要求其通过应用安全测试。这里的“目标程序”,主要是指安全测试过程中被测的Web应用程序。
在本公开的实施例的描述中技术术语“关键函数”,是指“目标程序”中那些在潜藏的漏洞被触发时异常执行的函数。对于目标程序中可能潜藏的各种不同类型的漏洞,对应其中的每一类型的漏洞,在目标程序中均包括至少一个与之对应的关键函数。“关键函数”是指相对于“漏洞触发类型”来说,“漏洞触发类型”可以是任何一种已知类型漏洞;在每次漏洞验证过程中,通常将一种已知类型漏洞作为当前漏洞验证检测的“漏洞触发类型”。
实施例一:
请参阅图1、图2,图1为本申请实施例提供的漏洞检出过程示意图。图2为本申请实施例提供的漏洞验证过程示意图。
其中,方法包括以下步骤:
S100:对目标程序的关键函数预插桩探针,所述关键函数包括请求相关的函数、污点源函数、污点传播函数和污点汇聚函数;在目标程序运行时加载所述预插桩探针,在预插桩探针的初始化阶段建立污点分析线程池。
本实施例中,预插桩探针是对以下函数/方法进行插桩,包括请求相关的函数/方法、sourse(污点源)点相关的函数/方法、propagate(传播)点相关的函数/方法以及sink(汇聚)点相关的函数/方法。
通过插桩请求相关的方法,获取请求信息(包括请求和响应),如请求参数、url和请求方法等,用于后续根据请求信息进行漏洞验证,也用于后续对请求的实时拦截处置。
另外还对预先确定好的目标程序的关键函数/方法列表进行插桩,目标函数/方法列表分为三类:source点、propagate点和sink点。
source点,对应污点源函数,是目标程序获取外界输入数据的方法,如Http请求处理的入口方法,Request对象获取外部参数的相关方法,Response对象设置返回数据的相关方法等。
具体如:request.getRequestParameter(string)。
propagate点,对应污点传播函数,是目标程序内用于处理数据的方法,如字符串操作(字符串拼接、字符串截取、字符串反转等)、Java集合类型的操作、Java IO操作(文件IO/网络IO)、加解密方法(Base64加解密、AES/DES加解密、RSA加解密等)等,具体如:String.substring(int,int)。
sink点,对应污点汇聚函数,是执行漏洞的方法或函数,如 SMTP操作方法、发送HTTP请求相关方法、XML解码相关方法、执行***命令的相关方法、执行LDAP查询相关的方法、执行XPATH查询相关的方法、文件操作相关的方法、JSON反序列化相关的方法等,
具体如:Runtime.exec(string)。
本实施例中,在目标程序运行时加载所述预插桩探针,在预插桩探针的初始化阶段建立污点分析线程池。
Java线程池是线程的集合。它的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。可以实现线程复用,控制最大并发数,管理线程。通过建立污点分析线程池在监控漏洞检出后实时进行验证分析。
S200:目标程序接收请求,通过预插桩探针监控请求相关的函数并获取请求信息;所述请求信息包括请求参数、url和请求方法。当请求过来,通过预插桩探针截取请求信息(包括请求和响应)。
S300:建立与所述请求对应的污点池,在污点池中构造污点哈希表、污点传播结构,并补充获取到的请求信息。
本实施例中,对过来的请求建立对应的污点池,污点池包括:哈希表、污点传播结构和过滤函数(如清洁函数和/或用户自定义函数),用户自定义函数是自定义的消除污点的函数。在污点传播阶段,污点标记的数据遇到了清洁函数,并被成功执行了过滤操作或其他安全操作,则会将该数据所携带的污点标记消除,并确认当前传播链路是安全的。
S400:通过预插桩探针监控污点源函数,判断是否存在污点输入,若存在,在污点传播结构中建立对应的根节点。包括:
在污点传播结构中建立与污点源函数相关联的根节点,并记录对应的根节点信息;
将污点源函数的参数的哈希值记录到所述污点哈希表中。
请参阅图3,图3为污点传播结构示意图。本实施例中,监控经过的污点源函数,在污点池建立根节点,根节点与每个污点源函数的参数对应,还包括根节点信息,对应污点源函数的详细信息,如污点数据类型、污点传播函数名称、输入参数、输出参数、堆栈跟踪信息,以及污点源参数对应的请求信息。将污点源函数的参数(输入参数/输出参数)的地址哈希填到污点哈希表中。由于污点源属于用户输入,在请求到达的时候标记请求的query,form,path,form-data,body等参数当做污点来源,也作为污点池传播的根节点。污点哈希表是为了确定后续传播点的出口和入口是否发生了污点传播, 比如判断函数的输入参数命中污点哈希表, 那么可以确定函数的输出参数也是一个污点片段, 这一段代码就被标记为一个有效的传播点。
S500:通过预插桩探针监控污点传播函数,判断是否存在污点传播,若存在,在污点传播结构中建立对应的传播子节点;包括:
通过预插桩探针监控污点传播函数,在污点哈希表中查找污点传播函数的输入参数的哈希值是否存在;若存在,判断存在污点传播;
在污点传播结构中建立与污点传播函数相关联的传播子节点,并记录对应的传播子节点信息;传播子节点建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点传播函数的输出参数的哈希值记录到所述污点哈希表中。
所述根节点信息包括污点源函数的详细信息,具体是:污点数据类型为源,污点源函数的名称,污点源函数的参数,堆栈跟踪信息;
所述根节点信息还包括污点源函数的参数对应请求的请求信息。
所述传播子节点信息包括污点传播函数的详细信息,具体是:污点数据类型为传播,污点传播函数的名称,污点传播函数的输入参数和输出参数,堆栈跟踪信息。
请参阅图3,本实施例中,监控经过的污点传播点函数,如字符串处理,序列化/反序列化函数,在污点哈希表查找对应的输入参数的哈希是否存在,若存在确定为传播点,建立根节点对应的子节点(传播子节点),并补充传播子节点信息,对应污点传播函数的详细信息,如污点数据类型为传播、污点传播函数名称、函数的输入参数和输出参数、堆栈跟踪信息。并将污点传播函数的输出参数填到污点哈希表。
S600:通过预插桩探针监控污点汇聚函数,判断是否存在漏洞检出,若存在,在污点传播结构中建立对应的汇聚子节点;同时在污点分析线程池新建分析任务,验证检出的漏洞是否真实有效,是则上报漏洞;否则忽略漏洞。
通过所述预插桩探针监控污点汇聚函数,在所述污点哈希表中查找污点汇聚函数的输入参数的哈希值是否存在;若存在,判断存在漏洞检出。
在所述污点传播结构中建立与污点汇聚函数相关联的汇聚子节点,并记录对应的汇聚子节点信息;所述汇聚子节点建立在查找存在的哈希值对应的污点传播函数相关联的传播子节点下,或建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点汇聚函数的输入参数的哈希值记录到所述污点哈希表中。
所述汇聚子节点信息包括污点汇聚函数的详细信息,具体是:污点数据类型为汇聚,污点汇聚函数的名称,污点汇聚函数的的输入参数,堆栈跟踪信息;
所述汇聚子节点信息还包括污点汇聚函数对应的具体执行命令以及漏洞触发类型;其中,根据所述污点汇聚函数的名称确定漏洞触发类型。
请参阅图3,本实施例中,监控经过的污点汇聚函数,如sql执行函数,在污点哈希表查找对应的输入参数哈希,如果存在,确定为汇聚点,建立对应的汇聚子节点,记录汇聚子节点信息,汇聚子节点信息包括对应污点汇聚函数的详细信息,如污点数据类型为汇聚、污点汇聚函数名称、污点汇聚函数的输入参数、堆栈跟踪信息。汇聚子节点信息还包括输入参数对应的污点哈希表,还包含汇聚点函数对应具体执行的命令,以及更完整的方法信息。
作为一种可选的实施方式,在污点哈希表查找到的对应的输入参数哈希是来源于根节点,确定为汇聚点,建立根节点对应的汇聚子节点。
作为一种可选的实施方式,在污点哈希表查找到的对应的输入参数哈希是来源于传播子节点,确定为汇聚点,建立传播子节点对应的汇聚子节点。
作为一种可选的实施方式,上述在污点哈希表查找的过程中,可能会出现哈希冲突,通过双重地址绑定解决该问题,使用对象(参数)的内存地址作为第一哈希码,根据对象(参数)的内容计算第二哈希码,将第一哈希码先移位操作,再和第二哈希码进行或运算得到最终哈希值并存储到污点哈希表,并用于后续查找。如方法使用对象的内存地址作为内存哈希码,方法根据对象的内容计算内容哈希码。内存哈希码先进行移位操作,再和内容哈希码进行或运算得到最终哈希值,避免哈希冲突。
漏洞检出后,验证检出的漏洞是否真实有效包括以下具体步骤,
S601:漏洞检出。
S602:在污点分析线程池放入一个新的漏洞分析任务。
S603:获取漏洞检出后的污点传播结构。
S604:将漏洞检出时的污点汇聚函数相关联的汇聚子节点作为初始节点进行深度优先搜索遍历所述污点传播结构得到污点传播树状结构图。
S605:剪除污点传播树状结构图中的无用分支,所述无用分支是指污点传播树状结构图中的传播路径包括自定义清洁函数或不包括污点源函数。
S606:获取污点传播树状结构图中汇聚子节点对应的汇聚子节点信息和根节点对应的根节点信息。
S607:根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则。
S608:根据对应的漏洞检测规则验证检出的漏洞是否真实有效。
本实施例中,通过预插桩探针持续监控污点汇聚函数,当每存在漏洞检出时,就在污点分析线程池新建一个队列漏洞分析任务,以持续实时验证检出的漏洞是否真实有效。通过建立污点分析线程池保证在监控漏洞检出后实时进行验证分析。
本实施例中,基于得到的被动漏洞检出结果获取相关漏洞信息,包括汇聚点的数据,污点传播结构,漏洞触发类型;汇聚点的数据包括汇聚子节点的函数信息及具体执行的命令,及更完整的方法信息。污点传播结构是根据当前汇聚子节点追溯来源,直到根节点,形成污点传播树状结构图。漏洞触发类型是根据汇聚点函数的名称确定,比如路径穿越,XXE等。
探针初始化阶段就建立污点分析线程池,将新的分析任务放进污点分析线程池;每触发到汇聚点(漏洞检出),都将对应的分析任务放进污点分析线程池。
从漏洞检出的汇聚点(污点汇聚函数)作为初始节点进行深度优先搜索遍历污点传播结构;遍历过程中剪除无用分支,无用的定义:传播路径上包括清洁函数或没有source点的,得到一颗干净正确的节点树(污点传播树状结构图)。找到该树中漏洞触发点(汇聚点,对应污点汇聚函数)和用户数据输入点(污点源,对应污点源函数)。获取漏洞触发点和用户数据输入点的真实数据,即包括污点汇聚函数的输入参数,污点源函数的参数,用户的输入数据(请求信息如请求参数、url和请求方法),即一切能够到服务器的数据。
本实施例中,主动验证漏洞的过程是为了提高精度,降低误报。根据漏洞触发类型选择对应的检测规则,漏洞触发类型包括常见的漏洞类型,如路径穿越、命令执行、SQL注入、XXE、SSRF等。判断触发漏洞的数据是否真实有效,并后续进行忽略/上报。
作为一种可选的实施方式,所述漏洞触发类型为路径穿越漏洞,
请参阅图4,图4路径穿越漏洞验证过程示意图。
S6081:漏洞触发类型为路径穿越漏洞,根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效,包括:
判断根节点相关联的污点源函数是否为path类;即判断节点树中的污点源函数是否为path类。
若是,判断根节点相关联的污点源函数的参数是否为string类型,汇聚子节点相关联的污点汇聚函数的输入参数是否为string类型;
若是,判断汇聚子节点信息中是否存在穿越符号;即判断sink数据是否带有../..(穿越符)等明显穿越数据标识。
若是,判断污点源函数的参数结尾是否存在于污点汇聚函数的输入参数中;即判断sink的参数(输入参数)是否以source的参数结尾,如定义文件名作为参数,文件名在执行过程中添加前后缀,需要判定到达触发sink的参数是否以source的参数为结尾。
若是,确定为路径穿越漏洞。
请参阅图5,图5为XXE漏洞验证过程示意图。
XXE漏洞全称XML External Entity Injection,即XML外部实体注入漏洞, XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部 文件,造成文件读取、命令执行、内网端口扫描、发起dos攻击等危害。
S6082:所述漏洞触发类型为XXE漏洞,所述根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效,包括:
获取***标识符和汇聚子节点信息中的堆栈跟踪信息;
分别获取SystemId和当前调用堆栈信息;在 XML中,SystemId是一个用于指定XML文档的***标识符(system identifier)的属性。它表示 XML 文档所在的位置或者引用的外部实体的位置。SystemId属性通常用于指定XML文档的 URL、文件路径或其他资源标识符。它可以是一个绝对路径或相对路径,也可以是一个统一资源标识符(UniformResourceIdentifier,URI)。SystemId的值可以被解析器用于定位和加载 XML 文档或相关的外部资源。SystemId被用于指定资源的位置或标识符,以便解析器能够正确地解析和处理XML文档。
判断根节点信息中的请求参数是否包含***标识符,若存在,继续判断文件内容是否包含***标识符;即判断请求参数存在SystemId (***标识),若存在判断文件内容是否存在SystemId。
若存在,判断汇聚子节点信息中的堆栈跟踪信息是否存在于预设白名单栈中;即同时判断当前调用堆栈信息是否存在白名单栈。
若不存在,确定为XXE漏洞。
实施例二:
请参阅图6,图6为本申请实施例提供的基于代码疫苗的实时漏洞验证装置的结构示意图,该装置600包括:
插桩模块610,用于对目标程序的关键函数预插桩探针,所述关键函数包括请求相关的函数、污点源函数、污点传播函数和污点汇聚函数;
预处理模块620,用于在目标程序运行时加载所述预插桩探针,在预插桩探针的初始化阶段建立污点分析线程池;
还用于目标程序接收请求,通过所述预插桩探针监控请求相关的函数并获取请求信息;
还用于建立与所述请求对应的污点池,在污点池中构造污点哈希表、污点传播结构,并补充获取到的请求信息;
第一监控模块630,用于通过所述预插桩探针监控污点源函数,判断是否存在污点输入,若存在,在所述污点传播结构中建立对应的根节点;
第二监控模块640,用于通过所述预插桩探针监控污点传播函数,判断是否存在污点传播,若存在,在所述污点传播结构中建立对应的传播子节点;
第三监控模块650,用于通过所述预插桩探针监控污点汇聚函数,判断是否存在漏洞检出,若存在,在所述污点传播结构中建立对应的汇聚子节点;同时在所述污点分析线程池新建分析任务,验证检出的漏洞是否真实有效,是则上报漏洞;否则忽略漏洞。
上述基于代码疫苗的实时漏洞验证装置的详细描述,请参见上述实施例中相关方法步骤的描述。
实施例三:
请参阅图7,图7为本申请实施例提供的一种电子设备的结构示意图,该电子设备700包括:存储器710和处理器720,存储器710和处理器720通过总线730连接,存储器710存储有计算机程序,处理器720读取并运行计算机程序时,以使电子设备700可执行上述的实施例中方法的全部或部分流程,以实现基于代码疫苗的实时漏洞验证。
应当理解是,该电子设备可以是个人电脑(Personal Computer,PC)、平板电脑、智能手机等具有逻辑计算功能的电子设备。
本申请实施例还提供了一种可读存储介质,可读取存储介质中存储有计算机程序,计算机程序在处理器上运行时,执行基于代码疫苗的实时漏洞验证方法中的步骤。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种基于代码疫苗的实时漏洞验证方法,其特征在于,所述方法包括:
对目标程序的关键函数预插桩探针,所述关键函数包括请求相关的函数、污点源函数、污点传播函数和污点汇聚函数;
在目标程序运行时加载所述预插桩探针,在预插桩探针的初始化阶段建立污点分析线程池;
目标程序接收请求,通过所述预插桩探针监控请求相关的函数并获取请求信息;所述请求信息包括请求参数、url和请求方法;
建立与所述请求对应的污点池,在污点池中构造污点哈希表、污点传播结构,并补充获取到的请求信息;
通过所述预插桩探针监控污点源函数,判断是否存在污点输入,若存在,在所述污点传播结构中建立对应的根节点,包括:
在所述污点传播结构中建立与污点源函数相关联的根节点,并记录对应的根节点信息;
将污点源函数的参数的哈希值记录到所述污点哈希表中;
通过所述预插桩探针监控污点传播函数,判断是否存在污点传播,若存在,在所述污点传播结构中建立对应的传播子节点,包括:
通过所述预插桩探针监控污点传播函数,在所述污点哈希表中查找污点传播函数的输入参数的哈希值是否存在;若存在,判断存在污点传播;
在所述污点传播结构中建立与污点传播函数相关联的传播子节点,并记录对应的传播子节点信息;所述传播子节点建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点传播函数的输出参数的哈希值记录到所述污点哈希表中;
通过所述预插桩探针监控污点汇聚函数,判断是否存在漏洞检出,若存在,在所述污点传播结构中建立对应的汇聚子节点,包括:
通过所述预插桩探针监控污点汇聚函数,在所述污点哈希表中查找污点汇聚函数的输入参数的哈希值是否存在;若存在,判断存在漏洞检出;
在所述污点传播结构中建立与污点汇聚函数相关联的汇聚子节点,并记录对应的汇聚子节点信息;所述汇聚子节点建立在查找存在的哈希值对应的污点传播函数相关联的传播子节点下,或建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点汇聚函数的输入参数的哈希值记录到所述污点哈希表中;
同时在所述污点分析线程池新建分析任务,验证检出的漏洞是否真实有效,是则上报漏洞;否则忽略漏洞。
2.根据权利要求1所述的方法,其特征在于,所述哈希值的计算过程是:使用参数的内存地址作为第一哈希码,使用参数的内容计算第二哈希码,将第一哈希码先移位操作,再和第二哈希码进行或运算得到哈希值。
3.根据权利要求1所述的方法,其特征在于,所述根节点信息包括污点源函数的详细信息,具体是:污点数据类型为源,污点源函数的名称,污点源函数的参数,堆栈跟踪信息;
所述根节点信息还包括污点源函数的参数对应请求的请求信息;
所述传播子节点信息包括污点传播函数的详细信息,具体是:污点数据类型为传播,污点传播函数的名称,污点传播函数的输入参数和输出参数,堆栈跟踪信息;
所述汇聚子节点信息包括污点汇聚函数的详细信息,具体是:污点数据类型为汇聚,污点汇聚函数的名称,污点汇聚函数的输入参数,堆栈跟踪信息;
所述汇聚子节点信息还包括污点汇聚函数对应的具体执行命令以及漏洞触发类型;其中,根据所述污点汇聚函数的名称确定漏洞触发类型。
4.根据权利要求3所述的方法,其特征在于,所述验证检出的漏洞是否真实有效,包括:
获取漏洞检出后的污点传播结构;
将漏洞检出时的污点汇聚函数相关联的汇聚子节点作为初始节点进行深度优先搜索遍历所述污点传播结构得到污点传播树状结构图;
剪除污点传播树状结构图中的无用分支,所述无用分支是指污点传播树状结构图中的传播路径包括自定义清洁函数或不包括污点源函数;
获取污点传播树状结构图中汇聚子节点对应的汇聚子节点信息和根节点对应的根节点信息;
根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效。
5.根据权利要求4所述的方法,其特征在于,所述漏洞触发类型为路径穿越漏洞,所述根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效,包括:
判断根节点相关联的污点源函数是否为path类;
若是,判断根节点相关联的污点源函数的参数是否为string类型,汇聚子节点相关联的污点汇聚函数的输入参数是否为string类型;
若是,判断汇聚子节点信息中是否存在穿越符号;
若是,判断污点源函数的参数结尾是否存在于污点汇聚函数的输入参数中;
若是,确定为路径穿越漏洞。
6.根据权利要求4所述的方法,其特征在于,所述漏洞触发类型为XXE漏洞,所述根据汇聚子节点信息中的漏洞触发类型选择对应的漏洞检测规则,验证检出的漏洞是否真实有效,包括:
获取***标识符和汇聚子节点信息中的堆栈跟踪信息;
判断根节点信息中的请求参数是否包含***标识符,若包含,继续判断文件内容是否包含***标识符;
若包含,判断汇聚子节点信息中的堆栈跟踪信息是否存在于预设白名单栈中;
若不存在,确定为XXE漏洞。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述预插桩探针持续监控污点汇聚函数,当判断存在漏洞检出时,在所述污点分析线程池持续新建队列分析任务,以持续实时验证检出的漏洞是否真实有效。
8.一种基于代码疫苗的实时漏洞验证装置,其特征在于,包括:
插桩模块,用于对目标程序的关键函数预插桩探针,所述关键函数包括请求相关的函数、污点源函数、污点传播函数和污点汇聚函数;
预处理模块,用于在目标程序运行时加载所述预插桩探针,在预插桩探针的初始化阶段建立污点分析线程池;
还用于目标程序接收请求,通过所述预插桩探针监控请求相关的函数并获取请求信息;
还用于建立与所述请求对应的污点池,在污点池中构造污点哈希表、污点传播结构,并补充获取到的请求信息;
第一监控模块,用于通过所述预插桩探针监控污点源函数,判断是否存在污点输入,若存在,在所述污点传播结构中建立对应的根节点,包括:
在所述污点传播结构中建立与污点源函数相关联的根节点,并记录对应的根节点信息;
将污点源函数的参数的哈希值记录到所述污点哈希表中;
第二监控模块,用于通过所述预插桩探针监控污点传播函数,判断是否存在污点传播,若存在,在所述污点传播结构中建立对应的传播子节点,包括:
通过所述预插桩探针监控污点传播函数,在所述污点哈希表中查找污点传播函数的输入参数的哈希值是否存在;若存在,判断存在污点传播;
在所述污点传播结构中建立与污点传播函数相关联的传播子节点,并记录对应的传播子节点信息;所述传播子节点建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点传播函数的输出参数的哈希值记录到所述污点哈希表中;
第三监控模块,用于通过所述预插桩探针监控污点汇聚函数,判断是否存在漏洞检出,若存在,在所述污点传播结构中建立对应的汇聚子节点,包括:
通过所述预插桩探针监控污点汇聚函数,在所述污点哈希表中查找污点汇聚函数的输入参数的哈希值是否存在;若存在,判断存在漏洞检出;
在所述污点传播结构中建立与污点汇聚函数相关联的汇聚子节点,并记录对应的汇聚子节点信息;所述汇聚子节点建立在查找存在的哈希值对应的污点传播函数相关联的传播子节点下,或建立在查找存在的哈希值对应的污点源函数相关联的根节点下;
将污点汇聚函数的输入参数的哈希值记录到所述污点哈希表中;
同时在所述污点分析线程池新建分析任务,验证检出的漏洞是否真实有效,是则上报漏洞;否则忽略漏洞。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器运行所述计算机程序时执行权利要求1至7中任一项所述的方法。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序在处理器上运行时执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311084273.4A CN116842531B (zh) | 2023-08-28 | 2023-08-28 | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311084273.4A CN116842531B (zh) | 2023-08-28 | 2023-08-28 | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116842531A CN116842531A (zh) | 2023-10-03 |
CN116842531B true CN116842531B (zh) | 2023-11-03 |
Family
ID=88162022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311084273.4A Active CN116842531B (zh) | 2023-08-28 | 2023-08-28 | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116842531B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117150514B (zh) * | 2023-10-30 | 2024-02-02 | 北京安普诺信息技术有限公司 | 基于代码疫苗iast探针的漏洞主动验证方法及装置 |
CN117272331B (zh) * | 2023-11-23 | 2024-02-02 | 北京安普诺信息技术有限公司 | 基于代码疫苗的跨线程漏洞分析方法、装置、设备及介质 |
CN117610009B (zh) * | 2023-11-23 | 2024-06-11 | 北京安普诺信息技术有限公司 | 基于代码疫苗rasp探针的跨线程漏洞修复方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
CN109462583A (zh) * | 2018-10-31 | 2019-03-12 | 南京邮电大学 | 一种基于静态和动态相结合的反射型漏洞检测方法 |
WO2021232279A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件泄露漏洞的检测方法、装置、电子设备及存储介质 |
CN116167058A (zh) * | 2023-04-23 | 2023-05-26 | 北京安普诺信息技术有限公司 | 一种基于代码疫苗的运行时漏洞分析方法及装置 |
CN116451228A (zh) * | 2023-04-23 | 2023-07-18 | 北京安普诺信息技术有限公司 | 动态污点追踪方法、装置及相关在线污点传播分析*** |
CN116541855A (zh) * | 2023-07-06 | 2023-08-04 | 北京大学 | 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 |
-
2023
- 2023-08-28 CN CN202311084273.4A patent/CN116842531B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
CN109462583A (zh) * | 2018-10-31 | 2019-03-12 | 南京邮电大学 | 一种基于静态和动态相结合的反射型漏洞检测方法 |
WO2021232279A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件泄露漏洞的检测方法、装置、电子设备及存储介质 |
CN116167058A (zh) * | 2023-04-23 | 2023-05-26 | 北京安普诺信息技术有限公司 | 一种基于代码疫苗的运行时漏洞分析方法及装置 |
CN116451228A (zh) * | 2023-04-23 | 2023-07-18 | 北京安普诺信息技术有限公司 | 动态污点追踪方法、装置及相关在线污点传播分析*** |
CN116541855A (zh) * | 2023-07-06 | 2023-08-04 | 北京大学 | 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
JavaScript优化编译执行模式下的动态污点分析技术;梁彬;龚伟刚;游伟;李赞;石文昌;;清华大学学报(自然科学版)(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116842531A (zh) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116842531B (zh) | 基于代码疫苗的漏洞实时验证方法、装置、设备及介质 | |
Fonseca et al. | Testing and comparing web vulnerability scanning tools for SQL injection and XSS attacks | |
US10057280B2 (en) | Methods and systems of detecting and analyzing correlated operations in a common storage | |
Gupta et al. | PHP-sensor: a prototype method to discover workflow violation and XSS vulnerabilities in PHP web applications | |
Fonseca et al. | Evaluation of web security mechanisms using vulnerability & attack injection | |
Wei et al. | Preventing SQL injection attacks in stored procedures | |
CN110266669A (zh) | 一种Java Web框架漏洞攻击通用检测与定位的方法及*** | |
Halfond et al. | Improving penetration testing through static and dynamic analysis | |
Antunes et al. | Penetration testing for web services | |
CN113868659B (zh) | 一种漏洞检测方法及*** | |
Alkhalaf et al. | Viewpoints: differential string analysis for discovering client-and server-side input validation inconsistencies | |
CN113158197B (zh) | 一种基于主动iast的sql注入漏洞检测方法、*** | |
Scalco et al. | On the feasibility of detecting injections in malicious npm packages | |
Yan et al. | Detection method of the second-order SQL injection in Web applications | |
KR101914874B1 (ko) | 연관 관계 분석 규칙 생성 방법, 이를 수행하기 위한 기록 매체, 연관 관계 분석 규칙을 이용한 내부 정보 유출 탐지 방법 및 장치 | |
Karuparthi et al. | Enhanced approach to detection of SQL injection attack | |
CN113868669A (zh) | 一种漏洞检测方法及*** | |
Appelt et al. | Assessing the impact of firewalls and database proxies on SQL injection testing | |
KR101464736B1 (ko) | 정보보호 관리 시스템 및 이를 통한 홈페이지 위변조 탐지 방법 | |
CN111885088A (zh) | 基于区块链的日志监测方法及装置 | |
Shahriar et al. | Early detection of SQL injection attacks | |
KR101860642B1 (ko) | 소스코드 변경 영향 평가를 이용한 불법 행위 감시 장치 및 그 방법 | |
Bozic et al. | Planning-based security testing of web applications | |
CN111241547B (zh) | 一种越权漏洞的检测方法、装置及*** | |
Deng et al. | {NAUTILUS}: Automated {RESTful}{API} Vulnerability Detection |
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 |