CN117556419A - 越权分析方法、装置、系统、计算机可读存储介质 - Google Patents

越权分析方法、装置、系统、计算机可读存储介质 Download PDF

Info

Publication number
CN117556419A
CN117556419A CN202210944122.0A CN202210944122A CN117556419A CN 117556419 A CN117556419 A CN 117556419A CN 202210944122 A CN202210944122 A CN 202210944122A CN 117556419 A CN117556419 A CN 117556419A
Authority
CN
China
Prior art keywords
resource
interface
user
determining
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
Application number
CN202210944122.0A
Other languages
English (en)
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co 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 Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202210944122.0A priority Critical patent/CN117556419A/zh
Publication of CN117556419A publication Critical patent/CN117556419A/zh
Pending legal-status Critical Current

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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

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

本发明提供了一种越权分析方法、装置、系统、计算机存储介质。在实施例中,方法应用于追踪分析系统,追踪分析系统用于和分布式系统交互,所述方法包括:将目标分布式应用的插桩源码部署到分布式系统;插桩源码为对目标分布式应用的源码中多个第一方法插桩后的源码;确定指示第一用户对第一资源攻击操作的第一测试请求;获取分布式系统响应第一测试请求所调用的多个第二方法各自对应的执行信息形成的第一调用链信息;至少基于执行信息中指示对应第二方法与其他方法的调用关系的第一信息,对第一调用链信息进行整合,确定具有调用关系的多个第二方法的执行信息形成的第二调用链信息;基于追踪后整合的第二调用链信息实现越权分析。

Description

越权分析方法、装置、系统、计算机可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种越权分析方法、装置、系统、计算机可读存储介质。
背景技术
目前随着计算机技术的发展、各种新技术的接踵而至再加上开发人员在开发时缺少安全意识,所以导致了各种各样的软件漏洞层出不穷,并且黑客会利用这些漏洞进行网络攻击、破坏整个网络环境的安全。
为了保证整个网络环境的安全、降低黑客攻击的威胁,需要在黑客利用这些漏洞之前,通过漏洞挖掘技术发现软件的安全漏洞。因此漏洞挖掘技术成为网络空间安全领域深受关注的领域。
目前,通过静态分析软件的源码,主要对源码的语法、语义进行分析,重点分析源码中可能存在问题的敏感函数,比如,未进行边界检查的函数、用户编写的输入函数和缓冲区操作函数等。
但是,上述方案有时会造成将一些正确代码被定位为缺陷的问题,导致误报率较高,不能较为准确的反映出软件的实际问题。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明实施例提供了一种越权分析方法、装置、系统、计算机可读存储介质,通过源码插桩完成基于业务逻辑的越权漏洞的检测,采集更多方法的执行信息,进而基于追踪到调用链信息对具有调用关系的多个方法进行整合,得到表示方法调用关系的调用链信息,辅助安全研究者更快速分析漏洞成因,能够快速发现越权漏洞,完成基于业务逻辑的越权漏洞的检测。
第一方面,本发明实施例提供了一种越权分析方法,应用于追踪分析系统,所述追踪分析系统用于和分布式系统交互,所述方法包括:将目标分布式应用的插桩源码部署到所述分布式系统;其中,所述插桩源码为对所述目标分布式应用的源码中多个第一方法插桩后的源码;确定第一测试请求,其中,所述第一测试请求指示了第一用户对第一资源的攻击操作,所述第一用户无权限操作第一资源;获取所述第一测试请求的第一调用链信息;其中,所述第一调用链信息指示了所述分布式系统在响应所述第一测试请求所调用的多个第二方法各自对应的执行信息,所述多个第二方法为所述多个第一方法中的多个方法,所述执行信息包括第一信息,所述第一信息指示了对应第二方法与其他方法的调用关系;至少基于所述执行信息中的第一信息,对所述第一调用链信息进行整合,确定多个第二调用链信息;其中,所述第二调用链信息指示了具有调用关系的多个第二方法的执行信息;基于所述多个第二调用链信息对所述第一测试请求进行风险分析。
本实施例中,通过源码插桩完成基于业务逻辑的越权漏洞的检测,采集更多方法的执行信息,进而基于追踪到第一调用链信息对具有调用关系的多个方法进行整合,得到表示方法调用关系的第二调用链信息,辅助安全研究者更快速分析漏洞成因,能够快速发现越权漏洞,完成基于业务逻辑的越权漏洞的检测。
在一种可能的实现方式中,所述基于所述多个第二调用链信息对所述第一测试请求进行风险分析,包括:对于所述多个第二调用链信息中的目标调用链信息,基于目标调用链信息确定目标调用栈,对预先设置的参考调用栈和所述目标调用栈进行匹配,确定调用栈匹配结果。
本实现方式中,通过与预先设置的调用栈的匹配情况,实现风险分析。
在一种可能的实现方式中,所述参考调用栈指示了多个栈帧和多个栈帧之间的先后顺序关系,所述对预先设置的参考调用栈和所述目标调用栈进行匹配,包括:在确定所述目标调用栈包括所述多个栈帧和多个栈帧之间的先后顺序关系,确定所述目标调用栈和所述参考调用栈匹配。
本实现方式中,基于调用栈的栈帧和栈帧之间的先后顺序关系实现调用栈的匹配,确保调用帧匹配结果的参考价值。
在一种可能的实现方式中,所述第一测试请求包括所述第一资源的第一资源标识,所述确定第一测试请求,包括:确定测试组;其中,所述测试组包括包括第一接口和第二接口,所述第一接口用于创建资源,所述第二接口用于对响应所述第一接口所创建的资源进行操作;基于所述第一接口和第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识;基于所述第二接口、第一用户的用户标识和所述第一资源标识,自动创建所述第一测试请求。
本实现方式中,考虑到资源标识是分布式系统在创建资源后分配的,而对已经创建的资源的后续操作依赖于资源标识,这里,通过针对一类资源的相关操作的接口汇集到一个测试组,体现资源的创建和创建后操作的流程,进一步以测试组为单位生成测试请求,确保测试过程依赖于实际情况,使得测试结果具有较高的参考价值。
在一种可能的实现方式中,所述确定测试组,包括:基于所述目标分布式应用的接口文档,确定多个接口和多个节点;其中,所述多个节点中每个节点表示一类资源的第一描述;确定所述多个节点和所述多个接口的关联关系;建立所述多个节点之间的关系实现接口关联,得到字典树;其中,所述字典树包括根节点和多个节点,从所述根节点到所述多个节点中任一节点所经过的节点表示了一类资源的第二描述;基于所述字典树中子树中每个节点所关联的接口,确定测试组;其中,所述子树中的根节点对应的接口中包括第一接口。
本实现方式中,通过资源的描述信息确定节点,并将具有相同的资源描述的接口关联到接口,之后,将可能归属于同一类资源的节点建立联系,实现接口关系,得到字典树;进一步的,以创建类的接口作为根节点对字典树进行剪枝,将不同节点关联的资源归并到测试组,得到的测试组可以较为准确的反映出对于资源的创建和创建后处理的流程。
在一种可能的实现方式中,所述测试组还包括第三接口,所述第三接口用于创建所述第一资源依赖的第二资源;所述方法还包括:基于所述第三接口和所述第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第二资源后分配的第二资源标识;所述基于所述第一接口和第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识,包括:基于所述第一接口、第二用户的用户标识和所述第二资源标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识。
本实现方式中,考虑资源依赖从而得到的测试请求更加符合实际情况,确保测试请求的参考价值。
在一种可能的实现方式中,所述基于所述第一接口和第二用户的用户标识,确定所述分布式系统在第二用户下创建第一资源后分配的第一资源标识,包括:基于所述第二用户的用户标识、第一资源和所述第一接口生成第一请求,确定所述分布式系统响应所述第一请求返回的返回信息;基于所述返回信息,确定所述分布式系统创建所述第一资源后分配的第一资源标识。
本实现方式中,基于真实的返回信息确保得到的资源标识的参考价值。
在一种可能的实现方式中,所述基于所述返回信息,确定所述分布式系统创建所述第一资源后分配的第一资源标识,包括:从所述测试组中确定所述第一接口的子接口;其中,所述子接口包括目标参数,所述第一接口不包括所述目标参数,所述目标参数指示了所述第一资源的资源标识;对所述返回信息和所述子接口进行匹配,确定匹配参数;基于所述匹配参数,从所述返回信息中确定所述第一资源的资源标识。
本实现方式中,基于真实的返回信息和接口的子接口的匹配,确保得到的资源标识的参考价值。
在一种可能的实现方式中,所述第二接口用于对响应所述第一接口所创建的资源进行删除操作,所述测试组还包括第四接口,所述第四接口用于对创建的第一资源进行删除操作之外的其他操作;所述方法还包括:基于所述第二接口、所述第二用户的用户标识和所述第一资源标识,确定删除请求;将所述删除请求发送到所述分布式系统,以使所述分布式系统删除已经创建的第一资源;基于所述第四接口、所述第二用户的用户标识和所述第一资源标识,确定第二测试请求;将所述第二测试请求发送到所述分布式系统。。
本实现方式中,在删除资源后继续资源的再操作,进一步检测风险。
在一种可能的实现方式中,所述攻击操作为创建,所述第一资源为计算资源、存储资源或网络资源。
第二方面,本发明实施例提供了一种越权分析装置,所述越权分析装置包括若干个模块,各个模块用于执行本发明实施例第一方面提供的数据处理方法中的各个步骤,关于模块的划分在此不做限制。该越权分析装置各个模块所执行的具体功能及达到的有益效果请参考本申请第一方面提供的越权分析方法的各个步骤的功能,在此不再赘述。
示例地,所述越权分析装置和分布式系统交互,所述越权分析装置包括:
部署模块,用于将目标分布式应用的插桩源码部署到所述分布式系统;其中,所述插桩源码为对所述目标分布式应用的源码中多个第一方法插桩后的源码;
请求确定模块,用于确定第一测试请求,其中,所述第一测试请求指示了第一用户对第一资源的攻击操作,所述第一用户无权限操作第一资源;
采集模块,用于获取所述第一测试请求的第一调用链信息;其中,所述第一调用链信息指示了所述分布式系统在响应所述第一测试请求所调用的多个第二方法各自对应的执行信息,所述多个第二方法为所述多个第一方法中的多个方法,所述执行信息包括第一信息,所述第一信息指示了对应第二方法与其他方法的调用关系;
整合模块,用于至少基于所述执行信息中的第一信息,对所述第一调用链信息进行整合,确定多个第二调用链信息;其中,所述第二调用链信息指示了具有调用关系的多个第二方法的执行信息;
分析模块,用于基于所述多个第二调用链信息对所述第一测试请求进行风险分析。
第三方面,本发明实施例提供了一种越权分析装置,包括:至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行第一方面中所提供的方法。
第四方面,本发明实施例提供了一种越权分析装置,其特征在于,装置运行计算机程序指令,以执行第一方面中所提供的方法。示例性的,该装置可以为芯片,或处理器。
在一个例子中,该装置可以包括处理器,该处理器可以与存储器耦合,读取存储器中的指令并根据该指令执行第一方面中所提供的方法。其中,该存储器可以集成在芯片或处理器中,也可以独立于芯片或处理器之外。
第五方面,本发明实施例提供了一种越权分析系统,该系统可以包括追踪分析系统和分布式系统,其中,追踪分析系统用于执行第一方面中所提供的方法。
第六方面,本发明实施例提供了一种越权分析系统,该系统可以包括越权分析装置和分布式系统,其中,越权分析装置用于执行第一方面中所提供的方法。
第七方面,本发明实施例提供了一种计算设备集群,包括:至少一个计算设备,每个计算设备包括处理器和存储器;至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使计算设备集群执行第一方面中所提供的方法。
第七方面,本发明实施例提供了一种计算机可读存储介质,包括计算机程序指令,当计算机程序指令由计算设备集群执行时,计算设备集群执行第一方面中所提供的方法。
第八方面,本发明实施例提供了一种包含指令的计算机程序产品,包括计算机程序指令,当计算机程序指令被计算设备集群运行时,使得计算设备集群执行第一方面中所提供的方法。
附图说明
图1是本发明实施例提供的一种越权分析系统的系统架构图;
图2是图1提供的一种越权分析系统的交互示意图;
图3是图1所示的越权分析系统的越权分析方案的示意图;
图4a是图3提供的安全漏洞模型的示意图一;
图4b是图3提供的安全漏洞模型的示意图二;
图4c是图3提供的字典树的示意图;
图5是本发明实施例提供的电子设备的结构示意图;
图6是图3提供的构建字典树的流程示意图;
图7是图3提供的第一种越权测试方案的流程示意图;
图8是图3提供的第二种越权测试方案的流程示意图;
图9是图3提供的风险分析方案的流程示意图;
图10是本发明实施例提供的一种越权分析方法的流程示意图;
图11是本发明实施例提供的一种越权分析装置的结构示意图;
图12是本发明实施例提供的一种计算设备的结构示意图;
图13是本发明实施例提供的一种计算设备集群的结构示意图;
图14是图13提供的一种计算设备集群的结构示意图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本发明实施例中的技术方案进行描述。
在本发明实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本发明实施例的描述中,术语“和/或”,仅仅是一种描述关联资源的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个终端是指两个或两个以上的终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
图1是本发明实施例提供的一种越权分析系统的系统架构图。如图1所示,越权分析系统包括分布式系统和追踪分析系统,追踪分析系统用于对目标分布式应用进行越权分析,目标分布式应用部署在分布式系统中。
其中,目标分布式应用可以理解为是指应用程序分布在不同电子设备上,通过的不同电子设备所形成的网络来共同完成一项任务。通常为服务端/客户端模式。换言之,目标分布式为服务端。需要指出,目标分布式应用中的目标不具有特殊含义。
具体实现时,分布式系统用于响应客户端的请求;具体地,对于客户端的一次请求,分布式系统在响应该请求的过程中,需要调用不同电子设备中的不同服务,每一次调用作为一个服务节点,然后将所有的服务节点连接为一个树状链条就产生了一个调用链。在实际应用中,一次请求具有一个唯一的trace id。具体来说,在一次请求中,会在分布式系统的最开始生成一个全局唯一的用于标识此次请求的trace id,这个trace id在这次请求调用过程中无论经过多少个节点都会保持不变,并且在随着每一层的调用不停的传递。最终,可以通过trace id将这一次请求在分布式系统中的每个服务节点全部串起来。另外,每一次调用的过程称为span,一般用span id来标识。在一次请求的过程中会调用不同的服务,每一次调用都会生成一个新的span id来记录。这样,就可以通过span id来定位当前请求在整个调用链中所处的位置,以及它的上、下游的服务节点分别是什么。举例来说,在一个请求的过程中,SpanA调用了SpanB,然后SpanB又调用了SpanC,每一次Span调用都会生成一个自己的span id,则调用链为SpanA id-SpanB id-SpanC id。
另外,目标分布式应用用于管理资源,实现对资源的各种操作。操作可以理解对资源的动作,可以为创建、查询、修改、删除等。
资源可以是能够通过网络访问到的信息,比如一个图片、音乐、一个XML(Extensible Markup Language,可扩展标记语言)格式、HTML(HyperText MarkupLanguage,超文本标记语言)格式或者JSON(JavaScript Object Notation,对象简谱)格式等网络上的一个实体,除了一些二进制的资源外普通的文本资源更多以JSON为载体、面向用户的一组数据(通常从数据库中查询而得到)。
示例地,资源可以为云资源,云资源可以是真实的物理资源,也可以是物理资源虚拟化后的虚拟资源;比如,云资源可以为虚拟机,云硬盘,带宽等。对应的,分布式应用可以为云资源管理应用,比如,OpenStack、VMware。这里,操作还可以为使用。
示例地,资源可以为生产原料等实际资源的虚拟化;对应的,分布式应用可以为生产工艺管理软件。假设用户在生产工艺管理软件上指示采购人员采购1000公斤辣椒,则1000公斤辣椒就是资源。
示例地,资源还可以为购买的商品的虚拟化,商品可以为日用百货、化妆品、水果、美食、小吃等;对应的,分布式应用可以为购物软件,比如淘宝、京东,还可以为生活服务软件,比如,美团、饿了吗。
为了实现目标分布式应用的越权分析,追踪分析系统和分布式系统通过网络进行通信。其中,网络可以为有线网络(Wired network)或无线网络(wireless network)。
示例地,有线网络可以为电缆网络、光纤网络、数字数据网(Digital DataNetwork,DDN)等。
示例地,无线网络可以为电信网络、内部网络、互联网、局域网络(Local AreaNetwork,LAN)、广域网络(Wide Area Network,WAN)、无线局域网络(Wireless Local AreaNetwork,WLAN)、城域网(Metropolitan Area Network,MAN)、公共交换电话网络(PublicService Telephone Network,PSTN)、蓝牙网络、紫蜂网络(ZigBee)、移动电话(GlobalSystem for Mobile Communications,GSM)、CDMA(Code Division Multiple Access)网络、CPRS(GeneralPacketRadioService)网络等或其任意组合。
可以理解的是,网络可使用任何已知的网络通信协议来实现不同客户端层和网关之间的通信,上述网络通信协议可以是各种有线或无线通信协议,诸如以太网、通用串行总线(universal serial bus,USB)、火线(firewire)、全球移动通讯系统(global systemfor mobile communications,GSM)、通用分组无线服务(general packet radio service,GPRS)、码分多址接入(code division multiple access,CDMA)、宽带码分多址(widebandcode division multiple access,WCDMA),时分码分多址(time-division code divisionmultiple access,TD-SCDMA)、长期演进(long term evolution,LTE)、新空口(new radio,NR)、蓝牙(bluetooth)、无线保真(wireless fidelity,Wi-Fi)等通信协议。
图2示出了追踪分析系统和分布式系统的交互过程。如图2所示,本发明实施例提供的追踪分析系统用于对目标分布式应用的源码中多个方法(为了便于描述和区别,称为第一方法)插桩后得到插桩源码,将目标分布式应用的插桩源码部署到分布式系统中;然后,构建表示攻击操作的测试请求,将测试请求发送到分布式系统,收集分布式系统响应测试请求调用插桩的多个方法(为了便于描述和区别,称为第二方法)各自的执行信息,得到调用链信息(为了便于描述和区别,称为全局调用链信息),基于第二方法的执行信息中与其他的第二方法的调用关系,对多个第二方法各自的执行信息进行整合,得到表示方法调用关系的调用链信息(为了便于描述和区别,称为局部调用链信息),每个局部调用链信息由具有调用关系的多个第二方法的执行信息形成;之后,基于局部调用链信息可以进行风险分析。本发明实施例通过源码插桩完成基于业务逻辑的越权漏洞的检测以及收集更多程序运行时数据,辅助安全研究者更快速分析漏洞成因,能够快速发现越权漏洞,完成基于业务逻辑的越权漏洞的检测。
这里,分布式系统和追踪分析系统之间的数据符合目标协议,即全局调用链信息符合目标协议,不符合目标协议的数据应当丢弃,确保采集的全局调用链信息的参考价值。示例地,目标协议可以为Thrift协议。值得注意的是,全局调用链信息为分布式追踪平台比如jaeger,对分布式系统的多个第二方法的执行信息整合后的信息;在实际应用中,分布式系统会和分布式追踪平台交互最终得到全局调用链信息。
这里,方法的执行信息至少包括调用时刻、方法名称、调用参数、返回值、调用上下文。这里,调用时刻指示可方法调用的时刻;调用参数指示了调用方法所需要的参数;调用上下文(CallContext)可以反映出调用关系,即哪些方法调用了本方法,本方法调用了哪些方法。
进一步地,调用上下文还包括trace id和span id,将trace id作为一个请求的标识,将span id作为一个服务节点的标识,对方法进行整合,即可得到一个测试请求调用的多个第二方法以及每个第二方法所属的服务节点,后续,可以对服务节点的局部调用链信息进行分析,进一步分析服务节点的风险。
具体地,局部调用链信息中包含的多个第二方法的具有链式调用关系,且最后调用的第二方法不再调用其他的第二方法。示例地,局部调用链信息包含方法a、方法b、方法c和方法d各自的执行信息,方法d不再调用其他的方法,方法a调用方法b,方法b调用方法c,方法3调用方法d。
假设方法a并行调用了方法b、方法c和方法d。则可以分为3个局部调用链信息,1个局部调用链信息用于说明方法a调用了方法b,另一个局部调用链信息用于说明方法a调用了方法c,再一个局部调用链信息用于说明方法a调用了方法d。另外,若方法a调用了方法b,方法b并行调用了方法c和方法d。则可以分为2个局部调用链信息,1个局部调用链信息用于说明方法a调用了方法b,方法b调用了方法c,另一个局部调用链信息用于说明说明方法a调用了方法b,方法b调用了方法d。
其中,插桩技术指在保证原有程序逻辑完整性的基础上,在程序中插入探针(用于信息采集的代码段),从而收集程序运行时的执行信息,也即上述方法的执行信息。
这里,插桩的方法结合实际需求确定,只要能够实现一个请求的调用链的整个链路的追踪即可。这里,方法可以为函数表示的方法,也可以为类的方法。可选地,值得注意的是,在对类的方法进行插桩时,可以对类进行插桩,实现对类中的每个方法的追踪。需要指出,由于源码中的方法非常多,因此只需要对关键的方法进行插桩皆可,提高效率。
下面对攻击操作和安全风险进行说明。
在一个例子中,资源可以为云资源。若攻击操作为创建,则安全风险可以为没有创建云资源的权限却创建了云资源,比如,用户A没有创建8G内存的权限,但是申请到了8G内存。
若攻击操作为使用,则安全风险在于一个用户越权使用其他用户的云资源;比如,用户A没有使用用户B创建的虚拟机b的权限,但是可以使用虚拟机b。
若攻击操作为查询,则安全风险在于一个用户越权查看其他用户的云资源,造成其他用户的信息泄露;比如,用户A没有查看用户B的云资源的权限,但是可以查看用户B的云资源。
若攻击操作为修改,则安全风险在于一个用户越权修改其他用户的云资源,造成其他用户的信息篡改;比如,用户A没有修改用户B的虚拟机b配置的权限,但是可以修改用户B的虚拟机b的配置参数,比如,将虚拟机b的内存修改为0,从而导致虚拟机b无法使用。
若攻击操作为删除,则安全风险在于一个用户越权删除其他用户的云资源,造成其他用户的信息篡改;比如,用户A没有删除用户B的虚拟机b的权限,但是可以删除用户B的虚拟机b。
若攻击操作为删除后再查询、使用或修改,则安全风险在于云资源管理软件无法拦截删除后的其他操作,可能会使得云资源管理软件崩溃。
在一个例子中,资源可以为生产原料等;对应的,目标分布式应用可以为生产工艺管理软件。攻击操作可以为查询、修改、删除,详细内容参见上文对云资源的描述,不再赘述。
在一个例子中,资源还可以为购买的商品,商品可以为日用百货、化妆品、水果、美食、小吃等;对应的,目标分布式应用可以为购物软件,比如淘宝、京东,还可以为生活服务软件,比如,美团、饿了吗。操作可以为创建、查询、修改、删除。攻击操作可以为查询、修改、删除,详细内容参见上文对云资源的描述,不再赘述。
值得注意的是,本发明实施例中的越权分析系统可以包括若干个模块,各个模块用于执行越权分析系统的一个或多个功能。这里,越权分析系统的功能至少包括确定插桩源码、部署插桩源码、构建风险测试用例、风险测试用例测试、跟踪信息收集、风险分析。关于功能和模块的划分在此不做限制。该越权分析系统各个模块所执行的具体功能及达到的有益效果请参考下文提供的越权风险分析方案,在此不再赘述。
示例地,追踪分析系统可以包括部署模块、用例生成模块、数据收集模块、风险分析模块。其中,部署模块,用于在分布式系统部署分布式应用的插桩源码。用例生成模块用于生成测试请求,并将测试请求发送给分布式系统。数据收集模块,用于采集分布式系统发送的跟踪信息并整合成测试请求的调用链信息。风险分析模块,用于基于调用链信息进行风险分析。
可以理解的是,本发明实施例中,用例生成模块、部署模块、数据收集模块、风险分析模块可以安装于同一电子设备上,也可以安装于不同的电子设备上。在一个例子中,本方案中涉及的电子设备可以为服务器、电脑等可用于分布式应用测试的硬件。
可以理解的是,本发明实施例中,当用例生成模块、部署模块、数据收集模块、风险分析模块安装于不同的电子设备上时,这些电子设备可以通过网络进行通信,以进行数据交互。
下文将详细描述通过图1所示的越权分析系统实现越权分析的具体实现细节。图3为本发明实施例提供的越权分析方案的示意图。如图3所示,本发明实施例提供的越权分析方案如下。
首先追踪分析系统确定目标分布式应用的接口文档、插桩源码和用户池。其中,这里接口文档用于描述目标分布式应用的客户端的请求。用户池由多个用户标识组成,通过用户标识可以访问资源。在具体实现时,可以通过目标分布式应用的客户端进行用户注册,得到分布式系统返回的用户标识,从而构建用户池。
接着,通过追踪分析系统将插桩源码部署到分布式系统中。
接着,用户可以通过追踪分析系统构建安全漏洞模型。该模型抽象一类已知安全漏洞,通常为用户根据先验知识构建而成,用于描述某一类的资源可能触发的安全风险。基于安全漏洞模型可以分析得到某一类资源的全生命周期下的操作流程(为了便于描述和区别,称为全操作流程)以及操作流程中可能会被攻击的操作(为了便于描述和区别,称为攻击操作)。进一步地,分析出可能存在安全风险的操作流程(为了便于描述和区别,称为攻击操作流程),图3示出了m个攻击操作流程,表示为攻击操作流程1、…、攻击操作流程m。攻击操作流程由资源的创建和若干个攻击操作形成。
示例地,定义资源A应该仅能由主体A操作,异常情况为:主体B可以操作资源A,造成横向越权。图4a是本发明实施例提供的安全漏洞模型的示意图一。如图4a所示,全操作流程为创建-操作A-操作B-操作C-销毁,攻击操作为操作A、操作B、操作C、销毁;则攻击操作流程可以为创建以及[操作A、操作B、操作C]中任一个或多个,或者,创建以及[操作A、操作B、操作C]中任一个或多个再加上销毁。
示例地,定义资源A应该仅能由主体A操作,异常情况为:主体A可以销毁资源A,在销毁资源A后再操作资源A。图4b是本发明实施例提供的安全漏洞模型的示意图二。如图4b所示,全操作流程为创建-操作A-操作B-操作C-销毁,攻击操作为操作A,操作B,操作C。则攻击操作流程可以为创建-销毁-[操作A、操作B、操作C]中任一个或多个。
接着,追踪分析系统对接口文档进行分析,得到N个接口,每个接口由接口名和该接口名的文档(用于描述该接口);进一步地,基于N个接口,对某一资源的全生命周期下的接口进行汇总,得到若干个测试组。每个测试组的处理过程相同,下面以一个测试组为例进行描述。其中,全生命周期用于描述一个资源从创建到销毁的每个可能的情况。
在一些可能的实现方式,追踪分析系统具体可通过如下方式确定测试组。
对接口文档进行分析,得到N个接口以及M个节点(用于描述资源,节点中具有参数),不同节点中的参数描述不同的资源;然后,对N个接口和M个节点进行关联后,考虑到不同接口可以实现对同一类的资源的操作,因此,可以建立多个节点之间的关系,对同一类资源的描述的节点进行关联,实现接口关联,得到字典树。在具体应用中,节点可以关联有接口,也可能没有关联接口,节点关联的接口中的文档包括节点中的参数。如图4c所示,字典树包括1个跟节点和12个节点,根节点和12个节点之间通过连接线连接,节点33具有参数33,关联接口组,接口组由n个接口名和n个接口名各自对应的文档组成,每个文档均包含参数33。其他的节点类同不再赘述。
最后,按照字典树中根节点到节点的顺序,对字典树中根节点之外的每个节点关联的接口名的文档进行扫描,对于当前扫描的节点,在确定该节点关联的接口用于资源创建时,确定字典树中该节点为根节点的子树,基于子树中每个节点关联的接口,确定测试组。
字典树中的子树表示以节点作为跟节点直接和间接连接的所有节点形成的一个树枝。图4c是本发明实施例提供的字典树的示意图。如图4c所示,节点21关联的接口名表示的接口为创建类接口,将节点21作为跟节点,将节点21直接连接的节点31和节点32,间接连接的节点41、节点42和节点43形成的树枝作为子树。
接着,追踪分析系统对于攻击操作流程1,从测试组中确定攻击操作流程1中的每个元素(比如,创建或攻击操作)所对应的接口,基于接口的文档,从而得到每个元素各自的请求模型;按照攻击操作流程表示的流程对请求模板进行排列,得到请求序列1。这里,请求模板,可以是用于生成请求的一系列的参数,以及,这些参数的来源,进一步,还可以设置请求次数,以及是否遍历用户池的所有用户标识等。
攻击操作流程2、…、攻击操作流程m的处理过程类型,不再赘述。在处理完成m个攻击操作流程后,可以得到请求序列1、…、请求序列m总共m个请求序列。每个请求序列的处理过程相同,本发明实施例以请求序列1的处理为例进行说明。
追踪分析系统按照请求序列1中的请求模板的顺序,基于用户池中的用户标识构建用于资源创建的测试请求,将测试请求发送到分布式应用中,得到测试请求的全局调用链信息,对全局调用链信息进行分析,可以得到资源标识;基于资源标识、用户池中的用户标识和攻击操作的请求模板,可以继续创建测试请求,并将测试请求发送到分布式系统中,进一步,得到测试请求的全局调用链信息,如此循环反复。
最后,追踪分析系统基于测试请求的全局调用链信息得到的多个局部调用链信息进行风险分析。考虑到调用栈可以反映出方法的调用关系,调用栈由多个栈帧组成,一个栈帧用于说明一个方法的调用情况;更为具体地,栈帧通常用于存放全局变量、局部变量、传递参数等方法有关的执行信息,方法的执行信息至少包括栈帧。因此,本发明实施例,追踪分析系统具体可通过调用栈实现风险分析,通过调用栈实现风险分析的实现方式如下。
测试人员根据经验预先设置多个调用栈(为了便于描述和区别,可以称为参考调用栈)。将局部调用链信息中的方法的执行信息(作为栈帧)按照方法调用关系排列得到调用栈(为了便于描述和区别,可以称为目标调用栈),对目标调用栈和预先设置的多个参考调用栈进行匹配,确定调用栈匹配结果,若匹配则认为存在风险。
这里,参考调用栈定义了实现某些任务的某些关键方法之间的关系,可以代表这个任务是否完成,比如数据库访问任务。通常参考调用栈用于指示多个栈帧,以及,多个栈帧的先后顺序关系。若目标调用栈包括参考调用栈的多个栈帧以及多个栈帧的先后顺序关系,则可认为目标调用栈和参考调用栈匹配。若目标调用栈包括参考调用栈的部分栈帧以及部分栈帧的先后顺序关系,则可认为目标调用栈和参考调用栈不匹配或部分匹配。
在具体实现时,追踪分析系统中可以包括软件(为了便于描述和区分,称为追踪分析软件)和用于实现软件功能的其他设备(为了便于描述和区别,可以称为服务端),该软件安装在一个电子设备上,具有用户交互界面,用户通过电子设备使用追踪分析软件提供的功能,与服务端交互实现目标分布式应用的风险分析。在一种可能的情况,追踪分析软件安装在电子设备上,用户通过电子设备访问追踪分析软件。根据另一种可能的情况,电子设备安装有浏览器,用户可以通过浏览器访问追踪分析软件;比如,在浏览器中输入网址从而访问追踪分析软件。
在实际应用中,用户在首次访问追踪分析软件时首先会进入追踪分析软件的登录页面,用户操作登录页面从而注册一个账号,手动设置一个账号密码,得到可以访问追踪分析软件的账号和账号密码;之后,用户在登录页面输入账号和账号密码,即可登录到追踪分析软件实现访问,使用追踪分析软件提供的各种服务。当然,用户可以通过账号和账号密码反复登录追踪分析软件。
在具体实现时,用户可以通过追踪分析软件上传插桩源码,以使服务端将插桩源码部署到分布式系统。
另外,用户还可以在追踪分析软件构建安全漏洞模型。
进一步,用户可以基于构建的安全漏洞模型,通过追踪分析软件构建该安全漏洞模型下的请求序列。将请求序列发送到分布式系统。
在一种可行的实现方式,用户可以通过追踪分析软件上传分布式应用的接口文档,服务端或追踪分析软件对该接口文档进行处理,追踪分析软件显示处理后的N个接口的文档的内容,由用户参考N个接口的文档构建请求序列。
在一种可行的实现方式,用户可以通过追踪分析软件上传分布式应用的接口文档,服务端或追踪分析软件对该接口文档进行处理,追踪分析软件显示处理后的若干个测试组,由用户构建每个测试组的请求序列。
在一种可行的实现方式,用户可以通过追踪分析软件上传分布式应用的接口文档,服务端或追踪分析软件对该接口文档进行处理,追踪分析软件显示处理后的N个接口名的文档的内容和多个节点,由用户通过追踪分析软件建立多个节点之间的连接关系,得到字典树。之后,追踪分析系统对字典树进行处理,得到若干个测试组。
进一步地,追踪分析软件还可以显示全局调用链信息,局部调用链信息,以及,每个局部调用链信息的调用栈匹配结果。值得注意的是,追踪分析软件可以具有追踪分析系统的全部功能,此时,不存在服务端。
接下来对上述追踪分析软件所在的电子设备进行介绍。如图5所示,该电子设备500包括:处理器501,存储器502、网络接口503和显示屏504。其中,处理器501,存储器502及网络接口503可通过总线或其他方式连接。本发明实施例中,处理器301是电子设备300的计算核心及控制核心。例如,处理器501可以对接收到的数据进行处理,实现不同的业务需求。存储器503(memory)用于存放程序和数据,例如存放追踪分析软件的程序,进一步地,处理器501执行追踪分析软件的程序。存储器503可能包含易失性存储器,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。网络接口503用于收发数据,例如,将处理器301处理后的数据发送至越权分析系统。显示屏504,显示图像。视频等,示例地,可以显示追踪分析软件提供的用户交互界面等。显示屏504包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organiclight emitting diode,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emittingdiodes,QLED)等。
可以理解的是,本发明实施例中的处理器至少包括中央处理单元(centralprocessing unit,CPU),还可以包括其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
另外,分布式系统由多个电子设备组成,每个电子设备的结构参见上述对电子设备300的描述,本发明实施例中,对于分布式系统中的电子设备,电子设备的存储器303用于存放上述分布式应用的插桩源码的部分程序(包含插桩的方法);处理器501执行存储的分布式应用的部分程序,采集插桩的方法执行过程中的信息作为追踪信息,之后,通过网络接口503将追踪信息发送到追踪分析系统。另外,处理器501执行存储的分布式应用的部分程序时,还会生成新的请求,通过网络接口503将该请求发送到分布式系统中的其他的电子设备。
下文将详细描述图3所示的构建测试组的具体过程。图6为本发明实施例提供的测试组构建的流程示意图。如图6所示,本发明实施例提供的构建测试组的过程如下。
步骤601、基于接口文档得到N个接口和M个节点。
其中,接口文档指示了M个接口名各自的文档。另外,为了便于测试人员分析,接口文档为规范化为的接口文档。规范化可以为OAS规划范(OpenAPI-Specification)。这里,接口的相关信息记录在接口文档中。
对于任意一个接口,该接口包括接口名和文档组成,文档用于描述接口,包括多个参数,这些参数至少包括请求参数、请求方法、接口名称、返回参数、接口地址、返回数据的格式等。需要指出,接口文档中的接口可以为API(Application Programming Interface,应用程序接口)。该API接口是符合REST标准的API。REST是Representational StateTransfer的缩写,它是由罗伊·菲尔丁(Roy Fielding)t提出的,是用来描述创建HTTP API的标准方法。
其中,接口地址用于访问网络上某一资源,能够唯一确定一个资源。通常为统一资源访问标志符(Universal Resource Identifier,URI)。URI包括统一资源定位符(uniformresource locator,URL)和统一资源名称(Uniform Resource Name,URN)。
值得注意的是,URI由多个参数组成,这些参数中包括path,表示访问资源的路径,用于描述资源。在一个例子中,path组成可以为/{version}/{resources}/{resource_id};其中,version表示接口的版本号,有些版本号放置在头信息中也可以,通过控制版本号有利于应用迭代,表示为v{n},n代表版本号,分为整型和浮点型;整型为大功能版本,如v1,v2,v3,浮点型为补充功能版本,如v1,1,v1,2,v2,1。resources表示资源。示例地,资源通常包含一个项目组的名称和资源的名称;resource_id表示资源标识,通过资源标识操作资源。
当然,有时候可能资源级别较大,其下还可细分很多子资源。在一个例子中,path组成可以为/{version}/{resources}/{resource_id}/{subresources}/{subresource_id}。其中,subresources表示子资源;subresource_id表示子资源标识,通过资源标识和子资源标识可以操作子资源。这里,子资源subresource和资源resources具有依赖关系,换言之,子资源不能没有资源而存在。
需要指出,path具有路径前缀prefix,path prefix可以理解为path中{xxx_id}前的描述,比如,v2/a/b/{b,ID},则V2/,/a,/b都是path prefix。值得注意的是,path prefix可以理解为资源的描述。
其中,请求方法可以为GET方法,POST方法,PUT方法,PATCH方法,DELETE方法。其中,GET用于查询相应的数据。POST方法用于创建资源。PUT方法用于存储之前资源。本质上来讲,PUT方法和POST方法极为相似,但它们之间有一个重要区别,PUT方法通常指定了资源的存放位置,而POST方法则没有,POST方法的数据存放位置由服务器自己决定。PATCH方法用于更新资源;DELETE方法用于删除资源。这里,上述请求方法仅仅作为示例,并不构成具体限定,在实际应用中,可以结合实际需要增加请求方法或减少请求方法。
这里,对于包含用于资源创建的请求方法(比如,上述POST方法,PUT方法)的接口(为了便于描述和区别,称为创建类接口),请求参数一般由用户标识和需要创建的资源的资源描述信息。对于用于对已经创建的资源操作的请求方法(比如,上述GET方法,PATCH方法,DELETE方法)的接口(为了便于描述和区别,称为操作类接口),请求参数除了用户标识,还需要资源标识,资源标识可以是一个,也可以是多个,多个资源标识指示的资源之间具有依赖关系。需要指出的是,本发明实施例中的分布式系统在创建资源后会给创建后的资源分配资源标识,在后续对该资源进行修改、查询、删除等操作时,需要使用该资源标识。
步骤602、对N个接口和M个节点进行关联。
这里,可以确定N个接口各自的文档中的路径前缀path prefix;然后,考虑到路径前缀path prefix描述了资源的共有特性,因此,基于路径前缀path prefix可以构建多个节点,通过不同的节点表示不同描述的资源;然后,将多个接口关联到多个节点上实现接口的归并。
步骤603、对M个节点进行关联,得到字典树。
这里,考虑到不同接口可以实现对同一类的资源的操作,因此,可以建立多个节点之间的关系,实现接口关联,得到字典树。
举例来说,假设字典树有4个节点,分别称为point1、point2、point3、point4,point1连接point2和point3,point3连接point4,point1为根节点,节点中的参数为/v1,point2、point3、point4为子节点,节点中的参数分别为/endpoints、/{account}/{container}、/{object},point1可以不具有接口,point2关联具有/endpoints的接口,point3关联具有/{account}/{container}的接口,point4关联具有/{object}的接口。
步骤604、对字典树进行剪枝,得到测试组。
最后,按照根节点到节点的顺序,对字典树中根节点之外的每个节点关联的接口中的文档进行扫描,对于当前扫描的节点,在确定该节点关联的接口为创建类接口时,确定字典树中该节点为根节点的子树,基于子树中每个节点关联的接口,确定测试组。
在一个例子中,节点关联的每个接口具有请求方法,当请求方法为put或post时,可以认为该接口为创建类接口。
在一个例子中,在接口的文档中的path组成为/{version}/{resources}/{resource_id}时,当接口A的文档中的路径path包含{resources},不包含{resource_id}时,可以认为该接口为创建类接口。假设上述point3包括一个创建类接口,则上述point3、point4关联的所有接口作为一个测试组。
在一个例子中,在接口A的文档中的path组成为/{version}/{resources}/{resource_id}/{subresources}/{subresource_id}时,当接口B的文档中的路径path中包括{subresources},不包含{subresource_id}这一参数时,可以认为接口B为创建类接口。
这里,考虑到具有相同路径前缀path prefix的接口可以认为属于同一种资源,测试组通常会包括针对某一类的资源的全生命周期的所有接口,表示为接口名和接口名的文档。这里,全生命周期指示了资源从创建到销毁的全过程。
需要指出,考虑到资源具有依赖关系,因此创建类接口之间可能存在依赖关系,为了更好的测试,具有依赖关系的创建类接口分别构建测试组。为了便于描述,将子树中所有节点关联的接口形成的组称为接口组,若在接口组中创建类接口不涉及依赖关系,将测试组直接作为接口组即可。若接口组的创建类接口涉及依赖关系,对于存在依赖关系的创建类接口中每个接口,确定该接口全生命周期中的所有接口作为测试组,另外,若该接口依赖其他的接口,也需要将该接口所依赖的其他接口加入测试组。在实际应用中,测试组包括创建类接口和操作类接口。
在一个例子中,接口组包括创建类接口A的文档的路径path包括/{resource},创建类接口B的文档的路径path包括/{resource}/{resource-id}/{sub-resource},这里,创建类接口A和创建类接口B中的{resource}相同,则创建类接口A和创建类接口B具有依赖关系,创建类接口A和创建类接口B各自对应一个测试组,创建类接口B对应的测试组包括创建类接口A和创建类接口B。
另外,对于测试组来说,创建类接口和操作类接口之间具有依赖关系,即操作类接口依赖创建类接口而存在。
比如,创建类接口A的路径path包括/{resource}/,操作类接口B的路径path包括/{resource}/{resource-id},可以认为创建类接口A和操作类接口B具有依赖关系,操作类接口B是创建类接口A的子接口。
再比如,创建类接口A的路径path包括/{resource}/{resource-id}/{sub-resource},操作类接口B的路径path包括/{resource}/{resource-id}/{sub-resource}/{sub-resource-id},则创建类接口A和操作类接口B具有依赖关系,可以认为操作类接口B是创建类接口A的子接口。
下文将详细描述图3所示的越权测试方案的具体过程,越权测试方案的执行主体为上述追踪分析系统。通过2种越权测试方案对图3提供的越权测试方案进行描述。下文描述的两种越权测试方案仅仅作为示例并不构成具体限定,具体可结合实际需求进行适应性的改变。
首先,介绍第一种越权测试方案。
图7为本发明实施例提供的第一种越权测试方案的流程示意图。这里,第一种越权测试方案适用于代码一致性较差的目标分布式应用,换言之,目标分布式应用的源码中不同地方对同一数据的表述具有差异。如图7所示,本发明实施例提供的第一种越权测试方案包括如下步骤。
步骤701、将目标分布式应用的插桩源码部署在分布式系统上。
在一种可行的实现方式,在Dockerfile文件中编写配置目标分布式应用的第三方依赖库、语言环境以及通过全链路插桩后的源码构建镜像的语句,得到Dockerfile配置文件。通过编写好的Dockerfile配置文件,使用Docker构建全链路跟踪插桩后的目标分布式应用镜像,在分布式系统中部署目标分布式应用镜像。其中,Dockerfile是用于构建docker镜像的文件。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。
步骤702、在目标分布式应用上注册多个用户,获取分布式系统反馈多个用户标识,得到用户池。
在实际实现时,在目标分布式应用的客户端上注册多个用户,得到分布式系统反馈的用户标识,得到用户池。用户标识通常为请求令牌。在实际应用中,用户可以访问该目标分布式应用的客户端,创建用户账号设置登录密码,得到请求令牌token。其中,token是目标分布式应用生成的一串字符串,以作为用户请求的一个令牌,当第一次登录后,目标分布式应用便生成一个token便将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户账号和密码。显然的,不同用户的token不同。
上述请求令牌仅仅作为用户标识的一种示例,本发明实施例并不意图限制用户标识的内容,具体可结合实际需求确定。
步骤703、基于目标分布式应用的接口文档,确定若干个测试组,测试组表示针对某一类资源的全生命周期的接口的集合。
详细内容参见上文,不再赘述。
步骤704、从若干个测试组中选择一个未被选择的测试组作为目标测试组。
随机选择一个测试组作为目标测试组,每个测试组的处理方式相同,对每个测试组进行处理,从而可以全面的对所有的接口进行测试。
步骤705、确定针对目标测试组的攻击操作流程。
攻击操作流程包含创建和攻击操作。
步骤706、基于攻击操作流程和目标测试组中的文档,得到请求序列;其中,请求序列由目标测试组中每个接口各自的请求模板组成,表示了攻击操作流程调用的接口的顺序。
攻击操作流程中每个节点对应目标测试组中的若干个接口。举例来说,假设目标测试组中包括多个创建类接口,则攻击操作流程中的创建操作对应多个创建类接口。
具体地,按照攻击操作流程对攻击操作对应的接口进行排列,得到接口序列。
示例地,攻击操作流程可以为创建-查询-修改-删除-修改;假设,创建对应接口A和接口B,接口A是接口B的依赖接口,查询、修改、删除分别对应的接口C、接口D和接口E,则接口序列表示的接口顺序为接口A、接口B、接口C、接口D和接口E。
步骤707、将请求序列中位于首位的请求模板作为目标请求模板。
步骤708、基于目标请求模板和用户池中的目标用户标识,在分布式系统创建一个资源,得到分布式系统所分配的一个资源标识,将该资源标识作为当前传递值。
根据一种可行的实现方式,对于目标请求模板,基于用户标识和该目标请求模板生成请求(为了便于描述和区别,称为资源创建请求),将资源创建请求发送给分布式系统,接收分布式系统发送的返回信息,对返回信息和目标请求模板对应的接口(为了便于描述和区别,称为目标接口)的子接口的path进行参数匹配,确定匹配参数,从返回信息确定匹配参数的参数值作为资源标识。
具体可通过如下实现方式确定目标接口的子接口。
在具体实现时,可以对目标测试组与自身进行笛卡尔积得到多个有序对,对有序对中两个接口的文档中的path进行依赖关系运算,运算结果为是的,可以确定该有序对的依赖关系为两个接口中的一个接口是另一个接口的子接口;进一步,得到目标测试组中每个接口是否具有子接口,如果有,确定若干个子接口,从而得到目标接口的若干个子接口。
举例来说,假设目标测试组包括API-1、…、API-n,则目标测试组与自身进行笛卡尔积得到多个有序对如下:[API-1、API-1]、[API-1、API-2]、…、[API-1、API-n]、[API-2、API-1]、…、[API-2、API-n]、…、[API-n、API-n]。
具体可通过如下实现方式确定返回信息和目标接口的子接口的匹配。
将返回信息中的返回参数作为一个序列(为了便于描述和区别,称为第一序列),将子接口的文档中的path的参数作为另一个序列(为了便于描述和区别,称为第二序列),对第一序列和第二序列进行最大序列匹配,得到匹配参数。
需要指出,目标接口的子接口可能有多个,则可以确定该每个子接口和返回信息匹配得到的匹配参数;当多个子接口的匹配参数相同时,可以认为返回信息中该匹配参数的参数值为资源标识。否则,确定多个子接口分别匹配所得到的不同的匹配参数,进一步确定返回信息中这些匹配参数的参数值,评估参数值为资源标识的可能性,可以将可能性最高的参数值作为最终的资源标识,也可以将可能性较高的多个参数值分别作为资源标识。
步骤709、将请求序列中目标请求模板的下一模板作为测试请求模板。
步骤710、判断测试请求模板是否为创建类请求,如果是,执行步骤311,否则执行步骤312。
在实际应用中,若测试请求模板对应的接口是否为创建类接口,则测试请求模板是创建类请求。
步骤711、基于测试请求模板、目标用户标识、当前传递值,在分布式系统中已经创建的资源下创建一个子资源,得到分布式系统所分配的一个子资源标识,将该子资源标识作为当前传递值。
步骤712、基于测试请求模板、用户池中的目标用户标识之外的用户标识、当前传递值,生成若干个测试请求并发送至分布式系统。
这里,为了便于描述和区别,将目标用户标识之外的用户标识称为越权用户标识。
在具体实现时,可以穷尽所有的越权用户标识,每个越权用户标识均对应一个测试请求;具体地,对于测试请求模板,确定测试请求模板的请求参数,确定请求参数的当前传递值;对于每个越权用户标识,基于请求参数的当前传递值,得到该越权用户标识对应的测试请求。值得注意的是,测试请求模板的请求的数目可以人为设置,如果人为设置请求的数目为1个,则随机选择一个越权用户标识,构建该标识的测试请求即可。为了确保测试结果的准确性,优选遍历所有的越权用户标识。
应当理解的是,请求参数中当前传递值之外的参数值是默认参数值。默认参数值的是预先配置好的。
在一个例子中,请求参数的当前传递值可以为资源标识。
在一个例子中,请求参数的当前传递值可以为资源标识和子资源标识。
步骤713、检测是否存在未被选择的请求模板,如果是,将测试请求模板作为目标请求模板,执行步骤709。
这里,对于每个测试请求,在分布式系统执行该请求的过程中不断的调用方法产生执行信息,整合针对同一个测试请求的执行信息作为全局调用链信息。
值得注意的是,在实际应用中,每个测试组均会测试,每个测试组在测试过程中可以创建顺次创建多个资源,资源在创建后立即生成测试请求确保测试过程的参考价值。
本方案中,分析接口文档构建体现某一资源的全生命周期的测试组,并基于攻击操作流程和测试组中的文档,实现体现攻击操作流程的请求序列,按照请求序列的顺序和请求序列中的请求模板,依次生成测试请求并测试,确保测试的效率和测试结果的参考价值。
接着,介绍第二种越权测试方案。
图8为本发明实施例提供的第二种越权测试方案的流程示意图。这里,第二种全链路追踪方案适用于代码一致性较高的目标分布式应用,换言之,目标分布式应用中的源码中不同地方对同一数据的表述相同。如图8所示,本发明实施例提供的第二种越权测试方案包括如下步骤。
步骤801、将目标分布式应用的插桩源码部署在分布式系统上。
详细内容参见上文对步骤701的描述,不再赘述。
步骤802、在目标分布式应用上注册多个用户,获取分布式系统反馈多个用户标识,得到用户池。
详细内容参见上文对步骤402的描述,不再赘述。
步骤803、基于目标分布式应用的接口文档,确定若干个测试组,测试组表示针对某一类资源的全生命周期的接口的集合。
测试组的确定过程参见上文步骤403的描述,不再赘述。
步骤804、从若干个测试组中选择一个未被选择的测试组作为目标测试组。
步骤805、基于目标测试组中的若干个创建类接口和用户池,通过分布式系统为多个用户分别创建多个资源,得到资源池。
在目标测试组仅仅包括一个创建类接口时,可以按照上述步骤708创建多个资源得到多个资源标识,形成资源池。
在目标测试组包括具有依赖关系的多个创建类接口时,在确定子资源标识时,需要先获取子资源所依赖的资源的资源标识。具体地,可以按照上述步骤708和步骤711创建多个资源以及多个资源的子资源,得到多个资源标识和多个子资源标识,形成资源池。
这里,资源池中的资源标识、子资源标识表示对应不同的用户标识。这里,用户标识对应的用户可以访问对应的资源标识表示的资源,以及,资源标识和子资源标识表示的子资源。
步骤806、基于用户池和资源池,得到越权组合池。
越权组合池中包括大量的越权组合。
在一个例子中,越权组合为第一组合,第一组合由一个资源标识和一个用户标识组成,用户标识对应的用户无权操作资源标识对应的资源。
在一个例子中,越权组合为第二组合,第二组合由一个资源标识、一个子资源标识和一个用户标识组成,用户标识对应的用户无权操作资源标识对应的资源。
在一个例子中,越权组合为第三组合,第三组合由一个资源标识、一个子资源标识和一个用户标识组成,用户标识对应的用户有权操作资源标识对应的资源,无权操作子资源标识对应的子资源。
步骤807、基于攻击操作流程和目标测试组中的多个操作类接口进行请求编排,得到请求序列;其中,请求序列由多个操作类接口各自的请求模板组成,表示了攻击操作流程调用的接口的顺序。
具体地,基于攻击操作流程表示的攻击操作的流程,对测试组中的接口进行排序编排,得到请求序列。
步骤808、按照请求序列的顺序,从请求序列中选择一个未被选择过的请求模板作为目标请求模板。
步骤809、基于目标请求模板和越权组合池,确定若干个测试请求并发送至分布式系统。
在具体实现时,基于目标请求模板,从越权组合池中确定若干个越权组合(为了便于描述和区别,可以称为目标越权组合);对于每个目标越权组合,基于目标请求模板和越权组合池,确定该目标越权组合的测试请求。
在一个例子中,目标测试组包括一个创建类接口。目标接口的请求参数包括用户标识和资源标识。若干个目标越权组合可以为前述第一越权组合。
在一个例子中,目标测试组包括具有依赖关系的多个创建类接口。目标接口的请求参数包括用户标识、资源标识和子资源标识。若干个目标越权组合可以为前述第二越权组合和/或第三越权组合。
在实际应用,会穷尽所有可能的目标越权组合。
步骤810、检测是否存在未被选择的请求模板,如果是,执行步骤808。
本方案中,分析接口文档构建体现某一资源的全生命周期的测试组,并基于测试组中的创建类接口名的文档,构建资源池,进一步构建越权组合池;之后,基于攻击操作流程和测试组中的接口名的文档,实现体现攻击操作流程的请求序列,按照请求序列的顺序、请求序列中的请求模板结合越权组合池,构建大量的测试请求并测试,确保测试的效率。
下文将详细描述通过图3所示的风险分析的过程。图9为本发明实施例提供的风险分析方案的流程示意图。如图9所示,本发明实施例提供的风险分析方案的过程如下。
步骤901、获取基于测试请求的全局调用链信息,得到的多个局部调用链信息。
步骤902、确定待分析的服务节点的筛选信息,筛选信息包括服务名、时间范围、执行时长。
这里,都是测试人员确定的。
步骤903、基于筛选信息对调用信息进行筛选,确定待检测的若干个局部调用链信息。
值得注意的是,方法的执行信息中包括标识traceID和spanid,基于traceID和spanid可以对多个局部调用链信息进行索引,从而得到每个服务节点各自的若干个局部调用链信息。
步骤904、对于若干个局部调用链信息的每个,将该信息按照调用栈方式编排,得到目标调用栈。
步骤905、从若干个目标调用栈中选择一个未被选择过的目标调用栈。
步骤906、从预设多个参考调用栈中选择一个未被选择过的参考调用栈。
步骤907、对目标调用栈和参考调用栈进行匹配,确定调用栈匹配结果。
下面对目标调用栈和参考调用栈的匹配过程进行说明。
(1)确定目标调用栈的当前分析节点;其中,当前分析节点为目标调用栈中栈顶的栈帧。
(2)确定参考调用栈顶的当前参考节点;其中,当前参考节点为参考调用栈中栈顶的栈帧。
(3)判断当前分析节点是否为空,如果是,则执行(4);否则,执行(5)。
(4)判断当前参考节点是否为空,如果是,则执行(6);否则,执行(7)。
(5)判断当前分析节点和当前参考节点是否匹配,如是则执行(8),否则执行(9)。
(6)目标调用栈和参考调用栈匹配。
(7)目标调用栈和参考调用栈不匹配。
(8)确定节点匹配,弹出参考调用栈中栈顶的栈帧,执行(2)。
(9)确定节点不匹配,弹出目标调用栈中栈顶的栈帧,执行(1)。
这里,在经过上述目标调用栈和参考调用栈的匹配过程后,可以得到目标调用栈和参考调用栈是否匹配,以及,节点匹配的次数,也即匹配栈帧数目。
在一个例子中,调用栈匹配结果为是,说明实现了目标方法,对应的,目标方法的方法完成结果为是。
在一个例子中,调用栈匹配结果为否,说明没有完全实现目标方法,对应的,目标方法的方法完成结果为否。
在一个例子中,调用栈匹配结果可以为匹配栈帧数目,对应的,目标方法的方法完成结果可以为完成进度,该完成进度可以为匹配栈帧数目和参考调用栈的栈帧的数目的比值。
步骤908、判断是否存在未被选择的参考调用栈,如果是,执行步骤906,如果否,执行步骤909。
步骤909、判断是否存在未被选择过的目标调用栈,如果是,执行步骤905。
步骤910、汇总待检测的服务节点的若干个目标调用栈的匹配结果。
具体地,目标调用栈的匹配结果为否,表示不存在匹配的参考调用栈;或者,匹配结果为匹配的参考调用栈。
值得注意的是,在进行风险分析时,需要显示服务节点的若干个目标调用栈以及各自的匹配结果,从而便于研究员基于这些信息进行风险分析。
本方案中,分析调用序列中的每个多元组表示的方法之间的调用关系,得到若干个调用栈,基于调用栈和预先设置的调用栈的匹配结果,实现风险分析,在不匹配时,说明存在风险。
接下来,基于上文所描述的越权测试方案和风险分析方案,对本发明实施例提供的一种越权分析方法进行介绍。可以理解的是,该方法是上文所描述的越权测试方案和风险分析方案的另一种表达方式,两者是相结合的。该方法是基于上文所描述的越权测试方案和风险分析方案提出,该方法中的部分或全部内容可以参见上文对越权测试方案和风险分析方案的描述。
请参阅图10,图10是本发明实施例提供的一种越权分析方法的流程示意图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行;示例地,可以通过上述追踪分析系统实现。如图10所示,该越权分析方法包括:
步骤1001、将目标分布式应用的插桩源码部署到分布式系统;其中,插桩源码为对目标分布式应用的源码中多个第一方法插桩后的源码。
这里,第一方法为分布式应用的源码中插桩的方法,可以是函数,也可以是类方法,本发明实施例对此不做具体限定。分布式应用具有客户端和服务端,插桩源码本质上是对目标分布式应用的服务端的源码的插桩。
需要指出,第一方法仅仅是对分布式应用的源码中插桩的方法的命名,在实际应用,也可以称为其他的名称,比如,目标方法,再比如,关键方法。
关于插桩的具体内容,参见上文的相关描述,不再赘述。
步骤1002、确定第一测试请求;其中,第一测试请求指示了第一用户对第一资源的攻击操作,第一用户无权限操作第一资源。
这里,第一测试请求可以理解为目标分布式应用的客户端向目标分布式应用的服务端发送的请求。攻击操作指示了存在风险的操作,比如,可以为创建、修改、删除、查询等,具体可结合实际需求确定。
在每个用户的资源具有配额时,即资源的总量有限制时,此时是不能创建额外的资源的,比如,用户的内存配额为4G,不应该申请到8G的内存资源。这种情况通常出现在云资源的场景,在申请云资源这一过程中可能存在风险,此时攻击操作为创建。
根据一种可行的实现方式,攻击操作可以为对已经创建的资源的操作,而对已经创建的资源的操作需要资源标识,即第一测试请求中包括资源标识(为了便于描述和区别,称为第一资源标识)。考虑到发起资源(为了便于描述和区别,称为第一资源)的攻击操作的用户(为了便于描述和区别,称为第一用户),与创建第一资源的用户(为了便于描述和区别,称为第二用户)不同时会存在安全风险。则具体可通过如下实现方式确定第一测试请求。
确定指示第一资源创建后操作的测试组(对应上文描述的测试组)。这里,测试组包括用于创建第一资源的第一接口,以及,对响应第一接口所创建第一资源进行操作的第二接口;这里,第二接口对资源的操作一般为攻击操作。可选地,测试组可通过如下方式确定:
基于目标分布式应用的接口文档,确定多个接口和多个节点;其中,多个节点中每个节点表示一类资源的第一描述;然后,确定多个节点和多个接口的关联关系;然后,建立多个节点之间的关系实现接口关联,得到字典树;其中,字典树包括根节点和多个节点,从根节点到多个节点中任一节点所经过的节点表示了一类资源的第二描述;最后,基于字典树中子树中每个节点所关联的接口,确定测试组;其中,子树中的根节点对应的接口中包括第一接口。
然后,基于第一接口和第一用户之外的第二用户的用户标识,确定分布式系统在第二用户下创建第一资源后分配的第一资源标识。考虑到第一资源标识是分布式系统分配的,是无法预先知晓的,因此需要基于分布式系统响应第一资源的创建请求的返回信息,确定第一资源标识。这里,第一资源的创建请求基于第二用户的用户标识、第一资源和第一接口生成;为了便于描述和区别称为第一请求。
考虑到第一接口不包含描述资源标识的参数,但是第一接口的子接口包含描述资源标识的参数,因此,对分布式系统响应第一资源的创建请求的返回信息和第一接口的子接口进行匹配,确定匹配参数;进一步,基于匹配参数,可以从返回信息中确定第一资源标识。
之后,基于第二接口、第一用户的用户标识和第一资源标识,自动创建第一测试请求,这里,第一测试请求指示了第一用户对第一资源的攻击操作,但是第一用户没有权限操作第一资源。
在一些可能的情况,第一资源依赖其他的资源(为了便于描述和区别,称为第二资源)而存在,则,第一资源对应上文描述的子资源。测试组包括子资源创建的第一接口和创建子资源依赖的资源的接口(为了便于描述和区别,称为第三接口)。另外,创建第一资源需要第二资源的资源标识(为了便于描述和区别,称为第二资源标识);换言之,需要基于第一接口、第二用户的用户标识和第二资源标识,确定分布式系统在第二用户下创建第一资源后分配的第一资源标识。这里,得到第二资源标识和第一资源标识的过程类似,区别仅仅在于接口不同;具体为:基于第三接口和第二用户的用户标识,确定分布式系统在第二用户下创建第二资源后分配的第二资源标识。
在一些可能的情况,第二接口用于对响应第一接口所创建的第一资源进行删除操作,在第一资源删除之后,若还需要对第一资源进行再操作,可能会造成系统奔溃,具有较高的风险。因此,还需要测试分布式系统是否存在崩溃的风险。则测试组还包括对创建后的第一资源进行删除操作之外的其他操作(比如,查询、修改)的接口(为了便于描述和区别,称为第四接口);另外,删除后再操作针对的是相同的用户,则测试过程还包括如下内容。
基于第二接口、第二用户的用户标识和第一资源标识,确定删除请求;然后,将删除请求发送到分布式系统,以使分布式系统删除已经创建的第一资源;然后,基于第四接口、第二用户的用户标识和第一资源标识,确定第二测试请求;之后,将第二测试请求发送到分布式系统,检测分布式系统是否存在风险。
关于上述描述的具体细节参见上文,不再赘述。
步骤1003、获取第一测试请求的第一调用链信息;其中,第一调用链信息指示了分布式系统在响应第一测试请求所调用的多个第二方法各自对应的执行信息,多个第二方法为多个第一方法中的多个方法,执行信息包括第一信息,第一信息指示了对应第二方法与其他方法的调用关系。
分布式系统在响应第一测试请求时,可能会调用所有的第一方法,也可以调用部分的第一方法。这里,为了便于描述和区别,将响应第一测试请求过程中调用的第一方法称为第二方法,第二方法可以有多个。
另外,为了便于采集和整合信息,可以采用多元组的方式采集方法的执行信息,从而便于执行信息的汇总分析。比如,多元组可以包括调用时刻、方法名称、调用参数、返回值、调用上下文。详细内容参见上文,不再赘述。
这里,将调用的每个第二方法的执行信息的集合称为第一调用链信息(对应上述全局调用链信息)。
步骤1004、至少基于执行信息中的第一信息,对调用链信息进行整合,确定多个第二调用链信息;其中,第二调用链信息指示了具有调用关系的多个第二方法的执行信息。
具体来说,第二方法的执行信息中具有描述方法的调用关系的信息(为了便于描述和区别,称为第一信息),第一信息说明了调用对应的第二方法的其他的第二方法以及对应的第二方法调用的其他的第二方法。
因此,可以基于第二方法的第一信息,对多个第二方法的执行信息进行整合,得到第二调用链信息(对应上述局部调用链信息)。
进一步地,方法的执行信息中包括第一测试请求的标识traceID和调用的标识spanid,基于traceID和spanid对多个第二方法各自的执行信息进行分组整合,可以得到每个服务节点各自的若干个第二调用链信息。
步骤1005、基于多个第二调用链信息对所述第一测试请求进行风险分析。
在进行风险分析的过程中,可以基于第二调用链信息进行预先设置的参考调用栈的匹配,在匹配时说明存在风险。
进一步地,第二调用链信息中每个方法的执行信息作为栈帧,按照方法之间的调用关系,可以得到调用栈(为了便于描述和区别,称为目标调用栈)。
调用栈可以分析方法的调用关系是否准确,进一步可以分析程序在执行过程中是否存在问题,从而实现风险分析。在实际应用,需要预先设置多个调用栈(为了便于描述和区别,称为参考调用栈),这些参考调用栈是研究员根据经验归纳总结出来的,可以反映真实的方法调用情况。其中,参考调用栈指示了多个栈帧和多个栈帧之间的先后顺序关系,这里的栈帧可以是基于实际需要设置的,通常是从方法的执行信息中选取的。在目标调用栈包括参考调用栈指示的多个栈帧和多个栈帧之间的先后顺序关系,即可认为目标调用栈和参考调用栈是匹配的。当目标调用栈存在匹配的参考调用栈时,说明目标调用栈成功完成了某一方法,具有风险。在实际应用中,目标调用栈会顺序和每个参考调用栈匹配,若匹配到参考调用栈,则匹配成功,若和每个参考调用栈均不匹配,则说明目标调用栈匹配失败。
由此,本方案中,通过源码插桩完成基于业务逻辑的越权漏洞的检测,采集更多方法的执行信息,进而基于追踪到调用链信息对具有调用关系的多个方法进行整合,得到表示方法调用关系的调用链信息,辅助安全研究者更快速分析漏洞成因,能够快速发现越权漏洞,完成基于业务逻辑的越权漏洞的检测。
接下来,基于上文所描述的一种越权分析方法,对一种越权分析装置进行描述。请参阅图11,图11本发明实施例提供的一种越权分析装置的结构示意图。如图11所示,该越权分析装置包括:
部署模块1101,用于将目标分布式应用的插桩源码部署到所述分布式系统;其中,所述插桩源码为对所述目标分布式应用的源码中多个第一方法插桩后的源码;
请求确定模块1102,用于确定第一测试请求,其中,所述第一测试请求指示了第一用户对第一资源的攻击操作,所述第一用户无权限操作第一资源;
采集模块1103,用于获取所述第一测试请求的第一调用链信息;其中,所述第一调用链信息指示了所述分布式系统在响应所述第一测试请求所调用的多个第二方法各自对应的执行信息,所述多个第二方法为所述多个第一方法中的多个方法,所述执行信息包括第一信息,所述第一信息指示了对应第二方法与其他方法的调用关系;
整合模块1104,用于至少基于所述执行信息中的第一信息,对所述第一调用链信息进行整合,确定多个第二调用链信息;其中,所述第二调用链信息指示了具有调用关系的多个第二方法的执行信息;
分析模块1105,用于基于所述多个第二调用链信息对所述第一测试请求进行风险分析。
该装置的有益效果参见越权分析方法,不再赘述。
根据一种可行的实现方式,所述分析模块1105,用于对于所述多个第二调用链信息中的目标调用链信息,基于目标调用链信息确定目标调用栈,对预先设置的参考调用栈和所述目标调用栈进行匹配,确定调用栈匹配结果。
根据一种可行的实现方式,所述参考调用栈指示了多个栈帧和多个栈帧之间的先后顺序关系,所述分析模块1105,用于在确定所述目标调用栈包括所述多个栈帧和多个栈帧之间的先后顺序关系,确定所述目标调用栈和所述参考调用栈匹配。
根据一种可行的实现方式,请求确定模块1102,包括:测试组确定单元、标识确定单元和请求确定单元;其中,
测试组确定单元,用于定测试组;其中,所述测试组包括包括第一接口和第二接口,所述第一接口用于创建资源,所述第二接口用于对响应所述第一接口所创建的资源进行操作;
标识确定单元,用于基于所述第一接口和第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识;
请求确定单元,用于基于所述第二接口、第一用户的用户标识和所述第一资源标识,自动创建所述第一测试请求。
根据一种可行的实现方式,测试组确定单元,包括:分析子单元、第一关联子单元、第二关联子单元、树分析子单元;其中,
分析子单元,用于基于所述目标分布式应用的接口文档,确定多个接口和多个节点;其中,所述多个节点中每个节点表示一类资源的第一描述;
第一关联子单元,用于确定所述多个节点和所述多个接口的关联关系;
第二关联子单元,用于建立所述多个节点之间的关系实现接口关联,得到字典树;其中,所述字典树包括根节点和多个节点,从所述根节点到所述多个节点中任一节点所经过的节点表示了一类资源的第二描述;
树分析子单元,用于基于所述字典树中子树中每个节点所关联的接口,确定测试组;其中,所述子树中的根节点对应的接口中包括第一接口。
根据一种可行的实现方式,所述测试组还包括第三接口,所述第三接口用于创建所述第一资源依赖的第二资源;所述标识确定单元,包括:第一标识确定子单元和第二标识确定子单元;其中,
第一标识确定子单元,用于于所述第三接口和所述第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第二资源后分配的第二资源标识;
第二标识确定子单元,用于基于所述第一接口、第二用户的用户标识和所述第二资源标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识。
根据一种可行的实现方式,所述标识确定单元,包括:返回信息分析子单元;其中,
返回信息分析子单元,用于基于所述第二用户的用户标识、第一资源和所述第一接口生成第一请求,确定所述分布式系统响应所述第一请求返回的返回信息;基于所述返回信息,确定所述分布式系统创建所述第一资源后分配的第一资源标识。
根据一种可行的实现方式,返回信息分析子单元用于执行如下步骤:
从所述测试组中确定所述第一接口的子接口;其中,所述子接口包括目标参数,所述第一接口不包括所述目标参数,所述目标参数指示了所述第一资源的资源标识;
对所述返回信息和所述子接口进行匹配,确定匹配参数;
基于所述匹配参数,从所述返回信息中确定所述第一资源的资源标识。
根据一种可行的实现方式,所述第二接口用于对响应所述第一接口所创建的资源进行删除操作,所述测试组还包括第四接口,所述第四接口用于对创建的第一资源进行删除操作之外的其他操作;所述装置还包括:删除模块和再操作模块;其中
删除模块,用于基于所述第二接口、所述第二用户的用户标识和所述第一资源标识,确定删除请求;将所述删除请求发送到所述分布式系统,以使所述分布式系统删除已经创建的第一资源;
再操作模块,用于基于所述第四接口、所述第二用户的用户标识和所述第一资源标识,确定第二测试请求;将所述第二测试请求发送到所述分布式系统。
根据一种可行的实现方式,所述攻击操作为创建,所述第一资源为计算资源、存储资源或网络资源。
其中,部署模块1101、部署模块1101、采集模块1103、整合模块1104和分析模块1105均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以部署模块1101为例,介绍部署模块1101的实现方式。类似的,请求确定模块1102、采集模块1103、整合模块1104和分析模块1105的实现方式可以参考部署模块1101的实现方式。
模块作为软件功能单元的一种举例,部署模块1101可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,部署模块1101可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,部署模块1101可以包括至少一个计算设备,如服务器等。或者,部署模块1101也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
部署模块1101包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。部署模块1101包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,部署模块1101包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,部署模块1101可以用于执行越权分析方法中的任意步骤,请求确定模块1102、采集模块1103、整合模块1104和分析模块1105均可以用于执行越权分析方法中的任意步骤,部署模块1101、请求确定模块1102、采集模块1103、整合模块1104和分析模块1105负责实现的步骤可根据需要指定,通过部署模块1101、请求确定模块1102、采集模块1103、整合模块1104和分析模块1105分别实现越权分析方法中不同的步骤来实现越权分析装置的全部功能。
本发明实施例还提供一种计算设备1200。如图12所示,计算设备1200包括:总线1202、处理器1204、存储器1206和通信接口1208。处理器1204、存储器1206和通信接口1208之间通过总线1202通信。计算设备1200可以是服务器或终端设备。应理解,本申请不限定计算设备1200中的处理器、存储器的个数。
总线1202可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1204可包括在计算设备1200各个部件(例如,存储器1206、处理器1204、通信接口1208)之间传送信息的通路。
处理器1204可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器1206可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1204还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器1206中存储有可执行的程序代码,处理器1204执行该可执行的程序代码以分别实现前述部署模块1101、请求确定模块1102、采集模块1103、整合模块1104和分析模块1105的功能,从而实现越权分析方法。也即,存储器1206上存有用于执行越权分析方法的指令。
通信接口1208使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1200与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图13所示,所述计算设备集群包括至少一个计算设备1200。计算设备集群中的一个或多个计算设备1200中的存储器1206中可以存有相同的用于执行越权分析方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1200的存储器1206中也可以分别存有用于执行越权分析方法的部分指令。换言之,一个或多个计算设备1200的组合可以共同执行用于执行越权分析方法的指令。
需要说明的是,计算设备集群中的不同的计算设备1200中的存储器1206可以存储不同的指令,分别用于执行越权分析装置的部分功能。也即,不同的计算设备1200中的存储器1206存储的指令可以实现部署模块1101、请求确定模块1102、采集模块1103、整合模块1104和分析模块1105中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图14示出了一种可能的实现方式。如图14所示,两个计算设备1200A、1200B、1200C之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备1200A中的存储器1206中存有执行部署模块1101和请求确定模块1102的功能的指令。同时,计算设备1200B中的存储器1206中存有执行采集模块1103、整合模块1104的功能的指令,计算设备1200C中的存储器1206中存有执行请求分析模块1105的功能的指令。
图14所示的计算设备集群之间的连接方式可以是考虑到本申请提供的越权分析方法需要的存储情况和执行先后情况。具体地,需要存储采集模块1103采集到的大量数据,进一步通过整合模块1104进行整合,因此考虑将采集模块1103、整合模块1104实现的功能交由计算设备1200C执行。另外,在部署模块1101完成后,需要请求确定模块1102生成大量的请求,因此考虑将部署模块1101和请求确定模块1102实现的功能交由计算设备1200B执行。
应理解,图14中示出的计算设备1200A的功能也可以由多个计算设备1200完成。同样,计算设备1200B、计算设备1200C的功能也可以由多个计算设备1200完成。
本申请实施例还提供了另一种计算设备集群。该计算设备集群中各计算设备之间的连接关系可以类似的参考图13和图14所述计算设备集群的连接方式。不同的是,该计算设备集群中的一个或多个计算设备1200中的存储器1206中可以存有相同的用于执行越权分析方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1200的存储器1206中也可以分别存有用于执行越权分析方法的部分指令。换言之,一个或多个计算设备1200的组合可以共同执行用于执行越权分析方法的指令。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行越权分析方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行越权分析方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (15)

1.一种越权分析方法,其特征在于,应用于追踪分析系统,所述追踪分析系统用于和分布式系统交互,所述方法包括:
将目标分布式应用的插桩源码部署到所述分布式系统;其中,所述插桩源码为对所述目标分布式应用的源码中多个第一方法插桩后的源码;
确定第一测试请求,其中,所述第一测试请求指示了第一用户对第一资源的攻击操作,所述第一用户无权限操作第一资源;
获取所述第一测试请求的第一调用链信息;其中,所述第一调用链信息指示了所述分布式系统在响应所述第一测试请求所调用的多个第二方法各自对应的执行信息,所述多个第二方法为所述多个第一方法中的多个方法,所述执行信息包括第一信息,所述第一信息指示了对应第二方法与其他方法的调用关系;
至少基于所述执行信息中的第一信息,对所述第一调用链信息进行整合,确定多个第二调用链信息;其中,所述第二调用链信息指示了具有调用关系的多个第二方法的执行信息;
基于所述多个第二调用链信息对所述第一测试请求进行风险分析。
2.根据权利要求1所示的方法,其特征在于,所述基于所述多个第二调用链信息对所述第一测试请求进行风险分析,包括:
对于所述多个第二调用链信息中的目标调用链信息,基于目标调用链信息确定目标调用栈,对预先设置的参考调用栈和所述目标调用栈进行匹配,确定调用栈匹配结果。
3.根据权利要求2所述的方法,其特征在于,所述参考调用栈指示了多个栈帧和多个栈帧之间的先后顺序关系,所述对预先设置的参考调用栈和所述目标调用栈进行匹配,包括:
在确定所述目标调用栈包括所述多个栈帧和多个栈帧之间的先后顺序关系,确定所述目标调用栈和所述参考调用栈匹配。
4.根据权利要求1所述的方法,其特征在于,所述第一测试请求包括所述第一资源的第一资源标识,所述确定第一测试请求,包括:
确定测试组;其中,所述测试组包括包括第一接口和第二接口,所述第一接口用于创建资源,所述第二接口用于对响应所述第一接口所创建的资源进行操作;
基于所述第一接口和第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识;
基于所述第二接口、第一用户的用户标识和所述第一资源标识,自动创建所述第一测试请求。
5.根据权利要求4所述的方法,其特征在于,所述确定测试组,包括:
基于所述目标分布式应用的接口文档,确定多个接口和多个节点;其中,所述多个节点中每个节点表示一类资源的第一描述;
确定所述多个节点和所述多个接口的关联关系;
建立所述多个节点之间的关系实现接口关联,得到字典树;其中,所述字典树包括根节点和多个节点,从所述根节点到所述多个节点中任一节点所经过的节点表示了一类资源的第二描述;
基于所述字典树中子树中每个节点所关联的接口,确定测试组;其中,所述子树中的根节点对应的接口中包括第一接口。
6.根据权利要求4所示的方法,其特征在于,所述测试组还包括第三接口,所述第三接口用于创建所述第一资源依赖的第二资源;
所述方法还包括:
基于所述第三接口和所述第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第二资源后分配的第二资源标识;
所述基于所述第一接口和第二用户的用户标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识,包括:
基于所述第一接口、第二用户的用户标识和所述第二资源标识,确定所述分布式系统在所述第二用户下创建第一资源后分配的第一资源标识。
7.根据权利要求4所示的方法,其特征在于,所述基于所述第一接口和第二用户的用户标识,确定所述分布式系统在第二用户下创建第一资源后分配的第一资源标识,包括:
基于所述第二用户的用户标识、第一资源和所述第一接口生成第一请求,确定所述分布式系统响应所述第一请求返回的返回信息;
基于所述返回信息,确定所述分布式系统创建所述第一资源后分配的第一资源标识。
8.根据权利要求7所述的方法,其特征在于,所述基于所述返回信息,确定所述分布式系统创建所述第一资源后分配的第一资源标识,包括:
从所述测试组中确定所述第一接口的子接口;其中,所述子接口包括目标参数,所述第一接口不包括所述目标参数,所述目标参数指示了所述第一资源的资源标识;
对所述返回信息和所述子接口进行匹配,确定匹配参数;
基于所述匹配参数,从所述返回信息中确定所述第一资源的资源标识。
9.根据权利要求4所示的方法,其特征在于,所述第二接口用于对响应所述第一接口所创建的资源进行删除操作,所述测试组还包括第四接口,所述第四接口用于对创建的第一资源进行删除操作之外的其他操作;所述方法还包括:
基于所述第二接口、所述第二用户的用户标识和所述第一资源标识,确定删除请求;
将所述删除请求发送到所述分布式系统,以使所述分布式系统删除已经创建的第一资源;
基于所述第四接口、所述第二用户的用户标识和所述第一资源标识,确定第二测试请求;
将所述第二测试请求发送到所述分布式系统。
10.根据权利要求1所示的方法,其特征在于,所述攻击操作为创建,所述第一资源为计算资源、存储资源或网络资源。
11.一种越权分析装置,其特征在于,所述越权分析装置和分布式系统交互,包括:
部署模块,用于将目标分布式应用的插桩源码部署到所述分布式系统;其中,所述插桩源码为对所述目标分布式应用的源码中多个第一方法插桩后的源码;
请求确定模块,用于确定第一测试请求,其中,所述第一测试请求指示了第一用户对第一资源的攻击操作,所述第一用户无权限操作第一资源;
采集模块,用于获取所述第一测试请求的第一调用链信息;其中,所述第一调用链信息指示了所述分布式系统在响应所述第一测试请求所调用的多个第二方法各自对应的执行信息,所述多个第二方法为所述多个第一方法中的多个方法,所述执行信息包括第一信息,所述第一信息指示了对应第二方法与其他方法的调用关系;
整合模块,用于至少基于所述执行信息中的第一信息,对所述第一调用链信息进行整合,确定多个第二调用链信息;其中,所述第二调用链信息指示了具有调用关系的多个第二方法的执行信息;
分析模块,用于基于所述多个第二调用链信息对所述第一测试请求进行风险分析。
12.一种越权分析系统,其特征在于,所述越权分析系统包括追踪分析系统和分布式系统,所述追踪分析系统和分布式系统交互,其中,所述追踪分析系统用于执行如权利要求1-10任一所述的方法。
13.一种计算设备集群,其特征在于,包括:至少一个计算设备,每个计算设备包括处理器和存储器;
至少一个存储器,用于存储程序;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使所述计算设备集群执行如权利要求1-10任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1-10任一所述的方法。
15.一种包含指令的计算机程序产品,其特征在于,包括计算机程序指令,当所述计算机程序指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1-10任一所述的方法。
CN202210944122.0A 2022-08-05 2022-08-05 越权分析方法、装置、系统、计算机可读存储介质 Pending CN117556419A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210944122.0A CN117556419A (zh) 2022-08-05 2022-08-05 越权分析方法、装置、系统、计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210944122.0A CN117556419A (zh) 2022-08-05 2022-08-05 越权分析方法、装置、系统、计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN117556419A true CN117556419A (zh) 2024-02-13

Family

ID=89813425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210944122.0A Pending CN117556419A (zh) 2022-08-05 2022-08-05 越权分析方法、装置、系统、计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117556419A (zh)

Similar Documents

Publication Publication Date Title
US11722514B1 (en) Dynamic vulnerability correlation
US7636919B2 (en) User-centric policy creation and enforcement to manage visually notified state changes of disparate applications
EP3178011B1 (en) Method and system for facilitating terminal identifiers
CN113489713B (zh) 网络攻击的检测方法、装置、设备及存储介质
US11463478B2 (en) Remediation strategy optimization for development, security and operations (DevSecOps)
US20030135758A1 (en) System and method for detecting network events
US11621974B2 (en) Managing supersedence of solutions for security issues among assets of an enterprise network
US20210374110A1 (en) Detection system and method, and related apparatus
US20160321255A1 (en) Unsolicited bulk email detection using url tree hashes
US20080276253A1 (en) Automated event correlation
US10291492B2 (en) Systems and methods for discovering sources of online content
CN111142863B (zh) 一种页面生成的方法及装置
WO2014132145A1 (en) Web service black box testing
Muñoz et al. Analyzing the traffic of penetration testing tools with an IDS
CN117056240A (zh) 一种支持离线Jar包的数据元件开发调试方法和系统
CN111314326B (zh) Http漏洞扫描主机的确认方法、装置、设备及介质
CN116700778B (zh) 接口差异分析方法、设备、存储介质及装置
CN111666567A (zh) 恶意修改应用程序的检测方法、装置、计算机程序和介质
US20210073018A1 (en) Enhanced virtual machine image management system
CN117556419A (zh) 越权分析方法、装置、系统、计算机可读存储介质
US20230254340A1 (en) Apparatus for processing cyber threat information, method for processing cyber threat information, and medium for storing a program processing cyber threat information
CN114443215A (zh) 业务应用部署方法、装置、计算机设备和存储介质
CN111625465B (zh) 程序生成方法、装置、系统和电子设备
CN109788001B (zh) 可疑互联网协议地址发现方法、用户设备、存储介质及装置
CN116401319B (zh) 数据同步方法及装置、电子设备和计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication