CN112035839A - 一种竞态条件漏洞利用的检测方法及装置 - Google Patents

一种竞态条件漏洞利用的检测方法及装置 Download PDF

Info

Publication number
CN112035839A
CN112035839A CN202010806212.4A CN202010806212A CN112035839A CN 112035839 A CN112035839 A CN 112035839A CN 202010806212 A CN202010806212 A CN 202010806212A CN 112035839 A CN112035839 A CN 112035839A
Authority
CN
China
Prior art keywords
subprogram
vulnerability
characteristic information
threshold
determined
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
CN202010806212.4A
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.)
Nsfocus Technologies Inc
Nsfocus Technologies Group Co Ltd
Original Assignee
Nsfocus Technologies Inc
Nsfocus Technologies Group 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 Nsfocus Technologies Inc, Nsfocus Technologies Group Co Ltd filed Critical Nsfocus Technologies Inc
Priority to CN202010806212.4A priority Critical patent/CN112035839A/zh
Publication of CN112035839A publication Critical patent/CN112035839A/zh
Pending legal-status Critical Current

Links

Images

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/034Test or assess a computer or a system

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

一种竞态条件漏洞利用的检测方法及装置
技术领域
本申请涉及网络安全技术领域,尤其涉及一种竞态条件漏洞利用的检测方法及装置。
背景技术
竞态条件漏洞是一种严重的安全漏洞类型,是Linux操作系统内核中十分常见的高危漏洞,竞态条件漏洞与一般的漏洞不同,当攻击者尝试触发某一个竞态条件漏洞时,需要执行大量且重复的系统调用,直至该竞态条件漏洞被触发,而当攻击者在尝试触发一般的漏洞时,执行特定的系统调用即可触发漏洞,因此,通过单独对每个系统调用进行检测的方法无法检测出竞态条件漏洞的利用行为,因此,如何能够实现对竞态条件漏洞利用的检测,成为了一个亟待解决的问题。
发明内容
本申请实施例提供一种竞态条件漏洞利用的检测方法及装置,以实现对竞态条件漏洞利用的检测。
本申请实施例提供的具体技术方案如下:
一种竞态条件漏洞利用的检测方法,包括:
获取包含有各子程序的子程序集合;
获取预设的漏洞特征信息集合,若确定所述漏洞特征信息集合中的各子程序均包含于所述子程序集合中,则分别计算所述漏洞特征信息集合中的各子程序在所述子程序集合中出现的次数值,其中,所述漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序;
若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用。
可选的,获取包含有各子程序的程序集合,具体包括:
接收节点发送的子程序,并确定接收到的子程序所属的进程;
判断是否存在所述进程对应的子程序集合;
若确定存在所述进程对应的子程序集合,且所述进程的时间窗口未到时,则将接收到的子程序添加至所述子程序集合中;
若确定不存在与所述进程对应的子程序集合,则新建子程序集合,并对所述进程新建时间窗口,将所述接收到的子程序添加至新建的子程序集合中。
可选的,获取包含有各子程序的子程序集合之后,进一步包括:
若确定预设的漏洞特征信息集合中的至少一个子程序未包含于所述子程序集合中,则对所述时间窗口进行延时,并在延时的时间窗口内持续接收所述节点发送的子程序;
当所述延时的时间窗口到时,且在所述延时的时间窗口内接收到新的子程序,则将所述新的子程序添加至所述子程序集合中。
可选的,获取包含有各子程序的子程序集合时,进一步包括:
获取所述子程序集合中的各子程序的程序信息;
在确定检测到竞态条件漏洞利用之后,进一步包括:
按照预设告警方式将获取到的各程序信息进行告警。
可选的,若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用之前,进一步包括:
根据所述子程序所属的进程,确定所述进程所属的镜像;
获取确定出的镜像对应的阈值模型,并获得所述阈值模型中的各次数阈值。
可选的,所述阈值模型的训练方式为:
若确定预设的漏洞特征信息集合中的各子程序样本均包含于子程序样本集合中,则分别计算所述各子程序样本在所述子程序样本集合中出现的样本次数值;
判断所述漏洞特征信息集合对应的阈值模型标识是否为未训练完成,若确定所述漏洞特征信息集合对应的阈值模型标识为未训练完成,则判断所述漏洞特征信息集合的阈值模型是否存在;
若确定所述漏洞特征信息集合的阈值模型不存在,则新建阈值模型,并将计算出的各样本次数值作为新建的阈值模型的初始值,若确定所述漏洞特征信息集合对应的阈值模型存在,则根据所述计算出的各样本次数值训练所述阈值模型,直至所述各阈值模型的预设周期结束,将所述预设周期结束的阈值模型的模型标识更改为训练完成,并获得训练完成的阈值模型。
可选的,根据所述计算出的各样本次数值训练所述阈值模型,具体包括:
判断所述各样本次数值是否均大于所述阈值模型对应的次数阈值;
若确定所述各样本次数值均大于所述阈值模型对应的次数阈值,则将对应阈值模型的各次数阈值更新为对应的样本次数值;
若确定所述各样本次数值的其中一个样本次数值不大于所述阈值模型对应的次数阈值,则不更新。
一种竞态条件漏洞利用的检测装置,包括:
第一获取模块,用于获取包含有各子程序的子程序集合;
第一处理模块,用于获取预设的漏洞特征信息集合,若确定所述漏洞特征信息集合中的各子程序均包含于所述子程序集合中,则分别计算所述漏洞特征信息集合中的各子程序在所述子程序集合中出现的次数值,其中,所述漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序;
第一决策模块,用于若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用。
可选的,第一获取模块具体用于:
接收节点发送的子程序,并确定接收到的子程序所属的进程;
判断是否存在所述进程对应的子程序集合;
若确定存在所述进程对应的子程序集合,且所述进程的时间窗口未到时,则将接收到的子程序添加至所述子程序集合中;
若确定不存在与所述进程对应的子程序集合,则新建子程序集合,并对所述进程新建时间窗口,将所述接收到的子程序添加至新建的子程序集合中。
可选的,获取包含有各子程序的子程序集合之后,进一步包括:
延时模块,用于若确定预设的漏洞特征信息集合中的至少一个子程序未包含于所述子程序集合中,则对所述时间窗口进行延时,并在延时的时间窗口内持续接收所述节点发送的子程序;
第二处理模块,用于当所述延时的时间窗口到时,且在所述延时的时间窗口内接收到新的子程序,则将所述新的子程序添加至所述子程序集合中。
可选的,获取包含有各子程序的子程序集合时,第一获取模块进一步用于:
获取所述子程序集合中的各子程序的程序信息;
在确定检测到竞态条件漏洞利用之后,进一步包括:
告警模块,用于按照预设告警方式将获取到的各程序信息进行告警。
可选的,若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用之前,进一步包括:
第二决策模块,用于根据所述子程序所属的进程,确定所述进程所属的镜像;
第二获取模块,用于获取确定出的镜像对应的阈值模型,并获得所述阈值模型中的各次数阈值。
可选的,训练所述阈值模型时,进一步包括:
计算模块,用于若确定预设的漏洞特征信息集合中的各子程序样本均包含于子程序样本集合中,则分别计算所述各子程序样本在所述子程序样本集合中出现的样本次数值;
判断模块,用于判断所述漏洞特征信息集合对应的阈值模型标识是否为未训练完成,若确定所述漏洞特征信息集合对应的阈值模型标识为未训练完成,则判断所述漏洞特征信息集合的阈值模型是否存在;
第三处理模块,用于若确定所述漏洞特征信息集合的阈值模型不存在,则新建阈值模型,并将计算出的各样本次数值作为新建的阈值模型的初始值,若确定所述漏洞特征信息集合对应的阈值模型存在,则根据所述计算出的各样本次数值训练所述阈值模型,直至所述各阈值模型的预设周期结束,将所述预设周期结束的阈值模型的模型标识更改为训练完成,并获得训练完成的阈值模型。
可选的,根据所述计算出的各样本次数值训练所述阈值模型时,第三处理模块具体用于:
判断所述各样本次数值是否均大于所述阈值模型对应的次数阈值;
若确定所述各样本次数值均大于所述阈值模型对应的次数阈值,则将对应阈值模型的各次数阈值更新为对应的样本次数值;
若确定所述各样本次数值的其中一个样本次数值不大于所述阈值模型对应的次数阈值,则不更新。
一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述竞态条件漏洞利用的检测方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述竞态条件漏洞利用的检测方法的步骤。
本申请实施例中,获取包含有各子程序的子程序集合,获取预设的漏洞特征信息集合,若确定预设的漏洞特征信息集合中的各子程序均包含于子程序集合中,则分别计算漏洞特征信息集合中的各子程序在子程序集合中出现的次数值,漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序,若确定计算出的各次数值均大于对应预设的次数阈值,则确定检测到竞态条件漏洞利用,这样,通过计算在竞态条件漏洞利用过程中必要调用的子程序在子程序集合中出现的数量,并预设次数阈值,通过比对计算出的各次数值与对应的次数阈值,进而判断是否出现了竞态条件漏洞的利用行为,能够实现对攻击者利用竞态条件漏洞进行攻击的实时行为的检测。
附图说明
图1为本申请实施例中一种竞态条件漏洞利用的检测方法的流程图;
图2为本申请实施例中竞态条件漏洞利用的检测的效果示意图;
图3为本申请实施例中一种竞态条件漏洞利用的检测方法的另一流程图;
图4为本申请实施例中容器集群部署示意图;
图5本申请实施例中竞态条件漏洞利用的检测装置的结构示意图;
图6为本申请实施例中电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
容器技术是一种在资源隔离的环境下,运行应用程序和其依赖项的、轻量的、操作系统级别的虚拟化技术,在运行应用程序的过程中,将运行应用程序所需的必要组件都打包为单个镜像,单个镜像是可以重复使用的,以镜像为基础创建的容器运行在独立环境中,保证了容器内的进程不会影响到容器外的任何进程。
容器技术通过共享宿主机操作系统内核,实现轻量的资源虚拟化和隔离,近年来在DevOps、微服务等领域有着广泛的应用,第五代移动通信技术(5th generation mobilenetworks,5G)时代,为了实现核心网云化部署,容器技术将成为突破口,并且,容器技术极大地提升了工作效率。
但是,随着容器技术的发展,竞态条件漏洞的攻击利用行为也越来越常见,竞态条件漏洞是一种严重的安全漏洞类型,是Linux操作系统内核中十分常见的高危漏洞,竞态条件指的是在一些场景下计算机指令的不同执行次序会导致不同的结果,当这样的结果产生威胁时,这个问题就成为了竞态条件漏洞,现代操作系统非常复杂,内核对于共享资源的访问控制不完善就可能导致竞态条件漏洞的产生。操作系统内权限分为用户态和内核态,用户态权限较低,内核态权限最高,用户程序通常运行在用户态,系统内核运行于内核态,借助操作系统内核的竞态条件漏洞,运行与用户态的攻击者通常能够实现权限提升,以最高权限控制整个系统,容器内的攻击者能够借助这种最高权限实现容器逃逸。
容器逃逸是容器内的攻击者借助技术手段突破容器自身的隔离机制实现对容器所在宿主机的访问和控制,由于容器逃逸直接影响到了容器所在底层基础设施(宿主机)的安全三要素,即机密性、完整性、可用性,因此,容器逃逸是容器环境下后果最严重的攻击形式。
在触发竞态条件漏洞时,竞态条件漏洞的攻击利用行为与一般漏洞的攻击利用行为有明显差异,一般漏洞的攻击利用往往是一次性、确定的、有限特定操作序列的,例如,执行特定操作action1即可触发漏洞,又例如,执行一段有限特定操作序列action1—>action2—>action3—>···—>action N也可触发一般漏洞,然而,竞态条件漏洞与一般的漏洞是截然不同的,相比于一般的漏洞来说,竞态条件漏洞的攻击利用行为通常是不确定的、一段时间内的多线程频繁系统调用,攻击者也不清楚什么时候能够触发竞态条件漏洞,只有当多线程之间按照特定次序访问共享资源时,竞态条件漏洞才会被触发,这取决于操作系统内核的线程调度和CPU状态,是不可预知的,因此,攻击者只能够通过以尽可能高的频率不断让不同的线程调用特定的系统调用,也就是子程序,形成线性竞争,从而以一定的概率触发竞态条件漏洞,例如,假设竞态条件漏洞V的攻击利用需要三个子程序action1、action2、action3,那么当攻击者正在执行漏洞V触发尝试的时候,从外界来看,系统上会有至少一个恶意进程,该进程有至少三个线程thread1、thread2、thread3,这三个进程在以类似于死循环的方式分别不断执行action1、action2、action3,直至竞态条件漏洞V被触发。
因此,检测容器环境内的竞态条件漏洞的攻击利用行为对于维护容器安全来说非常重要,随着容器技术越来越普及,攻击者在容器内部利用Linux内核竞态条件漏洞进行容器逃逸的威胁越来越大,同时,容器逃逸是容器环境下后果最严重的攻击形式,如何及时、准确地实现对竞态条件漏洞利用的检测,成为了一个亟待解决的问题。
本申请实施例中,提供了一种竞态条件漏洞利用的检测方法,获取包含有各子程序的子程序集合,获取预设的漏洞特征信息集合,若确定预设的漏洞特征信息集合中的各子程序均包含于子程序集合中,则分别计算漏洞特征信息集合中的各子程序在子程序集合中出现的次数值,漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序,若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用,这样,设定次数阈值,若计算出的竞态条件漏洞在攻击过程中所必要调用的子程序在子程序集合中出现的次数值均大于设定的次数阈值,则确定出现了竞态条件漏洞利用,通过设定次数阈值来检测竞态条件漏洞利用,而非直接对各子程序进行单一检测,能够实现对攻击者利用竞态条件漏洞进行攻击的实时行为的检测。
基于上述实施例,参阅图1所示,为本申请实施例中一种竞态条件漏洞利用的检测方法的流程图,应用于控制器,具体包括:
步骤100:获取包含有各子程序的子程序集合。
本申请实施例中,在预设时间窗口内,检测系统采用子程序驱动机制,节点上部署的探针持续探测是否有符合探测规则的子程序,持续捕获所在节点容器内进程的子程序,探针若确定探测到的子程序为触发某一个竞态条件漏洞所必要调用的漏洞特征信息集合中的其中一个子程序,则确定该子程序符合探测规则,并将探测到的子程序通过分布式消息队列发送给控制器,基于该探测规则,控制器在预设时间窗口内持续接收来自该探针发送的各子程序,当时间窗口到时之后,控制器根据在时间窗口内接收到的各子程序生成子程序集合,也就是说,生成的子程序集合中包括在预设时间窗口内接收到的各子程序。
例如,假设某一竞态条件漏洞的利用攻击过程中所必要调用的漏洞特征信息集合为F={f1,f2,f3…fn},则在探针中设置探测规则R,当探测到符合探测规则R的子程序之后,探针捕获符合探测规则R的子程序,并将探测到的子程序发送给控制器。
其中,R为探测规则,例如可以为,对任意f∈F,对外输出子程序e,e包括子程序名称,参数、进程的名称、进程编号、容器的名称、容器编号等子程序相关信息,本申请实施例中对此并不进行限制。
其中,探针使用伯克利包过滤(Berkeley Packet Filter,eBPF)技术,捕获当前宿主机节点上的所有容器内的子程序,在捕获过程中,探针使用的是子程序驱动机制,当有符合探测条件的容器内部的事件发生时,操作系统将关于该事件的子程序传递给探针。
其中,子程序为执行不同系统功能的程序,也可以称之为系统调用。
为了减少对系统性能的影响,并降低计算量,探针使用白名单机制,允许将集群系统容器(支撑集群正常运转的必要容器,例如Kubernetes kube-system命名空间下的容器)、安全容器(即方案组件探针、控制器所在的容器)和其它没有暴露面、几乎不可能被攻击者接触到的容器加入白名单中,在探针探测过程中,探针自动忽略白名单内容器中发生的符合条件的容器内的子程序。
例如,白名单可以是-list:image_repo_whitelist;items:[k8s.gcr.io/kube-proxy-amd64,
k8s.gcr.io/kube-scheduler-amd64,k8s.gcr.io/kube-controller-manager-amd64,k8s.gcr.io/kube-apiserver-amd64,k8s.gcr.io/coredns,k8s.gcr.io/etcd-amd64,k8s.gcr.io/pause-amd64,k8s.gcr.io/paus,quay.io/coreos/flannel,appstore.research.intra.nsfocus.com/c tnsec/enforcer,appstore.research.intra.nsfocus.com/ctnsec/controller]。
这样,当探针发现探测到的子程序来自白名单内镜像创建的容器时,将自动忽略这些子程序,不再发送给控制器,通过设置白名单,能够提高系统性能,并且,能够实现对大规模容器集群场景的及时高效攻击检测。
进一步地,在接收各子程序的同时,还接收到各子程序对应的程序相关信息,当有符合探测规则的容器内部的子程序时,容器内部的操作系统将该子程序传递给探针,探针向控制器发送子程序以及程序相关信息。
其中,程序相关信息至少包括以下一项或任意组合:时间戳、所在主机的主机编号、所属容器的容器编号、所属镜像的镜像编号、所属漏洞特征信息集合的漏洞特征信息集合编号、子程序类型和进程命令行参数。
例如,如表1所示,为本申请实施例中程序相关信息表。
表1.
Figure BDA0002629206530000101
下面对本申请实施例中的步骤100进行详细阐述,具体包括:
S1:接收节点发送的子程序,并确定接收到的子程序所属的进程。
本申请实施例中,在接收到节点发送的子程序时,同时接收到该子程序的程序相关信息,并根据接收到的程序相关信息中的进程编号,确定该子程序所属的进程。
S2:判断是否存在进程对应的子程序集合。
本申请实施例中,在确定出接收到的子程序所属的进程之后,控制器判断是否存在该进程对应的系统调用集合。
需要说明的是,控制器若首次接收到某个竞态条件漏洞的漏洞特征信息集合中的其中一个子程序时,则将该子程序作为事件驱动,确定该子程序所在的进程,并且,此时在控制器中并不存在该进程对应的子程序集合,因此,需要为该子程序新建一个子程序集合,相应地,控制器若非首次接收到某个竞态条件漏洞的漏洞特征信息集合中的其中一个子程序时,确定该子程序所在的进程,并且,此时在控制器中已经存在该进程对应的子程序集合,那么,可以直接将该子程序添加至子程序集合中。
S2:若确定存在进程对应的子程序集合,且进程的时间窗口未到时,则将接收到的子程序添加至子程序集合中。
本申请实施例中,当控制器首次接收到符合某个竞态条件漏洞利用的漏洞特征信息集合中的其中一个子程序时,确定接收到的子程序所在的进程,并新建子程序集合,同时,根据触发各竞态条件漏洞所必要调用的子程序,确定接收到的子程序所可能涉及到的竞态条件漏洞,并获得在触发这些竞态条件漏洞时必要调用的子程序的程序类型,将这些程序类型,作为子程序集合设置的程序类型标签,这样,当再次接收到其它子程序时,就可以根据接收到的子程序的程序类型,与子程序集合的各程序类型标签进行匹配,若确定接收到的子程序的程序类型与子程序集合的其中一个程序类型标签相同,则确定存在该进程对应的子程序集合。
并且,由于在为该进程新建子程序集合时,同时为该进程设置了时间窗口,需要在时间窗口内接收子程序,因此,在将接收到的子程序添加至对应的子程序集合之前,还需要判断对应的进程的时间窗口是否到时,若确定进程的时间窗口未到时,则能够将接收到的子程序添加至子程序集合中,若确定进程的时间窗口到时,则无法添加。
S3:若确定不存在与进程对应的子程序集合,则新建子程序集合,并对进程新建时间窗口,将接收到的子程序添加至新建的子程序集合中。
本申请实施例中,根据接收到的子程序所在的进程,判断该进程是否存在子程序集合,若确定该进程不存在对应的子程序集合,则新建子程序集合,将接收到的系统调用添加至新建的系统调用集合中,并对该子程序所在的进程新建时间窗口。
例如,假设当检测系统检测到子程序e,则以检测到子程序e的当前时刻为t0,然后,确定子程序e所在的进程,并为子程序e所在的进程建立一个时间窗口△t,那么,时间窗口到时的时刻t1=t0+△t,在为进程建立时间窗口的同时,为该进程建立一个记录(record),即子程序集合,在t0~t1时间内,持续收集探针基于探测规则R传来的针对该进程的子程序,并将接收到的子程序添加至record中。
其中,时间窗口可以根据实际需求进行设置,例如,可设置为10s,本申请实施例中对此并不进行限制。
进一步地,在将接收到的子程序添加至新建的子程序集合中之后,根据接收到的子程序的程序类型,查找到该子程序所可能触发的竞态条件漏洞,并确定触发竞态条件漏洞所必要调用的漏洞特征信息集合,然后,根据查找到的各漏洞特征信息集合中的各子程序的程序类型,为新建的子程序集合打上程序类型标签,这样,在时间窗口内接收到的新的子程序时,就可以根据新的子程序的程序类型,与子程序集合的类型标签进行匹配,从而判断是否将接收到的新的子程序添加至新建的子程序集合中,这样,能够减小计算量。
步骤110:获取预设的漏洞特征信息集合,若确定漏洞特征信息集合中的各子程序均包含于子程序集合中,则分别计算漏洞特征信息集合中的各子程序在子程序集合中出现的次数值。
其中,漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序。
本申请实施例中,在根据接收到的各子程序生成子程序集合之后,获取预设的漏洞特征信息集合,并判断预设的漏洞特征信息集合中的各子程序是否均包含于生成的子程序集合中,具体可以分为以下两种不同的情况。
第一种情况:预设的漏洞特征信息集合中的各子程序均包含于子程序集合中。
具体包括:
若确定漏洞特征信息集合中的各子程序均包含于所述子程序集合中,则分别计算漏洞特征信息集合中的各子程序在子程序集合中出现的次数值。
本申请实施例中,若确定预设的漏洞特征信息集合中的各子程序均出现在子程序集合中,即,
Figure BDA0002629206530000131
是否成立,若确定成立,则对漏洞特征信息集合中的所有子程序f∈(F_exploit∩set(L)),并统计L中f的出现的次数值count(f),即,分别计算漏洞特征信息集合中的各子程序在子程序集合中的数量。
其中,f表示接收到的子程序,F_exploit表示漏洞特征信息集合,set(L)表示子程序集合,count(f)表示f在子程序集合中出现的次数值。
例如,假设触发某个竞态条件漏洞的漏洞特征信息集合中的各子程序分别为A1和A2,子程序集合为“A1、A2、A2、A1、A2、A2”,则确定触发该竞态条件漏洞的漏洞特征信息集合中的各子程序A1和A2均包含于子程序集合中,此时,分别计算漏洞特征信息集合中的各子程序在子程序集合中出现的次数值,即,计算A1在子程序集合中的数量,计算A2在子程序集合中的数量,从而得到A1在子程序集合中的数量为2,A2在子程序集合中的数量为4。
第二种情况:预设的漏洞特征信息集合中的至少一个子程序未包含于子程序集合中。
具体包括:
S1:若确定预设的漏洞特征信息集合中的至少一个子程序未包含于子程序集合中,则对时间窗口进行延时,并在延时的时间窗口内持续接收节点发送的子程序。
本申请实施例中,判断触发竞态条件漏洞的过程中必要调用的漏洞特征信息集合中的各子程序,是否均出现在子程序集合中,若确定漏洞特征信息集合中的至少一个子程序没有出现在子程序集合中,也就是说,触发该竞态条件漏洞的预设的漏洞特征信息集合不完全包含于子程序集合中,此时说明在预先设置的时间窗口内,有些关键的子程序还未出现,因此,为了提高对竞态条件漏洞利用的检测的准确性,对时间窗口进行延时,并在延时的时间窗口内持续接收各子程序。
例如,假设触发某一个竞态条件漏洞所必要调用的子程序分别为A1、A2、A3,控制器在接收到子程序A1之后,从时刻t0开始建立时间窗口△t,在时间窗口△t内,控制器仅接收到了多个子程序A1和子程序A2,并未接收到子程序A3,此时,为了提高对竞态条件漏洞利用的检测的准确性,将时间窗口进行延时,延时△t/2到t2,则控制器在时间窗口△t/2持续接收其它子程序。
S2:当延时的时间窗口到时,且在延时的时间窗口内接收到新的子程序,则将新的子程序添加至子程序集合中。
本申请实施例中,在对时间窗口进行延时之后,若确定延时的时间窗口到时,且在延时的时间窗口内接收到了节点集群发送的新的子程序,则将新的子程序添加至子程序集合中,此时,子程序集合中包括在原先的时间窗口内接收到的各个子程序,还包括在延时的时间窗口内接收到的新的子程序。
例如,假设触发某一个竞态条件漏洞所必要调用的子程序分别为A1、A2、A3,在时间窗口△t内,子程序集合中仅出现了子程序A1和子程序A2,子程序A3并未出现在子程序集合中,因此,将时间窗口进行延时,延时△t/2,在延时△t/2内,控制器接收到了子程序A3,此时,当延时的时间窗口△t/2到时,且在△t/2内接收到了子程序A3,则将子程序A3添加至子程序集合中。
进一步地,当延时的时间窗口到时,但在延时的时间窗口未接收到新的子程序,则将子程序集合销毁。
这样,若确定预设的漏洞特征信息集合中的至少一个子程序未包含于子程序集合中,则对时间窗口进行延时,能够防止在时间窗口的末期才出现攻击行为时而未检测到竞态条件漏洞利用的情况发生,在这种情况下,可能△t时间窗口内的子程序集合并没有完全记录下攻击行为,但是已经出现了部分子程序,因此,对时间窗口进行延时,能够有效防止这种情况的漏检,提高了对竞态条件漏洞利用的检测的准确度。
步骤120:若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用。
本申请实施例中,判断计算出的各次数值是否均大于对应的预设次数阈值,若确定计算出的各次数值均大于对应的预设次数阈值,则确定足够异常,检测到竞态条件漏洞利用,若确定计算出的各次数值中的其中一个次数值不大于对应的预设次数阈值,则不足够异常。
竞态条件漏洞与一般的漏洞不同,其利用行为通常是由大量的不同的正常子程序交错调用组成的子程序行为序列,而非单次恶意行为,因此,传统的规则-特征匹配检测方法无法检测出这种漏洞利用行为,这是因为,每个单独的子程序在单独检测时可能都是正常的,只有当多个子程序形成特定调度序列的时候才会导致竞态条件漏洞的触发,并且,也无法从攻击语义上来判定,更无法进一步判定是哪一种竞态条件漏洞,因此,本申请实施例中采用预设的次数阈值,当子程序集合中的各子程序出现的次数超过对应的次数阈值,则说明在一定的时间窗口内发生了大量的对子程序的调用,进而通过子程序的出现的次数,能够检测到竞态条件漏洞的攻击利用行为,相比于直接对行为序列中的每一个单一原子子程序进行检测来说,通过本申请实施例中的方法能够更加准确发现容器内异常并判定为某种竞态条件漏洞攻击,及时告警,大大提高了相关工作人员对容器集群环境中的安全威胁感知能力。
进一步地,在判断计算出的各次数值是否均大于对应的预设次数阈值,若确定计算出的各次数值均大于对应的预设次数阈值之前,首先要获取到预设次数阈值,下面对于本申请实施例中,获取预设次数阈值的步骤进行详细阐述,具体包括:
S1:根据子程序所属的进程,确定进程所属的镜像。
本申请实施例中,在接收到探针发送的子程序之后,根据子程序的程序相关信息中的进程编号,确定接收到的子程序所在的进程,并确定进程所属的镜像。
S2:获取确定出的镜像对应的阈值模型,并获得阈值模型中的各次数阈值。
本申请实施例中,在确定出进程所属的镜像之后,获取该镜像对应的阈值模型,并获得阈值模型中的各次数阈值。
其中,每一个镜像都对应一个阈值模型。
进一步地,阈值模型为已训练的阈值模型,下面对本申请实施例中阈值模型的训练方式进行详细阐述,具体包括:
S1:若确定预设的漏洞特征信息集合中的各子程序样本均包含于子程序样本集合中,则分别计算各子程序样本在子程序样本集合中出现的样本次数值。
本申请实施例中,读取每个竞态条件漏洞的利用攻击过程中必要调用的漏洞特征信息集合F_exploit,然后,判断触发竞态条件漏洞的漏洞特征信息集合中的各子程序样本是否均出现在了时间窗口△t内的子程序样本集合中,若确定漏洞特征信息集合中的各子程序样本均出现在子程序样本集合中,则分别计算各子程序样本在子程序样本集合中的样本数量。
例如,读取每个竞态条件漏洞的利用攻击过程中必要调用的漏洞特征信息集合F_exploit,然后,判断
Figure BDA0002629206530000162
是否成立,若确定成立,则对所有漏洞特征信息集合中的各子程序f∈(F_exploit∩set(record)),统计record中f的出现次数count(f)。
进一步地,本申请实施例中,一些竞态条件漏洞可能有一个在利用攻击过程中必要调用的漏洞特征信息集合,有一些竞态条件漏洞还可能有多个在利用攻击过程中必要调用的漏洞特征信息集合,如表2所示,为本申请实施例中的race_condition_vulns表,用于记录竞态条件漏洞库,记录已知的Linux系统内核竞态条件漏洞,以及每个竞态条件的利用行为涉及到的漏洞特征信息集合。
表2.
Figure BDA0002629206530000161
Figure BDA0002629206530000171
需要说明的是,syscalls部分由set项和list项组成,一个竞态条件漏洞可能会有多种触发方式,例如上述的CVE-2016-5195,既能够通过madivise和mmap组合高频调用触发,也能够通过madivise和ptrace组合高频调用触发,set项包含了针对此竞态条件漏洞划定的漏洞特征信息集合,即只要其中任何一个子程序出现,控制器都要开启一段时间窗口去继续收集有关于该漏洞特征信息集合的其它的子程序,list则具体给出了该竞态条件漏洞的所有可能攻击利用方式,在具体判定攻击是否发生时,漏洞特征信息集合即为list中的每一个集合项。
S2:判断漏洞特征信息集合对应的阈值模型标识是否为未训练完成,若确定漏洞特征信息集合对应的阈值模型标识为未训练完成,则判断漏洞特征信息集合的阈值模型是否存在。
本申请实施例中,在训练阈值模型的过程中,针对漏洞特征信息集合,确定漏洞特征信息集合所在的容器,并根据确定出的所在容器,确定所在容器所属的镜像,即,确定出漏洞特征信息所属的镜像,然后,判断漏洞特征信息集合对应镜像的阈值模型是否为训练完成,具体地,可通过对应镜像的元数据表,判断阈值模型的模型标识是否为训练完成,如表3所示,为本申请实施例中的race_condition_metadata表,为镜像的元数据表,记录每个镜像的阈值模型是否存在,以及是否训练完成。
表3.
Figure BDA0002629206530000172
Figure BDA0002629206530000181
然后,若确定漏洞特征信息集合对应的阈值模型标识为未完成,则判断漏洞特征信息集合的阈值模型是否存在。
进一步地,也可以在元数据表中直接设置阈值模型的状态分别为已完成、未完成和不存在,本申请实施例中对此并不进行限制。
S3:若确定漏洞特征信息集合的阈值模型不存在,则新建阈值模型,并将计算出的各样本次数值作为新建的阈值模型的初始值,若确定漏洞特征信息集合对应的阈值模型存在,则根据计算出的各样本次数值训练阈值模型,直至各阈值模型的预设周期结束,将预设周期结束的阈值模型的模型标识更改为训练完成,并获得训练完成的阈值模型。
本申请实施例中,判断漏洞特征信息集合对应的阈值模型是否存在,若确定漏洞特征信息集合的阈值模型不存在,则新建阈值模型,并将计算出的各样本次数值作为新建的阈值模型的初始值,若确定漏洞特征信息集合的阈值模型存在,则根据计算出的各样本次数值训练阈值模型,直至阈值模型的预设周期结束,则将阈值模型的模型标识更改为训练完成。
其中,当新建阈值模型之后,为阈值模型设置一个训练周期,当训练周期结束时,则能够获得训练完成的阈值模型,阈值模型训练的周期可根据实际需求进行设置,例如,可以设置为3天,本申请实施例中对此并不进行限制。
如表4所示,为本申请实施例中的race_condition_thresholds表,为阈值模型表,该表中每一项是一个镜像对于特定竞态条件漏洞(cve)的阈值模型的具体内容。
表4.
Figure BDA0002629206530000182
Figure BDA0002629206530000191
下面对本申请实施例中根据计算出的各样本次数值训练阈值模型的步骤进行详细阐述,具体包括:
A1:判断各样本次数值是否均大于阈值模型对应的次数阈值。
A2:若确定各样本次数值均大于所述阈值模型对应的次数阈值,则将对应阈值模型的各次数阈值更新为对应的样本次数值。
A3:若确定各样本次数值的其中一个样本次数值不大于阈值模型对应的次数阈值,则不更新。
进一步地,在确定检测到竞态条件漏洞利用之后,进一步包括:
按照预设告警方式将获取到的各程序信息进行告警。
本申请实施例中,将检测到的竞态条件漏洞利用,以及竞态条件漏洞利用对应的子程序的程序信息按照预设告警方式进行告警,这样,能够帮助相关工作人员准确定位竞态条件漏洞的攻击发生位置,能够为攻击行为发生后的应急隔离响应、确定攻击者画像和攻击溯源提供有力支持。
例如,以CVE-2016-5195为例,参阅图2所示,为本申请实施例中竞态条件漏洞利用的检测的效果示意图,在学习期间正常业务运过程中同时出现madvise、mmap时,两个子程序被调用的次数值分别为2和8,也就是说,关于该竞态条件漏洞的阈值模型的次数阈值分别2和8,然后,在检测期间容器内手动执行CVE-2016-5195利用程序,检测系统检测到这两个子程序在同一△t时间窗口内出现次数值分别为59和11,均超过自学习时的次数阈值,因此,确定检测到竞态条件漏洞的利用,并发出漏洞利用攻击行为的确定性告警,同时给出了定位信息,节点主机为victim-2,容器ID为46358b7f1c4d,进程ID为5696。
进一步地,若确定计算出的各次数值中的其中一个次数不大于对应已训练的阈值模型的次数阈值,则此时不足够异常,则输出关于竞态条件漏洞的疑似告警,输出时附带竞态条件漏洞信息、统计数据、容器和进程信息。
本申请实施例中,在预设时间窗口内接收来自探针的各子程序,并根据各子程序生成子程序集合,子程序集合中包含接收到的各子程序,若确定预设的漏洞特征信息集合中的各子程序均包含于子程序集合中,则分别计算漏洞特征信息集合中的各子程序在子程序集合中的数量,根据漏洞特征信息集合所属镜像的镜像编号,查找到镜像标识对应的已训练的阈值模型,并获得阈值模型中的各次数阈值,若确定计算出的各次数值均大于对应的次数阈值,则确定检测到竞态条件漏洞利用,这样,通过已训练的阈值模型中的次数阈值,能够检测到在同一时间窗口内出现的大量的子程序被调用,进而可以实现对竞态条件漏洞利用的检测,本申请实施例中通过设置时间窗口,计算时间窗口内的子程序调用次数值,并结合自学习阶段产生的阈值模型中的次数阈值,及时、准确判定是否有竞态条件漏洞的容器内恶意利用行为,并直接判定是何种竞态条件漏洞利用。
基于上述实施例,参阅图3所示,为本申请实施例中一种竞态条件漏洞利用的检测方法的另一流程图,具体包括:
步骤300:接收来自探针的子程序调用驱动。
步骤301:接收子程序e,e.f∈F。
步骤302:根据子程序所在的进程,判断是否有针对e.ctr_id+e.pid的子程序集合record,若是,则执行步骤303,若否,则执行步骤304。
其中,ctr_id代表容器ID,pid代表进程ID。
步骤303:若确定存在针对e.ctr_id+e.pid的子程序集合record,且子程序集合所在的进程的时间窗口未到时,则将e.f添加至子程序集合中。
步骤304:若确定不存在针对e.ctr_id+e.pid的子程序集合record,则新建子程序集合record,并记录新建子程序集合的时刻为t0,建立时间窗口△t,并将e.f添加至新建的子程序集合record中。
本申请实施例中,在t0时刻新建子程序集合record,并建立时间窗口△t,当时间窗口到时之后,记录时间窗口到时的时刻为t1,即,t1=t0+△t。
步骤305:定时器到达t1。
步骤306:判断漏洞特征信息集合对应镜像的阈值模型是否训练完成,若是,则执行步骤307,若否,则执行步骤318。
本申请实施例中,判断漏洞特征信息集合对应镜像的阈值模型是否训练完成,若训练完成,则转入检测流程,若未训练完成,则转入训练流程。
步骤307:判断
Figure BDA0002629206530000211
是否成立,若是,则执行步骤311,若否,则执行步骤308。
步骤308:对时间窗口进行延时,延时△t/2,在延时的时间窗口内持续接收子程序,并记t2=t1+△t/2。
步骤309:定时器到达t2。
步骤310:判断延时的时间窗口内是否接收到新的子程序e.f∈F,若是,311,若否,则执行步骤325。
步骤311:判断
Figure BDA0002629206530000212
是否成立,若是,则执行步骤312,若否,则执行步骤325。
步骤312:对所有f∈F,计算record中f出现次数值count(f)。
步骤313:读取漏洞特征信息集合对应镜像的阈值模型。
步骤314:基于已训练的阈值模型,判断所有count(f)是否均大于阈值模型的次数阈值,若是,则执行步骤315,若否,则执行步骤316。
步骤315:确定检测到竞态条件漏洞V的利用,并输出关于竞态条件漏洞V的确定性告警。
步骤316:确定不足够异常,并输出关于竞态条件漏洞V的疑似性告警。
步骤317:保存关于竞态条件漏洞V的必要数据。
步骤318:判断
Figure BDA0002629206530000221
是否成立,若是,则执行步骤318,若否,则执行步骤325。
步骤319:对所有f∈F,计算record中f出现次数值count(f)。
步骤320:判断漏洞特征信息集合的阈值模型是否存在,若是,则执行步骤321,若否,则执行步骤324。
步骤321:判断计算出的各count(f)是否均大于对应阈值模型的次数阈值,若是,则执行步骤322,若否,则执行步骤323。
步骤322:将阈值模型的次数阈值更新为计算出的各count(f)。
步骤323:若确定计算出的各count(f)的其中一个count(f)不大于阈值模型的次数阈值,则不更新。
步骤324:新建阈值模型,并将计算出的各count(f)作为新建的阈值模型的初始值。
步骤325:销毁record,结束。
本申请实施例中,通过自学习得到的阈值模型中的次数阈值来检测竞态条件漏洞利用,而非直接对行为序列中的每一个单一子程序进行检测,能够准确发现容器内异常并判定为某种竞态条件漏洞,并及时告警,实现了对竞态条件漏洞利用的检测,并大大提高了对容器集群环境中的安全威胁感知能力。
基于上述实施例,参阅图4所示,为本申请实施例中容器集群部署示意图,具体包括:
节点:用于采用子程序调用驱动机制,将通过探测规则检测到的容器内部的子程序传递给探针。
探针:用于通过分布式消息队列将子程序发送给控制器。
控制器:用于获取包含有各子程序的子程序集合,获取预设的漏洞特征信息集合,若确定漏洞特征信息集合中的各子程序均包含于子程序集合中,则分别计算漏洞特征信息集合中的各子程序在子程序集合中出现的次数值,漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序,若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用行为。
本申请实施例中,在一个容器集群中,探针部署在每一台集群节点主机上,分别负责所在主机上的调用的子程序,探针收集到子程序之后,将子程序通过分布式消息队列发送给控制器,控制根据接收到的子程序以及程序信息判断是否检测到竞态条件漏洞利用,这样,能够及时、准确、高效地对大规模容器集群环境的基于竞态条件漏洞里利用的容器逃逸行为进行检测。
基于同一发明构思,本申请实施例中还提供了一种竞态条件漏洞利用的检测装置,该竞态条件漏洞利用的检测装置例如可以是前述实施例中的控制器,该竞态条件漏洞检测利用的装置可以是硬件结构、软件模块、或硬件结构加软件模块。基于上述实施例,参阅图5所示,本申请实施例中竞态条件漏洞利用的检测装置的结构示意图,具体包括:
第一获取模块500,用于获取包含有各子程序的子程序集合;
第一处理模块501,用于获取预设的漏洞特征信息集合,若确定所述漏洞特征信息集合中的各子程序均包含于所述子程序集合中,则分别计算所述漏洞特征信息集合中的各子程序在所述子程序集合中出现的次数值,其中,所述漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序;
第一决策模块502,用于若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用。
可选的,第一获取模块500具体用于:
接收节点发送的子程序,并确定接收到的子程序所属的进程;
判断是否存在所述进程对应的子程序集合;
若确定存在所述进程对应的子程序集合,且所述进程的时间窗口未到时,则将接收到的子程序添加至所述子程序集合中;
若确定不存在与所述进程对应的子程序集合,则新建子程序集合,并对所述进程新建时间窗口,将所述接收到的子程序添加至新建的子程序集合中。
可选的,获取包含有各子程序的子程序集合之后,进一步包括:
延时模块503,用于若确定预设的漏洞特征信息集合中的至少一个子程序未包含于所述子程序集合中,则对所述时间窗口进行延时,并在延时的时间窗口内持续接收所述节点发送的子程序;
第二处理模块504,用于当所述延时的时间窗口到时,且在所述延时的时间窗口内接收到新的子程序,则将所述新的子程序添加至所述子程序集合中。
可选的,获取包含有各子程序的子程序集合时,第一获取模块500进一步用于:
获取所述子程序集合中的各子程序的程序信息;
在确定检测到竞态条件漏洞利用之后,进一步包括:
告警模块505,用于按照预设告警方式将获取到的各程序信息进行告警。
可选的,若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用之前,进一步包括:
第二决策模块506,用于根据所述子程序所属的进程,确定所述进程所属的镜像;
第二获取模块507,用于获取确定出的镜像对应的阈值模型,并获得所述阈值模型中的各次数阈值。
可选的,训练所述阈值模型时,进一步包括:
计算模块508,用于若确定预设的漏洞特征信息集合中的各子程序样本均包含于子程序样本集合中,则分别计算所述各子程序样本在所述子程序样本集合中出现的样本次数值;
判断模块509,用于判断所述漏洞特征信息集合对应的阈值模型标识是否为未训练完成,若确定所述漏洞特征信息集合对应的阈值模型标识为未训练完成,则判断所述漏洞特征信息集合的阈值模型是否存在;
第三处理模块510,用于若确定所述漏洞特征信息集合的阈值模型不存在,则新建阈值模型,并将计算出的各样本次数值作为新建的阈值模型的初始值,若确定所述漏洞特征信息集合对应的阈值模型存在,则根据所述计算出的各样本次数值训练所述阈值模型,直至所述各阈值模型的预设周期结束,将所述预设周期结束的阈值模型的模型标识更改为训练完成,并获得训练完成的阈值模型。
可选的,根据所述计算出的各样本次数值训练所述阈值模型时,第三处理模块510具体用于:
判断所述各样本次数值是否均大于所述阈值模型对应的次数阈值;
若确定所述各样本次数值均大于所述阈值模型对应的次数阈值,则将对应阈值模型的各次数阈值更新为对应的样本次数值;
若确定所述各样本次数值的其中一个样本次数值不大于所述阈值模型对应的次数阈值,则不更新。
基于上述实施例,参阅图6所示为本申请实施例中电子设备的结构示意图。
本申请实施例提供了一种电子设备,该电子设备可以包括处理器610(CenterProcessing Unit,CPU)、存储器620、输入设备630和输出设备640等,输入设备630可以包括键盘、鼠标、触摸屏等,输出设备640可以包括显示设备,如液晶显示器(Liquid CrystalDisplay,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器620可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器610提供存储器620中存储的程序指令和数据。在本申请实施例中,存储器620可以用于存储本申请实施例中任一种竞态条件漏洞利用的检测方法的程序。
处理器610通过调用存储器620存储的程序指令,处理器510用于按照获得的程序指令执行本申请实施例中任一种竞态条件漏洞利用的检测方法。
基于上述实施例,本申请实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意方法实施例中的竞态条件漏洞利用的检测方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种竞态条件漏洞利用的检测方法,其特征在于,包括:
获取包含有各子程序的子程序集合;
获取预设的漏洞特征信息集合,若确定所述漏洞特征信息集合中的各子程序均包含于所述子程序集合中,则分别计算所述漏洞特征信息集合中的各子程序在所述子程序集合中出现的次数值,其中,所述漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序;
若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用。
2.如权利要求1所述的方法,其特征在于,获取包含有各子程序的程序集合,具体包括:
接收节点发送的子程序,并确定接收到的子程序所属的进程;
判断是否存在所述进程对应的子程序集合;
若确定存在所述进程对应的子程序集合,且所述进程的时间窗口未到时,则将接收到的子程序添加至所述子程序集合中;
若确定不存在与所述进程对应的子程序集合,则新建子程序集合,并对所述进程新建时间窗口,将所述接收到的子程序添加至新建的子程序集合中。
3.如权利要求2所述的方法,其特征在于,获取包含有各子程序的子程序集合之后,进一步包括:
若确定预设的漏洞特征信息集合中的至少一个子程序未包含于所述子程序集合中,则对所述时间窗口进行延时,并在延时的时间窗口内持续接收所述节点发送的子程序;
当所述延时的时间窗口到时,且在所述延时的时间窗口内接收到新的子程序,则将所述新的子程序添加至所述子程序集合中。
4.如权利要求1所述的方法,其特征在于,获取包含有各子程序的子程序集合时,进一步包括:
获取所述子程序集合中的各子程序的程序信息;
在确定检测到竞态条件漏洞利用之后,进一步包括:
按照预设告警方式将获取到的各程序信息进行告警。
5.如权利要求1所述的方法,其特征在于,若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用之前,进一步包括:
根据所述子程序所属的进程,确定所述进程所属的镜像;
获取确定出的镜像对应的阈值模型,并获得所述阈值模型中的各次数阈值。
6.如权利要求5所述的方法,其特征在于,所述阈值模型的训练方式为:
若确定预设的漏洞特征信息集合中的各子程序样本均包含于子程序样本集合中,则分别计算所述各子程序样本在所述子程序样本集合中出现的样本次数值;
判断所述漏洞特征信息集合对应的阈值模型标识是否为未训练完成,若确定所述漏洞特征信息集合对应的阈值模型标识为未训练完成,则判断所述漏洞特征信息集合的阈值模型是否存在;
若确定所述漏洞特征信息集合的阈值模型不存在,则新建阈值模型,并将计算出的各样本次数值作为新建的阈值模型的初始值,若确定所述漏洞特征信息集合对应的阈值模型存在,则根据所述计算出的各样本次数值训练所述阈值模型,直至所述各阈值模型的预设周期结束,将所述预设周期结束的阈值模型的模型标识更改为训练完成,并获得训练完成的阈值模型。
7.如权利要求6所述的方法,其特征在于,根据所述计算出的各样本次数值训练所述阈值模型,具体包括:
判断所述各样本次数值是否均大于所述阈值模型对应的次数阈值;
若确定所述各样本次数值均大于所述阈值模型对应的次数阈值,则将对应阈值模型的各次数阈值更新为对应的样本次数值;
若确定所述各样本次数值的其中一个样本次数值不大于所述阈值模型对应的次数阈值,则不更新。
8.一种竞态条件漏洞利用的检测装置,其特征在于,包括:
第一获取模块,用于获取包含有各子程序的子程序集合;
第一处理模块,用于获取预设的漏洞特征信息集合,若确定所述漏洞特征信息集合中的各子程序均包含于所述子程序集合中,则分别计算所述漏洞特征信息集合中的各子程序在所述子程序集合中出现的次数值,其中,所述漏洞特征信息集合中包括触发竞态条件漏洞时所必要调用的子程序;
第一决策模块,用于若确定计算出的各次数值均大于对应的预设次数阈值,则确定检测到竞态条件漏洞利用。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
CN202010806212.4A 2020-08-12 2020-08-12 一种竞态条件漏洞利用的检测方法及装置 Pending CN112035839A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010806212.4A CN112035839A (zh) 2020-08-12 2020-08-12 一种竞态条件漏洞利用的检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010806212.4A CN112035839A (zh) 2020-08-12 2020-08-12 一种竞态条件漏洞利用的检测方法及装置

Publications (1)

Publication Number Publication Date
CN112035839A true CN112035839A (zh) 2020-12-04

Family

ID=73578593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010806212.4A Pending CN112035839A (zh) 2020-08-12 2020-08-12 一种竞态条件漏洞利用的检测方法及装置

Country Status (1)

Country Link
CN (1) CN112035839A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434747A (zh) * 2021-06-09 2021-09-24 佳源科技股份有限公司 一种基于序列模式的异常行为跟踪装置及方法
CN114647853A (zh) * 2022-03-01 2022-06-21 深圳开源互联网安全技术有限公司 提高分布式应用程序漏洞检测准确性的方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673181B1 (en) * 2006-06-07 2010-03-02 Replay Solutions, Inc. Detecting race conditions in computer programs
US20150095894A1 (en) * 2013-09-30 2015-04-02 International Business Machines Corporation Detecting race condition vulnerabilities in computer software applications
US9135082B1 (en) * 2011-05-20 2015-09-15 Google Inc. Techniques and systems for data race detection
US20160062806A1 (en) * 2013-05-13 2016-03-03 Freescale Semiconductor, Inc. Method and device for detecting a race condition and a computer program product
CN108108616A (zh) * 2017-12-19 2018-06-01 努比亚技术有限公司 恶意行为检测方法、移动终端及存储介质
WO2018201810A1 (zh) * 2017-05-02 2018-11-08 中兴通讯股份有限公司 Pcrf实体、存储介质、竞态条件解除方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673181B1 (en) * 2006-06-07 2010-03-02 Replay Solutions, Inc. Detecting race conditions in computer programs
US9135082B1 (en) * 2011-05-20 2015-09-15 Google Inc. Techniques and systems for data race detection
US20160062806A1 (en) * 2013-05-13 2016-03-03 Freescale Semiconductor, Inc. Method and device for detecting a race condition and a computer program product
US20150095894A1 (en) * 2013-09-30 2015-04-02 International Business Machines Corporation Detecting race condition vulnerabilities in computer software applications
WO2018201810A1 (zh) * 2017-05-02 2018-11-08 中兴通讯股份有限公司 Pcrf实体、存储介质、竞态条件解除方法及系统
CN108108616A (zh) * 2017-12-19 2018-06-01 努比亚技术有限公司 恶意行为检测方法、移动终端及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434747A (zh) * 2021-06-09 2021-09-24 佳源科技股份有限公司 一种基于序列模式的异常行为跟踪装置及方法
CN114647853A (zh) * 2022-03-01 2022-06-21 深圳开源互联网安全技术有限公司 提高分布式应用程序漏洞检测准确性的方法及系统
CN114647853B (zh) * 2022-03-01 2023-06-23 深圳开源互联网安全技术有限公司 提高分布式应用程序漏洞检测准确性的方法及系统

Similar Documents

Publication Publication Date Title
US9736173B2 (en) Differential dependency tracking for attack forensics
US10944764B2 (en) Security event detection through virtual machine introspection
JP6212548B2 (ja) カーネルレベル・セキュリティ・エージェント
US10558545B2 (en) Multiple modeling paradigm for predictive analytics
JP4562568B2 (ja) 異常検出プログラムおよび異常検出方法
CN109586282B (zh) 一种电网未知威胁检测系统及方法
EP3488346B1 (en) Anomaly detection using sequences of system calls
KR20160142853A (ko) 이동 디바이스에서 거동 분석 동작들을 수행함으로써 애플리케이션 상태들을 추론하기 위한 방법 및 시스템
WO2013172865A1 (en) System, apparatus, and method for adaptive observation of mobile device behavior
CN111291384B (zh) 漏洞扫描方法、装置及电子设备
US11575688B2 (en) Method of malware characterization and prediction
CN112035839A (zh) 一种竞态条件漏洞利用的检测方法及装置
JP7282195B2 (ja) 組み込みソフトウェアアプリケーションのための機械学習ベースの異常検出
Esfahani et al. Inferring software component interaction dependencies for adaptation support
US11290473B2 (en) Automatic generation of detection alerts
Ma et al. Deep-learning–based app sensitive behavior surveillance for Android powered cyber–physical systems
CA2920109A1 (en) Rootkit detection in a computer network
Yuan et al. Automated mining of software component interactions for self-adaptation
CN110704313B (zh) Java虚拟机内存泄漏检测方法及装置
CN111901318A (zh) 一种命令注入攻击检测的方法、系统及设备
EP3831031A1 (en) Listen mode for application operation whitelisting mechanisms
CN113709153A (zh) 一种日志归并的方法、装置及电子设备
JP6254329B2 (ja) アイドルプロセスの発見および制約
Song et al. CAML: Machine learning-based predictable, system-level anomaly detection
CN109583204A (zh) 一种混合环境下静态对象篡改的监测方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination