CN111819556B - 容器逃逸检测方法、装置、系统及存储介质 - Google Patents

容器逃逸检测方法、装置、系统及存储介质 Download PDF

Info

Publication number
CN111819556B
CN111819556B CN201880091015.XA CN201880091015A CN111819556B CN 111819556 B CN111819556 B CN 111819556B CN 201880091015 A CN201880091015 A CN 201880091015A CN 111819556 B CN111819556 B CN 111819556B
Authority
CN
China
Prior art keywords
container
escape
escape detection
monitored
component
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
Application number
CN201880091015.XA
Other languages
English (en)
Other versions
CN111819556A (zh
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
Publication of CN111819556A publication Critical patent/CN111819556A/zh
Application granted granted Critical
Publication of CN111819556B publication Critical patent/CN111819556B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种容器逃逸检测方法、装置、系统及存储介质,涉及容器安全领域,其中方法包括:逃逸检测组件(12)接收所述容器监测组件(11)上报的被监测容器触发的多个系统调用的信息,逃逸检测组件(12)将所述多个系统调用的发生顺序与逃逸检测规则中的至少一组预设系统调用顺序进行匹配,并根据匹配结果确定所述被监测容器是否发生逃逸,逃逸检测规则中的每组预设系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序。能够提高防范容器逃逸的力度。

Description

容器逃逸检测方法、装置、系统及存储介质
技术领域
本申请涉及容器安全领域,特别涉及一种容器逃逸检测方法、装置、系统及存储介质。
背景技术
云计算(英文:Cloud Computing)是一种通过网络以服务的方式提供动态可伸缩的虚拟化资源的计算模式,其中,平台即服务(英文:Platform as a Service;简称:PaaS)是云计算的一种主要的模式。在PaaS模式中,云计算平台可以为每一个用户分配一个宿主机集群,该宿主机集群可以包括至少一个宿主机,其中,宿主机可以为物理机或虚拟机。用户可以在分配的宿主机集群的宿主机中基于容器镜像创建并运行容器,其中,每一个容器都拥有一个独立的进程运行空间,理想情况下,容器中的进程只能在该容器的进程运行空间中运行。然而,当容器中存在有恶意进程时,该恶意进程很可能会脱离容器的进程运行空间,继而对宿主机或其他容器展开攻击,这种现象被称为容器逃逸。
相关技术中,为了防范容器逃逸,在某一容器运行前,宿主机可以判断该容器是否拥有一些敏感的系统权限(例如,该敏感的系统权限可以为dac_override_capability系统权限),在宿主机确定该容器拥有敏感的系统权限时,宿主机可以拒绝该容器的运行,从而避免容器中的恶意进程基于该敏感的系统权限对宿主机或其他容器展开攻击。
在实现本申请的过程中,发明人发现现有技术至少存在以下问题:
相关技术仅能在容器运行前被动地对容器逃逸进行防范,而对容器运行后发生的容器逃逸事件无法检测防范,因此,对容器逃逸的防范力度较低。
发明内容
本申请提供了一种容器逃逸检测方法、装置、系统及存储介质,能够提高对容器逃逸的防范力度。
第一方面,提供了一种计算系统中容器逃逸检测方法,该计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则包括至少一组预设系统调用顺序,每组预设系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;该方法包括:所述逃逸检测组件接收所述容器监测组件上报的被监测容器触发的多个系统调用的信息;所述逃逸检测组件将所述多个系统调用的发生顺序与所述逃逸检测规则中的至少一组预设系统调用顺序进行匹配,并根据匹配结果确定所述被监测容器是否发生逃逸。
在容器逃逸发生的过程中,容器中的恶意进程会不断地通过暴力破解的方式尝试获取宿主机文件的句柄,在获取到宿主机文件的句柄后,该恶意进程可以篡改宿主机中的敏感文件,从而完成容器逃逸攻击,而在暴力破解宿主机文件句柄的过程中,恶意进程往往需要按照一定的顺序使用宿主机中的系统调用(英文:system call)。因此,逃逸检测组件可以根据被监测容器中的进程使用宿主机中的多个系统调用的发生顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性,其中,预设系统调用顺序为发生容器逃逸时,容器中的恶意进程使用宿主机中多个系统调用的预测发生顺序,这使得逃逸检测组件可以对容器运行后发生的容器逃逸事件进行检测,从而提高到了对容器逃逸的防范力度。
具体地,逃逸检测组件上可以预先配置逃逸检测规则,该逃逸检测规则包含至少一组预设系统调用顺序,每组系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序。当逃逸检测组件获取目标顺序信息之后,可以将目标顺序信息与逃逸检测规则中的至少一组预设系统调用顺序进行匹配以确定第一容器逃逸的可能性,也就是可能性标识。
可选地,逃逸检测规则还包括预定义的至少一种与容器逃逸相关的高危系统能力;所述方法还包括:所述逃逸检测组件接收所述容器监测组件上报的被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力;所述逃逸检测组件根据预设的所述逃逸检测规则以及所述被监测容器的启用的系统能力,确定所述被监测容器是否发生逃逸。
Shocker攻击运行需要使用一些特定的对系统调用(system call)的能力,例如使用dac_override的能力或者使用dac_read_search的能力。攻击者在启动(docker run)shocker攻击的时候,docker run的命令中会增加一些特定的系统能力参数。逃逸检测组件可以利用容器启动参数中容器启动的系统能力来检测容器的逃逸可能性,在逃逸检测规则中预先配置高危敏感的系统能力,每种高危系统能力对应一个逃逸可能性(可能性标识)。容器监测组件通过调用docker.socket接口可以获取容器启动参数,并上报到容器逃逸检测组件,容器逃逸检测组件根据预设的所述逃逸检测规则以及所述被监测容器的启用的系统能力,确定所述被监测容器是否发生逃逸。可选的,所述逃逸检测组件确定所述被监测容器是否发生逃逸具体包括:
获取目标状态机,所述目标状态机包括初始状态、最终状态以及由所述初始状态转移至所述最终状态所需满足的状态转移条件,所述状态转移条件为输入的顺序信息所指示的顺序与所述预设系统调用顺序相同的条件;
在所述目标状态机处于所述初始状态时,将所述目标顺序信息输入至所述目标状态机;
当所述目标状态机由所述初始状态转移至所述最终状态时,确定所述第一容器发生了容器逃逸。
可选的,所述获取目标状态机,包括:
获取所述被监测容器的第一进程的进程标识;
根据所述第一进程的进程标识查询状态机数据库,所述状态机数据库中存储有至少一组状态机与进程标识的对应关系;
当所述状态机数据库中存储有与所述第一进程的进程标识对应的状态机时,将所述状态机获取为所述目标状态机。
可选的,所述获取目标状态机,还包括:
当所述状态机数据库中没有存储与所述第一进程的进程标识对应的状态机时,根据所述预设系统调用顺序创建状态机;
将创建的所述状态机获取为所述目标状态机。
可选的,所述逃逸检测规则采用目标决策树表达,所述目标决策树包括至少一个分支,每个分支包括系统能力节点和有序的多个系统调用节点,每个分支的系统能力节点对应于一种高危系统能力,每个分支的多个系统调用节点的预设顺序代表启用该分支的系统能力节点所描述的高危系统能力的容器发生逃逸时所触发的多个系统调用的预测发生顺序,所述目标决策树的每个分支的每个节点上都预先设置有相应的可能性标识;所述逃逸检测组件确定所述被监测容器是否发生逃逸具体包括:
所述逃逸检测组件在接收到所述被监测容器的启动参数后,根据获取到的所述被监测容器的启用的系统能力,与所述目标决策树中的各个系统能力节点进行匹配,获取匹配成功的系统能力节点对应的第一可能性标识,将所述第一可能性标识作为所述被监测容器当前的可能性标识;
所述逃逸检测组件在接收到所述被监测容器触发的多个系统调用的信息后,确定所述多个系统调用的实际发生顺序,将所述多个系统调用的实际发生顺序与匹配成功的系统能力节点所在的分支的预设顺序进行匹配,若在匹配成功的系统能力节点所在的分支的第n个系统调用节点匹配成功,获取所述第n个系统调用节点所对应的第二可能性标识,使用所述第二可能性标识更新所述被监测容器当前的可能性标识。
可选地,目标决策树中每个节点还可以进一步设置发生频率信息,每个节点所设置的发生频率表示对应该节点的事件发生的次数要求,当达到该次数要求,才可将该节点设置的可能性标识(逃逸系数)确定为被监测容器的当前的可能性标识。例如,节点a1为系统权限节点,节点a1设置的发生频率为1,则表示只要收到被监测容器启用节点a1对应的系统权限dac_override_capability,就可以确定被监测容器发生逃逸的可能性为可能性标识所指示的4。节点a2为系统调用节点,节点a2设置的发生频率为2,则表示收到被监测容器使用系统调用open_by_handle_at的频率为发生两次,才可以确定被监测容器发生逃逸的可能性为该节点的可能性标识所指示的5。其他节点的发生频率以此类推,不再赘述。
在容器逃逸发生的过程中,容器中的恶意进程往往需要按照一定的顺序使用宿主机中的系统调用,而只有在容器拥有某些系统权限的前提下,容器中的进程才能使用宿主机中的系统调用。因此,在本申请实施例中,逃逸检测组件可以根据被监测容器拥有的系统权限以及目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性。
可选的,所述方法还包括:
接收所述容器监测组件发送的敏感文件篡改信息,所述敏感文件篡改信息是所述容器监测组件在监测到被监测容器中的第二进程对所述宿主机中预设的至少一个敏感文件中的任一敏感文件进行写操作后发送的;基于所述敏感文件篡改信息,确定所述被监测容器发生了容器逃逸。
容器中的恶意进程在进行容器逃逸攻击时会篡改宿主机中的敏感文件,因此,当逃逸检测组件接收到容器监测组件发送的敏感文件篡改信息后,该逃逸检测组件即可确定被监测容器发生了容器逃逸。
可选的,在接收所述容器监测组件发送的敏感文件篡改信息之前,所述方法还包括:
将敏感文件配置信息发送至所述容器监测组件,所述敏感文件配置信息包括至少一个敏感文件的标识,所述敏感文件配置信息用于供所述容器监测组件根据所述敏感文件配置信息确定所述至少一个敏感文件。
可选的,所述方法还包括:
所述逃逸检测组件根据所述被监测容器是否发生逃逸,发送容器逃逸事件报告或逃逸告警。可选的,所述方法还包括:
接收所述容器监测组件发送的非法进程运行信息,所述非法进程运行信息是所述容器监测组件在监测到被监测容器中运行的第三进程的进程标识不属于进程白名单包括的进程标识后发送的,所述进程白名单包括多个合法进程的进程标识;基于所述非法进程运行信息,确定所述被监测容器可能发生了容器逃逸。
当目标容器监测组件监测到被监测容器中运行的第三进程的进程标识不属于进程白名单包括的进程标识后,该容器监测组件可以向逃逸检测组件发送非法进程运行信息。逃逸检测组件接收到该非法进程运行信息后,可以确定被监测容器中存在非法进程,由于该非法进程很可能为恶意进程,因此,逃逸检测组件在接收到该非法进程运行信息后,可以确定被监测容器可能发生了容器逃逸。
可选的,所述容器逃逸检测系统还包括客户端,所述在接收所述容器监测组件发送的非法进程运行信息之前,所述方法还包括:
接收所述容器监测组件发送的所述宿主机中的容器镜像与进程的对应关系;
将所述对应关系发送至所述客户端;
接收所述客户端发送的编辑后的所述对应关系;
根据编辑后的所述对应关系生成所述进程白名单;
将所述进程白名单发送至所述容器监测组件。
可选的,所述逃逸检测组件设置于所述宿主机集群中的第二宿主机中,所述第二宿主机的运算能力大于所述目标宿主机集群中除所述第二宿主机以外的至少一个宿主机。
可选的,所述逃逸检测组件设置于所述第二宿主机部署的一个容器中。
可选的,所述容器逃逸检测系统包括逃逸检测组件集群,所述逃逸检测组件集群包括多个所述逃逸检测组件,所述逃逸检测组件集群部署于防火墙内的可信区域。
第二方面,提供一种容器逃逸检测的方法,所述计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则包括至少一组预设系统调用顺序,每组系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;
所述方法包括:所述容器监测组件对被监测容器的运行情况进行监测;所述容器监测组件向所述逃逸检测组件上报所述被监测容器触发的多个系统调用的信息,所述多个系统调用的发生顺序用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸。
可选地,所述容器监测组件向所述逃逸检测组件上报所述被监测容器的信息,所述被监测容器的信息包括所述被监测容器的ID或所述被监测容器的启动的进程ID;所述容器监测组件接收所述逃逸检测组件根据所述被监测容器的信息下发的审计规则,所述审计规则指示所述容器监测组件对所述被监测容器的系统调用事件进行审计;所述容器监测组件向所述逃逸检测组件上报所述被监测容器触发的多个系统调用的信息包括:所述容器监测组件在监测到所述被监测容器触发的系统调用事件后,向所述逃逸检测组件上报审计报告,所述审计报告携带所述被监测容器触发的多个系统调用的信息。
可选的,所述逃逸检测规则还包括预定义的至少一种与容器逃逸相关的高危系统能力;所述方法还包括:
向所述逃逸检测组件发送所述被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力,所述被监测容器启用的系统能力用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸。具体地,所述启动参数包括至少一个系统能力信息,每个所述系统能力信息用于指示所述被监测容器拥有的一个系统能力,所述启动参数用于供所述逃逸检测组件根据所述启动参数确定所述被监测容器发生容器逃逸的可能性。
可选地,所述容器监测组件向所述逃逸检测组件上报被监测容器的启动参数包括:所述容器监测组件调用docker socket接口获取所述被监测容器的启动参数,向所述逃逸检测组件上报携带所述被监测容器的启动参数的docker run命令。可选的,所述方法还包括:
在监测到被监测容器中的第二进程对所述第一宿主机中预设的至少一个敏感文件中的任一敏感文件进行写操作后,向所述逃逸检测组件发送敏感文件篡改信息,所述敏感文件篡改信息用于供所述逃逸检测组件基于所述敏感文件篡改信息确定所述被监测容器发生了容器逃逸,所述被监测容器是所述第一宿主机中部署的一个容器。
可选的,所述向所述逃逸检测组件发送敏感文件篡改信息之前,所述方法还包括:
接收所述逃逸检测组件发送的敏感文件配置信息,所述敏感文件配置信息包括至少一个敏感文件的标识;
根据所述敏感文件配置信息确定所述至少一个敏感文件。
可选的,所述方法还包括:
在监测到被监测容器中运行的第三进程的进程标识不属于进程白名单包括的进程标识后,向所述逃逸检测组件发送非法进程运行信息,所述非法进程运行信息用于供所述逃逸检测组件基于所述非法进程运行信息确定所述被监测容器可能发生了容器逃逸,所述进程白名单包括多个合法进程的进程标识,所述被监测容器是所述第一宿主机中部署的一个容器。
可选的,所述容器逃逸检测系统还包括客户端,所述向所述逃逸检测组件发送非法进程运行信息之前,所述方法还包括:
向所述逃逸检测组件发送所述第一宿主机中的容器镜像与进程的对应关系,以由所述逃逸检测组件将所述对应关系发送至所述客户端,并接收所述客户端返回的编辑后的所述对应关系;
接收所述进程白名单,所述进程白名单是所述逃逸检测组件根据编辑后的所述对应关系生成的。
可选的,所述逃逸检测组件设置于所述被监测容器所在的宿主机集群中的第二宿主机中,所述第二宿主机的运算能力大于所述被监测容器所在的宿主机集群中除所述第二宿主机以外的至少一个宿主机。
可选的,所述逃逸检测组件设置于所述第二宿主机部署的一个容器中。
可选的,所述容器逃逸检测系统包括逃逸检测组件集群,所述逃逸检测组件集群包括多个所述逃逸检测组件,所述逃逸检测组件集群部署于防火墙内的可信区域。
可选的,所述容器监测组件设置于所述被监测容器所在宿主机部署的一个容器中。
第三方面,提供了一种容器逃逸检测装置,该装置包括至少一个模块,该至少一个模块用于实现上述第一方面或第一方面的任一可选方式所提供的容器逃逸检测方法。
第四方面,提供了一种容器逃逸检测装置,该装置包括至少一个模块,该至少一个模块用于实现上述第二方面或第二方面的任一可选方式所提供的容器逃逸检测方法。
第五方面,提供了一种容器逃逸检测装置,所述装置包括:处理器和存储器;
所述处理器被配置为执行所述存储器中存储的指令,所述处理器通过执行所述指令来实现上述第一方面或第一方面的任一可选方式所提供的容器逃逸检测方法。
第六方面,提供了一种容器逃逸检测装置,所述装置包括:处理器和存储器;
所述处理器被配置为执行所述存储器中存储的指令,所述处理器通过执行所述指令来实现上述第二方面或第二方面的任一可选方式所提供的容器逃逸检测方法。
第七方面,提供一种容器逃逸监测方法,所述计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则包括预定义的至少一种与容器逃逸相关的高危系统能力;所述方法包括:所述逃逸检测组件接收所述容器监测组件上报的被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力;所述逃逸检测组件根据预设的所述逃逸检测规则以及所述被监测容器的启用的系统能力,确定所述被监测容器是否发生逃逸。
可选地,所述逃逸检测规则还包括至少一组预设系统调用顺序,每组系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;所述方法还包括:所述逃逸检测组件接收所述容器监测组件上报的所述被监测容器触发的多个系统调用的信息;所述逃逸检测组件将所述多个系统调用的发生顺序与所述逃逸检测规则中的至少一组预设系统调用顺序进行匹配,并根据匹配结果确定所述被监测容器是否发生逃逸。
可选地,所述容器逃逸检测方法还执行如第一方面的可能的实现方式。
第八方面,提供一种容器逃逸监测方法,所述计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则还包括预定义的至少一种与容器逃逸相关的高危系统能力;所述方法包括:所述容器监测组件对被监测容器的运行情况进行监测;所述容器监测组件在监测到所述被监测容器启动后,向所述逃逸检测组件上报所述被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力,所述被监测容器启用的系统能力用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸。
可选地,所述容器监测组件向所述逃逸检测组件上报被监测容器的启动参数包括:所述容器监测组件调用docker socket接口获取所述被监测容器的启动参数,向所述逃逸检测组件上报携带所述被监测容器的启动参数的docker run命令。
可选地,所述逃逸检测规则还包括至少一组预设系统调用顺序,每组系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;所述方法还包括:所述容器监测组件向所述逃逸检测组件上报所述被监测容器触发的多个系统调用的信息,所述多个系统调用的发生顺序用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸。第九方面,提供了一种计算机可读存储介质或者计算机程序产品,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行上述第一方面或第一方面的任一可选方式所提供的容器逃逸检测方法,或者,使得所述计算机执行上述第二方面或第二方面的任一可选方式所提供的容器逃逸检测方法,或者,使得所述计算机执行上述第七方面或第七方面的任一可选方式所提供的容器逃逸检测方法,或者,使得所述计算机执行上述第八方面或第八方面的任一可选方式所提供的容器逃逸检测方法。
第十方面,提供了一种容器逃逸检测系统,该容器逃逸检测系统包括上述第一方面任一所述的逃逸检测组件和上述第二方面任一所述的容器监测组件。
第十一方面,提供了一种容器逃逸检测系统,该容器逃逸检测系统包括上述第七方面任一所述的逃逸检测组件和上述第八方面任一所述的容器监测组件。本申请提供的技术方案的有益效果是:
通过在计算系统中设置逃逸检测组件和容器监测组件,容器监测组件对被监测容器的运行状况进行监测,上报相关的监测事件到逃逸检测组件,逃逸检测组件预先设置逃逸检测规则,逃逸检测组件根据上报的监测事件以及预设的逃逸检测规则确定被监测容器是否发生逃逸。当监测事件为被监测容器触发的多个系统调用的信息时,逃逸检测组件将多个系统调用的发生顺序与逃逸检测规则中的预设系统调用顺序进行匹配,并根据匹配程度确定被监测容器是否发生逃逸。当监测事件为被监测容器启用的系统能力时,逃逸检测组件将被监测容器启用的系统能力与逃逸检测规则中预设的高位系统能力进行匹配,并根据匹配程度确定被监测容器是否发生逃逸。对高危系统能力的使用检测以及被监测容器触发的系统调用的顺序的检测还可以结合起来。上述对容器的逃逸行为的监测与检测实现了容器执行过程中对容器逃逸攻击的预警和防范,保证了云计算系统的运行安全。。
附图说明
图1A是本申请实施例提供的一种容器逃逸攻击的路径的是示意图。
图1B是本申请实施例提供的一种实施环境的示意图。
图1C是本申请实施例提供的另一种实施环境的示意图。
图2A是本申请实施例提供的一种容器逃逸检测方法的流程图。
图2B是本申请实施例提供的一种目标状态机的示意图。
图2C是本申请实施例提供的另一种目标状态机的示意图。
图2D是本申请实施例提供的一种目标决策树的示意图。
图3是本申请实施例提供的一种容器逃逸检测装置的框图。
图4是本申请实施例提供的一种容器逃逸检测装置的框图。
图5是本申请实施例提供的一种容器逃逸检测装置的框图。
图6是本申请实施例提供的一种容器逃逸检测装置的框图。
图7是本申请实施例提供的一种容器逃逸检测装置的框图。
图8是本申请实施例提供的一种容器逃逸检测系统的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
云计算(英文:Cloud Computing)是一种通过网络以服务的方式提供动态可伸缩的虚拟化资源的计算模式,其中,平台即服务(英文:Platform as a Service;简称:PaaS)是云计算的一种主要的模式。
在PaaS模式中,云计算平台上可以注册有多个用户,对于每个用户,云计算平台都可以为其分配一个宿主机集群,该宿主机集群可以包括至少一个宿主机(英文:Host)。其中,宿主机是一个相对容器(英文:container)而言的概念,所谓宿主机指的就是部署容器的设备,实际应用中,宿主机可以是物理机(如服务器等),也可以是虚拟机。
PaaS模式的用户可以在云计算平台为其分配的宿主机集群中的宿主机上部署容器,以利用部署的容器进行相应的运算。在部署容器的过程中,用户可以从云计算平台的镜像软件仓库中下载容器镜像,并根据下载的容器镜像在宿主机中创建容器。其中,容器镜像可以包括至少一个可读不可写的文件层,在创建容器时,宿主机可以在该容器镜像上创建一个可读且可写的文件层,并创建一个独立的进程运行空间,容器中的进程可以在该进程运行空间中运行,运行中的进程可以读取该至少一个可读不可写的文件层中的文件,也可以对该可读且可写的文件层中的文件进行写操作。
通常情况下,云计算平台可以允许普通用户向镜像软件仓库上传容器镜像,因此,该镜像软件仓库中容器镜像的安全性难以得到保证,这使得基于镜像软件仓库中的容器镜像创建的容器中很可能存在恶意进程,该恶意进程很可能会脱离容器的进程运行空间,继而对容器的宿主机或其他容器展开攻击,这种现象通常被称为容器逃逸。
如图1A所示,实际应用中,容器逃逸一般可以有以下几种攻击路径:
第一种、容器中的恶意进程对容器守护进程(英文:docker daemon)进行攻击。
如图1A中的攻击路径1所示,宿主机1中部署的容器A内的恶意进程a可以对容器A进行攻击,在攻陷了容器A后,该恶意进程a可以脱离容器A的进程运行空间,并对容器守护进程S1进行攻击。
第二种、容器中的恶意进程通过容器守护进程对宿主机中部署的其他容器进行攻击。
如图1A中的攻击路径2所示,宿主机2中部署的容器C内的恶意进程c可以对容器C进行攻击,在攻陷了容器C后,该恶意进程c可以脱离容器C的进程运行空间,并对容器守护进程S2进行攻击,在攻陷了容器守护进程S2后,该恶意进程c可以对宿主机2中部署的容器D进行攻击。
第三种、容器中的恶意进程对宿主机的操作系统(英文:Operating System;简称:OS)进行攻击。
如图1A中的攻击路径3所示,宿主机2中部署的容器D内的恶意进程d可以对容器D进行攻击,在攻陷了容器D后,该恶意进程d可以脱离容器D的进程运行空间,并利用容器共享库对宿主机2的操作系统OS2进行攻击。
第四种、容器中的恶意进程通过宿主机的操作系统对其他容器进行攻击。
如图1A中的攻击路径4所示,宿主机1中部署的容器A内的恶意进程a可以对容器A进行攻击,在攻陷了容器A后,该恶意进程a可以脱离容器A的进程运行空间,并将病毒上传到宿主机1的操作系统OS1的共享存储卷上,宿主机1中部署的容器B内的进程b读取并执行该恶意进程a在共享存储卷中上传的病毒后即会中毒。
第五种、容器中的恶意进程对与该容器位于同一组(英文:group)中的其他容器进行攻击。
如图1A中的攻击路径5所示,宿主机1中部署的容器B内的恶意进程b可以对容器B进行攻击,在攻陷了容器B后,该恶意进程b可以脱离容器B的进程运行空间,并对与容器B位于同一组中的容器C进行攻击。
由于容器逃逸会对宿主机和容器带来较大的安全隐患,因此,防范容器逃逸已经成为保证云计算平台安全性的一个重要环节。
通常情况下,容器中的恶意进程往往需要基于容器拥有的一些敏感的系统权限对宿主机或其他容器展开攻击,例如,该敏感的系统权限可以为dac_override_capability或dac_read_search_capability_等。因此,相关技术中,为了防范容器逃逸,在容器运行前,宿主机可以判断该容器是否拥有一些敏感的系统权限,在宿主机确定容器拥有敏感的系统权限时,宿主机即可确定该容器有可能会发生容器逃逸,因此,宿主机可以拒绝该容器的运行,从而达到防范容器逃逸的目的。
然而,上述相关技术仅能在容器运行前被动地对容器逃逸进行防范,而对容器运行后发生的容器逃逸事件无法检测防范,因此,对容器逃逸的防范力度较低。
本申请实施例提供了一种容器逃逸检测方法,该容器逃逸检测方法可以对容器运行后发生的容器逃逸事件进行检测,因此,可以提高防范容器逃逸的力度。
图1B为本申请实施例提供的容器逃逸检测方法所涉及到的一种实施环境的示意图,如图1B所示,该实施环境可以包括至少一个容器监测组件11(图1B中仅示出了3个容器监测组件11)、逃逸检测组件12、服务组件13、存储组件14和客户端15。
其中,如图1B所示,对于云计算平台为用户A分配的宿主机集群Q而言,该宿主机集群Q中的每个宿主机n上均可以设置有一个容器监测组件11,可选的,某一宿主机中的容器监测组件11可以设置于该宿主机部署的一个容器中。其中,某一宿主机中设置的容器监测组件11可以对该宿主机中部署的容器进行监测,并将监测结果发送至逃逸检测组件12中。
逃逸检测组件12可以设置于宿主机集群Q中的某一个宿主机上,可选的,逃逸检测组件12可以设置于该宿主机部署的一个容器中。需要指出的是,逃逸检测组件12通常可以设置于宿主机集群Q中运算能力较强的一个宿主机中,实际实现时,该逃逸检测组件12可以设置于宿主机集群Q中运算能力最强的一个宿主机中。逃逸检测组件12可以接收宿主机集群Q中设置的各个容器监测组件11发送的监测结果,并可以根据接收到的监测结果确定宿主机集群Q中各宿主机中的容器发生容器逃逸的可能性,逃逸检测组件12还可以向服务组件13发送容器逃逸事件报告,该容器逃逸事件报告可以包括宿主机集群Q中某一宿主机中的容器发生容器逃逸的可能性。
服务组件13和存储组件14可以设置于防火墙内的可信区域G中,该服务组件13可以接收逃逸检测组件12发送的容器逃逸事件报告,服务组件13可以将接收到的容器逃逸事件报告存储于存储组件14中。
客户端15可以为网页客户端或者应用程序客户端,该客户端15可以在用户A的触发下向服务组件13发送查询请求,以查询宿主机集群Q的容器逃逸事件报告,服务组件13可以在接收到客户端15发送的查询请求后,从存储组件14中获取宿主机集群Q的容器逃逸事件报告,并将该容器逃逸事件报告发送至该客户端15。
图1C为本申请实施例提供的容器逃逸检测方法所涉及到的另一种实施环境的示意图,如图1C所示,该实施环境可以包括至少一个容器监测组件21、逃逸检测组件22、服务组件23、存储组件24和客户端25。
其中,容器监测组件21、服务组件23、存储组件24和客户端25分别与图1B中所示的容器监测组件11、服务组件13、存储组件14和客户端15的部署方式相同,且,容器监测组件21、服务组件23、存储组件24和客户端25分别与图1B中所示的容器监测组件11、服务组件13、存储组件14和客户端15所执行的技术过程同理。
与图1B中的逃逸检测组件12不同的是,图1C中的逃逸检测组件22设置于防火墙内的可信区域G中,该逃逸检测组件22可以接收多个宿主机集群(图1C中仅示出了两个宿主机集群U和V)中的容器监测组件21发送的监测结果,并可以根据接收到的监测结果确定多个宿主机集群中的宿主机发生容器逃逸的可能性。可选的,为了保证逃逸检测组件22的高可用性(英文:High Availability;简称:HA),在图1C所示的实施环境中,可以部署多个逃逸检测组件22(图1C中仅示出了两个逃逸检测组件22),这样就可以保证某一逃逸检测组件22发生故障不会影响对容器逃逸的检测。
图2A为本申请实施例提供的一种容器逃逸检测方法的流程图,该容器逃逸检测方法可以应用于图1B或图1C所示的实施环境中,如图2A所示,该容器逃逸检测方法可以包括以下步骤:
步骤201、在监测到第一容器中的第一进程使用第一宿主机中的系统调用后,目标容器监测组件向逃逸检测组件发送多个系统调用信息。
如上所述,本申请实施例提供的容器逃逸检测方法所涉及到的实施环境中可以包括至少一个容器监测组件。其中,每个容器监测组件均可以设置于宿主机集群中的一个宿主机上,用于对该宿主机中的容器进行监测,在进行容器逃逸检测时,每个容器监测组件所执行的技术过程都是同理的,因此,本申请实施例仅以该至少一个容器监测组件中的一个容器监测组件(也即是目标容器监测组件)为例对本申请实施例提供的容器逃逸检测方法进行说明。
其中,第一宿主机可以是待进行容器逃逸检测的宿主机集群中的一个宿主机,换句话说,该第一宿主机可以是云计算平台分配给某一用户的宿主机集群中的一个宿主机,目标容器监测组件是设置于该第一宿主机中的容器监测组件,第一容器为该第一宿主机中部署的一个容器(第一容器为被监测的多个容器中的任意一个容器),第一进程为该第一容器中运行的一个进程。
由于在容器逃逸发生的过程中,容器中的恶意进程会不断地通过暴力破解的方式尝试获取宿主机文件的句柄,在获取到宿主机文件的句柄后,该恶意进程可以篡改宿主机中的敏感文件,从而完成容器逃逸攻击,而在暴力破解宿主机文件句柄的过程中,恶意进程往往需要按照一定的顺序使用宿主机中的系统调用(英文:system call),例如,恶意进程可以按照如下顺序使用宿主机中的系统调用:open_by_handle_at、fstat、fcntl、getdents和open_by_handle_at。因此,在进行容器逃逸检测的过程中,容器监测组件需要对宿主机中部署的容器中的系统调用事件进行监控,并将监控结果发送至逃逸检测组件,以由逃逸检测组件根据该监控结果确定宿主机中的容器发生容器逃逸的可能性。
在步骤201中,目标容器监测组件可以对第一宿主机中部署的容器中的系统调用事件进行监控,当监测到第一容器中的第一进程使用第一宿主机中的系统调用时,该目标容器监测组件可以生成多个系统调用信息,并将该多个系统调用信息发送至逃逸检测组件中,以由逃逸检测组件根据该多个系统调用信息确定第一容器发生容器逃逸的可能性。其中,每个系统调用信息可以与第一进程使用的第一宿主机中的一个系统调用相对应,每个系统调用信息可以包括对应的系统调用的标识。
在Linux系统中,可以利用audit审计模块对第一宿主机中部署的容器中的系统调用事件进行监控,该audit审计模块中可以配置有多个审计规则,每个审计规则可以为容器中的进程使用宿主机中的某一系统调用的规则。该audit审计模块可以在第一进程触发审计规则时,也即是,在第一进程使用第一宿主机中的系统调用时,生成审计报告,并将该审计报告发送至目标容器监测组件,目标容器监测组件接收到该审计报告后,可以基于该审计报告生成系统调用信息,并将该系统调用信息发送至逃逸检测组件。如下所示为一个示例性的审计报告:
arch=c00003e syscall=304 success=no exit=-116 a0=3 a1=7ffecb757ac0 a2=0 a3=4 item=0 ppid=24057 pid=24785 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 tty=pts3 ses=4284967295comm=”shocker”exe=”/app/shocker”subj=system_u:system_r:spc_t:s0 key=67fd5ccc277e19114d7c4516b71743180149b26bc745c94e23c60bb8c933543_gra_highrisk_syscall_24057。
在该审计报告中,字段:syscall=304表示第一进程使用了第一宿主机中编号为304的系统调用,其中,该系统调用为open_by_handle_at。
字段:success=no表示第一进程对第一宿主机中编号为304的系统调用使用不成功。
字段:key=67fd5ccc277e19114d7c4516b71743180149b26bc745c94e23c60bb8c933543_gra_highrisk_syscall_24057表示第一进程触发的审计规则为=67fd5ccc277e19114d7c4516b71743180149b26bc745c94e23c60bb8c933543_gra_highrisk_syscall_24057。
步骤202、逃逸检测组件接收目标容器监测组件发送的多个系统调用信息,并根据该多个系统调用信息获取目标顺序信息。
其中,该目标顺序信息用于指示第一进程使用第一宿主机中的多个系统调用的发生顺序。本申请中,目标顺序信息为一种表达,该目标顺序信息为第一容器(被监测容器)触发的n个系统调用的发生顺序。
在一种可能的实现方式中,每个系统调用信息还可以携带有生成时间,该生成时间用于指示目标容器监测组件生成该系统调用信息的时间,逃逸检测组件可以根据每个系统调用信息携带的生成时间获取该多个系统调用信息对应的多个系统调用的发生顺序,而后,逃逸检测组件可以基于该多个系统调用信息对应的多个系统调用的顺序生成目标顺序信息,其中,该多个系统调用信息对应的多个系统调用的发生顺序即为该目标顺序信息所指示的顺序。本申请中,多个系统调用的发生顺序可以根据各个系统调用的生成时间确定,也可以根据各个系统调用的触发时间确定,或者可以根据各个系统调用的执行时间确定,或者也可以根据各个系统调用的接收时间确定。
例如,逃逸检测组件接收到目标容器监测组件发送的3个系统调用信息,该3个系统调用信息分别为系统调用信息a、系统调用信息b和系统调用信息c。其中,系统调用信息a与第一进程使用的系统调用p相对应,系统调用信息a携带的生成时间为14:00,系统调用信息b与第一进程使用的系统调用q相对应,系统调用信息b携带的生成时间为14:01,系统调用信息c与第一进程使用的系统调用k相对应,系统调用信息c携带的生成时间为14:02。则逃逸检测组件可以根据该3个系统调用信息携带的生成时间获取该3个系统调用信息对应的3个系统调用的发生顺序,该发生顺序为:系统调用p、系统调用q和系统调用k,而后,逃逸检测组件可以根据该顺序生成目标顺序信息,其中,目标顺序信息所指示的顺序即为:系统调用p、系统调用q和系统调用k。
在另一种可能的实现方式中,逃逸检测组件可以根据接收到该多个系统调用信息的顺序获取该多个系统调用信息对应的多个系统调用的顺序,而后,逃逸检测组件可以基于该多个系统调用信息对应的多个系统调用的顺序生成目标顺序信息,其中,该多个系统调用信息对应的多个系统调用的顺序即为该目标顺序信息所指示的顺序。
例如,逃逸检测组件接收到目标容器监测组件发送的3个系统调用信息,该3个系统调用信息分别为系统调用信息a、系统调用信息b和系统调用信息c。其中,系统调用信息a与第一进程使用的系统调用p相对应,逃逸检测组件在14:00接收到该系统调用信息a,系统调用信息b与第一进程使用的系统调用q相对应,逃逸检测组件在14:01接收到该系统调用信息b,系统调用信息c与第一进程使用的系统调用k相对应,逃逸检测组件在14:02接收到该系统调用信息c。则逃逸检测组件可以根据接收到该3个系统调用信息的顺序获取该3个系统调用信息对应的3个系统调用的顺序,该顺序为:系统调用p、系统调用q和系统调用k,而后,逃逸检测组件可以根据该顺序生成目标顺序信息,其中,目标顺序信息所指示的顺序即为:系统调用p、系统调用q和系统调用k。
步骤203、逃逸检测组件根据目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性。
其中,该预设系统调用顺序为发生容器逃逸时,容器中的恶意进程使用宿主机中多个系统调用的顺序。实际实现时,该预设系统调用顺序可以由技术人员根据已知的容器逃逸事件中容器的恶意进程使用宿主机中多个系统调用的顺序进行设定。例如,比较常见的一种容器逃逸攻击是shocker攻击,那么技术人员可以根据发生shocker攻击时,恶意进程使用系统调用的顺序设定该预设系统调用顺序。
如上所述,在容器逃逸发生的过程中,恶意进程往往需要按照一定的顺序使用宿主机中的系统调用,因此,逃逸检测组件可以根据第一进程使用第一宿主机中的多个系统调用的顺序(也即是目标顺序信息所指示的顺序)与预设系统调用顺序之间的相似程度来确定第一容器发生容器逃逸的可能性。
通常情况下,目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度越高,第一容器发生容器逃逸的可能性就越高,目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度越低,第一容器发生容器逃逸的可能性就越低。
本申请实施例提供了两种根据目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度确定第一容器发生容器逃逸的可能性的方式,下面,本申请实施例将对这两种方式进行一一说明:
第一种方式:逃逸检测组件基于状态机(英文:Finite-state machine)确定目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,并根据该相似程度确定第一容器发生容器逃逸的可能性。
其中,状态机是一种数学模型,该数学模型可以包括有限个状态以及这些状态之间相互转移所需满足的状态转移条件。其中,该有限个状态可以包括初始状态和最终状态,或者,该有限个状态可以包括初始状态、最终状态和至少一个中间状态,其中,状态机可以在转移到最终状态时进行相应的信息输出。
在本申请实施例中,逃逸检测组件可以根据第一进程的标识查询状态机数据库,当该状态机数据库中存储有第一进程的标识对应的状态机时,逃逸检测组件可以将该状态机获取为目标状态机,当该状态机数据库中没有存储第一进程的标识对应的状态机时,逃逸检测组件可以根据该预设系统调用顺序创建状态机,并将创建的状态机获取为目标状态机。其中,该状态机数据库中存储有至少一组状态机与进程标识的对应关系,该目标状态机包括初始状态、最终状态以及由初始状态转移至最终状态所需满足的状态转移条件,该状态转移条件为输入的顺序信息所指示的顺序与预设系统调用顺序相同的条件。
实际实现时,该目标状态机除了可以包括初始状态和最终状态外,还可以包括至少一个中间状态,相应地,在这种情况下,状态转移条件可以包括多个子条件,其中,该多个子条件可以包括初始状态转移至与该初始状态相邻的中间状态所需满足的子条件、相邻的两个中间状态转移所需满足的子条件以及由与该最终状态相邻的中间状态转移至该最终状态所需满足的子条件。
例如,如图2B所示,该目标状态机可以包括初始状态C、最终状态Z以及由初始状态C转移至最终状态Z所需满足的状态转移条件T,该状态转移条件T为输入的顺序信息所指示的顺序为系统调用a、b、c、d、e和f的条件,且,预设系统调用顺序为系统调用a、b、c、d、e和f的顺序。
又例如,如图2C所示,该目标状态机可以包括初始状态C、中间状态J1、中间状态J2和最终状态Z,该目标状态机还可以包括由初始状态C转移至中间状态J1所需满足的子条件T1、由中间状态J1转移至中间状态J2所需满足的子条件T2和由中间状态J2转移至最终状态Z所需满足的子条件T3,该子条件T1、T2和T3组成了状态转移条件,其中,该子条件T1为输入的顺序信息所指示的顺序中的前两个系统调用为a和b的条件,该子条件T2为输入的顺序信息所指示的中间两个系统调用为c和d的条件,该子条件T3为输入的顺序信息所指示的后两个系统调用为e和f的条件,且,预设系统调用顺序为系统调用a、b、c、d、e和f的顺序。
在获取了目标状态机后,逃逸检测组件可以基于该目标状态机确定目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,并根据该相似程度确定第一容器发生容器逃逸的可能性。
可选的,在目标状态机处于初始状态时,逃逸检测组件可以将目标顺序信息输入至该目标状态机,当目标状态机由初始状态转移至最终状态时,说明目标顺序信息所指示的顺序与预设系统调用顺序相同,因此,逃逸检测组件可以.确定目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度为100%,在这种情况下,逃逸检测组件可以确定第一容器发生了容器逃逸。
第二种方式、逃逸检测组件根据第一容器拥有的系统权限以及目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性。
如上所述,在容器逃逸发生的过程中,容器中的恶意进程往往需要按照一定的顺序使用宿主机中的系统调用,而只有在容器拥有某些系统权限的前提下,容器中的进程才能使用宿主机中的系统调用。因此,在本申请实施例中,逃逸检测组件可以根据第一容器拥有的系统权限以及目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性。需要指出的是,在Linux系统中,系统权限也可以称为能力(英文:capability)。
可选的,目标容器监测组件可以通过docker socket接口获取第一容器的启动参数,该启动参数为第一宿主机创建该第一容器时采用的docker run命令中包括的参数,该启动参数可以包括至少一个权限信息,其中,每个权限信息用于指示第一容器拥有的一种系统权限,每个权限信息也指示第一容器启用的一种系统能力。目标容器监测组件可以将该第一容器的启动参数发送至逃逸检测组件中,以使该逃逸检测组件获取第一容器拥有的系统权限(系统能力),并根据第一容器拥有的系统权限以及目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性。
可选的,逃逸检测组件中可以设置有多个权限提取插件(英文:plugin),每个权限提取插件可以与一个目标权限信息相对应,每个权限提取插件用于从第一容器的启动参数包括的至少一个权限信息中提取与该权限提取插件对应的目标权限信息,其中,每个目标权限信息所指示的系统权限为发生容器逃逸的容器所拥有的系统权限。
在提取了至少一个目标权限信息后,逃逸检测组件可以根据该至少一个目标权限信息以及目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性。
可选的,逃逸检测组件可以获取目标决策树,该目标决策树可以包括至少一个分支,每个分支包括有序的多个节点。该多个节点中的每个节点与一个可能性标识对应,该可能性标识用于指示发生容器逃逸的可能性。该多个节点包括系统权限节点和与系统权限节点相连的有序的多个系统调用节点,其中,系统权限节点与一个系统权限对应,每个系统调用节点与一个系统调用对应,与多个系统调用节点所对应的多个系统调用的顺序与预设系统调用顺序相同。本申请中,系统权限节点也可称为系统能力节点。
例如,如图2D所示,目标决策树可以包括两个分支1和2,其中,分支1包括根节点g、节点a1、节点a2、节点a3、节点a4、节点a5和节点a6,分支2包括根节点g、节点b1、节点b2、节点b3、节点b4、节点b5和节点b6。其中,节点a1为系统权限节点,其与系统权限dac_override_capability对应,其对应的可能性标识为4,节点a2为系统调用节点,其与系统调用open_by_handle_at对应,其对应的可能性标识为5,节点a3为系统调用节点,其与系统调用fstat对应,其对应的可能性标识为5,节点a4为系统调用节点,其与系统调用fcntl对应,其对应的可能性标识为6,节点a5为系统调用节点,其与系统调用getdents对应,其对应的可能性标识为6,节点a6为系统调用节点,其与系统调用open_by_handle_at对应,其对应的可能性标识为8。节点b1为系统权限节点,其与系统权限dac_read_search_capability对应,其对应的可能性标识为4,节点b2为系统调用节点,其与系统调用open_by_handle_at对应,其对应的可能性标识为5,节点b3为系统调用节点,其与系统调用fstat对应,其对应的可能性标识为5,节点b4为系统调用节点,其与系统调用fcntl对应,其对应的可能性标识为6,节点b5为系统调用节点,其与系统调用getdents对应,其对应的可能性标识为6,节点b6为系统调用节点,其与系统调用open_by_handle_at对应,其对应的可能性标识为8。其中,预设系统调用的顺序为:open_by_handle_at、fstat、fcntl、getdents和open_by_handle_at,可能性标识的取值范围可以为[0,10],其中,可能性标识的数值越大说明发生容器逃逸的可能性越高。在获取了目标决策树之后,逃逸检测组件可以从该目标决策树包括的至少一个分支中确定至少一个目标分支,该至少一个目标分支与该逃逸检测组件从第一容器的启动参数包括的至少一个权限信息中提取的至少一个目标权限信息一一对应,其中,每个目标分支包括的系统权限节点所对应的系统权限与该目标分支对应的目标权限信息所指示的系统权限相同。
例如,当逃逸检测组件从第一容器的启动参数包括的至少一个权限信息中提取的目标权限信息所指示的系统权限为dac_read_search_capability时,逃逸检测组件可以将图2D中的分支2确定为目标分支。
在确定了至少一个目标分支后,逃逸检测组件可以基于该至少一个目标分支确定第一容器发生容器逃逸的可能性。
可选的,对于每个目标分支,当目标顺序信息所指示的多个系统调用中的前n个系统调用与该目标分支中包括的多个系统调用节点中的前n个系统调用节点所对应的n个系统调用的顺序一致时,逃逸检测组件可以获取目标分支中的第n个系统调用节点所对应的可能性标识,其中,n为大于或等于1的正整数。而后,逃逸检测组件可以根据该可能性标识确定第一容器发生容器逃逸的可能性。
例如,目标顺序信息所指示的顺序可以为:open_by_handle_at、fstat、fcntl和open_by_handle_at,其前3个系统调用与分支2中的前3个系统调用节点所对应的3个系统调用的顺序(open_by_handle_at、fstat和fcntl)一致,则逃逸检测组件可以获取分支2中的第3个系统调用节点所对应的可能性标识6,逃逸检测组件可以根据该可能性标识确定第一容器发生容器逃逸的可能性。
需要指出的是,本申请实施例中逃逸检测组件还可以根据目标容器监测组件上报的其他信息确定第一容器发生容器逃逸的可能性。
在一种可能的实现方式中,目标容器监测组件可以向逃逸检测组件上报敏感文件篡改信息,逃逸检测组件可以根据该敏感文件篡改信息确定第一容器发生容器逃逸的可能性。
可选的,逃逸检测组件可以将敏感文件配置信息发送至该目标容器监测组件中,其中,该敏感文件配置信息可以包括第一宿主机中预设的至少一个敏感文件的标识。目标容器监测组件可以根据该敏感文件配置信息确定第一宿主机中预设的至少一个敏感文件,并对该至少一个敏感文件进行写操作的监控。当监测到第一容器中的第二进程(该第二进程可以是第一进程,也可以是与第一进程不同的进程)对该至少一个敏感文件中的任一敏感文件进行写操作后,目标容器监测组件可以向逃逸检测组件发送敏感文件篡改信息。其中,在Linux系统中,目标容器监测组件可以基于inotify模块中的观测器watcher对第一宿主机中预设的至少一个敏感文件进行写操作的监控。
如上所述,容器中的恶意进程在进行容器逃逸攻击时会篡改宿主机中的敏感文件,因此,当逃逸检测组件接收到目标容器监测组件发送的敏感文件篡改信息后,该逃逸检测组件即可确定第一容器发生了容器逃逸。
实际实现时,该敏感文件配置信息还可以包括第一容器中预设的至少一个敏感文件的标识,目标容器监测组件可以根据该敏感文件配置信息确定第一容器中预设的至少一个敏感文件,并对该第一容器中至少一个敏感文件进行写操作的监控。当监测到第一容器中的第二进程对该第一容器中至少一个敏感文件中的任一敏感文件进行写操作后,目标容器监测组件也可以向逃逸检测组件发送敏感文件篡改信息。在这种情况下,逃逸检测组件接收到该敏感文件篡改信息后,可以确定第一容器中可能存在恶意进程,因此,此时逃逸检测组件可以确定第一容器可能会发生容器逃逸。
在另一种可能的实现方式中,目标容器监测组件可以向逃逸检测组件发送非法进程运行信息,逃逸检测组件可以根据该非法进程运行信息确定第一容器发生容器逃逸的可能性。
可选的,目标容器监测组件可以向逃逸检测组件发送第一宿主机的容器镜像与进程的对应关系,逃逸检测组件可以将该对应关系发送至客户端,以由客户端将该对应关系展示给用户。用户可以对该对应关系进行编辑,例如,用户可以在该对应关系中增加某些进程,或者,删除某些进程。客户端可以将经过用户编辑的对应关系发送至逃逸检测组件,逃逸检测组件接收到该对应关系后,可以基于该对应关系中包括的进程生成进程白名单,该进程白名单可以包括多个合法进程的进程标识。逃逸检测组件可以将该进程白名单发送至目标容器监测组件。
目标容器监测组件可以对第一容器中运行的进程进行监控,当目标容器监测组件监测到第一容器中运行的第三进程(该第三进程可以是第一进程,也可以是与第一进程不同的进程)的进程标识不属于进程白名单包括的进程标识后,该目标容器监测组件可以向逃逸检测组件发送非法进程运行信息。逃逸检测组件接收到该非法进程运行信息后,可以确定第一容器中存在非法进程,由于该非法进程很可能为恶意进程,因此,逃逸检测组件在接收到该非法进程运行信息后,可以确定第一容器可能发生了容器逃逸。
需要指出的是,在Linux系统中,目标容器监测组件可以利用cAdvisor模块对第一容器中运行的进程进行监控。
步骤204、逃逸检测组件在确定第一容器发生容器逃逸的可能性后,生成并向服务组件发送容器逃逸事件报告。
该容器逃逸事件报告可以包括第一宿主机中的第一容器发生容器逃逸的可能性。
服务组件在接收到该容器逃逸事件报告后,可以将接收到的容器逃逸事件报告存储于存储组件中。
客户端可以在用户的触发下向服务组件发送查询请求,以查询第一容器的容器逃逸事件报告,服务组件可以在接收到客户端发送的查询请求后,从存储组件中获取第一容器的容器逃逸事件报告,并将该容器逃逸事件报告发送至该客户端。
综上所述,本申请实施例提供的容器逃逸检测方法,通过逃逸检测组件根据第一容器中的第一进程使用第一宿主机中的多个系统调用的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性,其中,预设系统调用顺序为发生容器逃逸时,容器中的恶意进程使用宿主机中多个系统调用的顺序,使得逃逸检测组件可以对容器运行后发生的容器逃逸事件进行检测,从而提高到了对容器逃逸的防范力度。
下述为本申请的装置实施例,可以用于执行本申请的方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图3,其示出了本申请实施例提供的一种容器逃逸检测装置300的框图,该容器逃逸检测装置300可以应用于图1B或图1C所示的逃逸检测组件中。参见图3,该容器逃逸检测装置300可以包括第一接收模块301、获取模块302和第一确定模块303。
第一接收模块301,用于接收目标容器监测组件发送的多个系统调用信息,每个系统调用信息是该目标容器监测组件在监测到第一容器中的第一进程使用第一宿主机中的系统调用后发送的,该系统调用信息携带该第一进程所使用的系统调用的标识,该目标容器监测组件是该至少一个容器监测组件中的任一容器监测组件,该第一宿主机是该目标容器监测组件监测的宿主机,该第一容器是该第一宿主机中部署的一个容器。
获取模块302,用于根据该多个系统调用信息获取目标顺序信息,该目标顺序信息用于指示该第一进程使用该第一宿主机中的多个系统调用的顺序。
第一确定模块303,用于根据该目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定该第一容器发生容器逃逸的可能性,该预设系统调用顺序为发生容器逃逸时,容器中的恶意进程使用宿主机中多个系统调用的顺序。
在本申请的一个实施例中,该第一确定模块303,包括:
获取子模块,用于获取目标状态机,该目标状态机包括初始状态、最终状态以及由该初始状态转移至该最终状态所需满足的状态转移条件,该状态转移条件为输入的顺序信息所指示的顺序与该预设系统调用顺序相同的条件;
输入子模块,用于在该目标状态机处于该初始状态时,将该目标顺序信息输入至该目标状态机;
第一确定子模块,用于在该目标状态机由该初始状态转移至该最终状态时,确定该第一容器发生了容器逃逸。
在本申请的一个实施例中,该第一确定模块303,包括:
接收子模块,用于接收该目标容器监测装置发送的该第一容器的启动参数,该启动参数包括至少一个权限信息,每个权限信息用于指示该第一容器拥有的一种系统权限;
第二确定子模块,用于根据该启动参数以及该目标顺序信息所指示的顺序与该预设系统调用顺序之间的相似程度,确定该第一容器发生容器逃逸的可能性。
在本申请的一个实施例中,该第二确定子模块,用于:
从该启动参数包括的至少一个权限信息中获取至少一个目标权限信息,每个目标权限信息所指示的系统权限为发生容器逃逸的容器所拥有的系统权限;
根据该至少一个目标权限信息以及该目标顺序信息所指示的顺序与该预设系统调用顺序之间的相似程度,确定该第一容器发生容器逃逸的可能性。
在本申请的一个实施例中,该第二确定子模块,用于:
获取目标决策树,该目标决策树包括至少一个分支,每个分支包括有序的多个节点,该多个节点中的每个节点与一个可能性标识对应,该可能性标识用于指示发生容器逃逸的可能性,该多个节点包括系统权限节点和与该系统权限节点相连的有序的多个系统调用节点,该系统权限节点与一个系统权限对应,每个系统调用节点与一个系统调用对应,与该多个系统调用节点所对应的多个系统调用的顺序与该预设系统调用顺序相同;
从该至少一个分支中确定至少一个目标分支,该至少一个目标分支与该至少一个目标权限信息一一对应,每个目标分支包括的系统权限节点所对应的系统权限与该目标分支对应的目标权限信息所指示的系统权限相同;
对于每个目标分支,当该目标顺序信息所指示的多个系统调用中的前n个系统调用与该目标分支中包括的多个系统调用节点中的前n个系统调用节点所对应的n个系统调用的顺序一致时,获取该目标分支中的第n个系统调用节点所对应的可能性标识,n为大于或等于1的正整数;
根据该可能性标识确定该第一容器发生容器逃逸的可能性。
本申请实施例还提供了另一种容器逃逸检测装置400,如图4所示,该容器逃逸检测装置400除了可以包括容器逃逸检测装置300包括的各个模块外,还可以包括第二接收模块304、第二确定模块305、第三接收模块306和第三确定模块307。
第二接收模块304,用于接收该目标容器监测组件发送的敏感文件篡改信息,该敏感文件篡改信息是该目标容器监测组件在监测到该第一容器中的第二进程对该第一宿主机中预设的至少一个敏感文件中的任一敏感文件进行写操作后发送的。
第二确定模块305,用于基于该敏感文件篡改信息,确定该第一容器发生了容器逃逸。
第三接收模块306,用于接收该目标容器监测组件发送的非法进程运行信息,该非法进程运行信息是该目标容器监测组件在监测到该第一容器中运行的第三进程的进程标识不属于进程白名单包括的进程标识后发送的,该进程白名单包括多个合法进程的进程标识。
第三确定模块307,用于基于该非法进程运行信息,确定该第一容器可能发生了容器逃逸。
综上所述,本申请实施例提供的容器逃逸检测装置,通过根据第一容器中的第一进程使用第一宿主机中的多个系统调用的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性,其中,预设系统调用顺序为发生容器逃逸时,容器中的恶意进程使用宿主机中多个系统调用的顺序,从而可以对容器运行后发生的容器逃逸事件进行检测,提高到了对容器逃逸的防范力度。
请参考图5,其示出了本申请实施例提供的一种容器逃逸检测装置500的框图,该容器逃逸检测装置500可以应用于图1B或图1C所示的容器监测组件中。参见图5,该容器逃逸检测装置500可以包括生成模块501和第一发送模块502。
生成模块501,用于在监测到第一容器中的第一进程使用第一宿主机中的系统调用后,生成多个系统调用信息,每个系统调用信息携带该第一进程所使用的系统调用的标识,该第一宿主机是该目标容器监测组件监测的宿主机,该第一容器是该第一宿主机中部署的一个容器。
第一发送模块502,用于向该逃逸检测组件发送该多个系统调用信息,该多个系统调用信息用于供该逃逸检测组件根据该多个系统调用信息获取目标顺序信息,并根据该目标顺序信息所指示的顺序与预设系统调用顺序之间的相似程度,确定该第一容器发生容器逃逸的可能性,该目标顺序信息用于指示该第一进程使用该第一宿主机中的多个系统调用的顺序,该预设系统调用顺序为发生容器逃逸时,容器中的恶意进程使用宿主机中多个系统调用的顺序。
本申请实施例还提供了另一种容器逃逸检测装置600,如图6所示,该容器逃逸检测装置600除了可以包括容器逃逸检测装置500包括的各个模块外,还可以包括第二发送模块503、第三发送模块504和第四发送模块505。
第二发送模块503,用于向该逃逸检测组件发送该第一容器的启动参数,该启动参数包括至少一个权限信息,每个权限信息用于指示该第一容器拥有的一个系统权限,该启动参数用于供该逃逸检测组件根据该启动参数以及该目标顺序信息所指示的顺序与该预设系统调用顺序之间的相似程度,确定该第一容器发生容器逃逸的可能性。
第三发送模块504,用于在监测到该第一容器中的第二进程对该第一宿主机中预设的至少一个敏感文件中的任一敏感文件进行写操作后,向该逃逸检测组件发送敏感文件篡改信息,该敏感文件篡改信息用于供该逃逸检测组件基于该敏感文件篡改信息确定该第一容器发生了容器逃逸。
第四发送模块505,用于在监测到该第一容器中运行的第三进程的进程标识不属于进程白名单包括的进程标识后,向该逃逸检测组件发送非法进程运行信息,该非法进程运行信息用于供该逃逸检测组件基于该非法进程运行信息确定该第一容器可能发生了容器逃逸,该进程白名单包括多个合法进程的进程标识。
综上所述,本申请实施例提供的容器逃逸检测装置,通过在第一容器中的第一进程使用第一宿主机中的系统调用后向逃逸检测组件发送系统调用信息,使得逃逸检测组件根据第一容器中的第一进程使用第一宿主机中的多个系统调用的顺序与预设系统调用顺序之间的相似程度,确定第一容器发生容器逃逸的可能性,其中,预设系统调用顺序为发生容器逃逸时,容器中的恶意进程使用宿主机中多个系统调用的顺序,从而可以对容器运行后发生的容器逃逸事件进行检测,提高到了对容器逃逸的防范力度。
本申请实施例提供了一种容器逃逸检测装置700,该容器逃逸检测装置700可以为服务器,或者其它可以部署容器的计算设备。该容器逃逸检测装置700可以用于执行上述方法实施例中提供的容器逃逸检测方法。
参见图7,该容器逃逸检测装置700包括处理器,例如中央处理单元(centralprocessing unit,CPU)701。该容器逃逸检测装置700包括存储器,例如随机存取存储器(random-access memory,RAM)702和只读存储器(read-only memory,ROM)703的系统存储器704。该容器逃逸检测装置700包括连接系统存储器704和中央处理单元701的系统总线705。该容器逃逸检测装置700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(input/output,I/O)系统706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。
该基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中该显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。该基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。
该大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。该大容量存储设备707及其相关联的计算机可读介质为容器逃逸检测装置700提供非易失性存储。也就是说,该大容量存储设备707可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,该计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知该计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。
根据本申请的各种实施例,该容器逃逸检测装置700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即容器逃逸检测装置700可以通过连接在该系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。
该存储器还包括一个或者一个以上的程序,该一个或者一个以上程序存储于存储器中,中央处理器701通过执行该一个或一个以上程序来实现上述方法实施例提供的容器逃逸检测方法。
请参考图8,其示出了本申请实施例提供的一种容器逃逸检测系统800的框图,该容器逃逸检测系统800可以包括逃逸检测组件801和至少一个容器监测组件802(图8中仅示出了一个容器监测组件802)。
其中,逃逸检测组件801用于执行上述方法实施例中逃逸检测组件所执行的容器逃逸检测方法。
容器监测组件802用于执行上述方法实施例中目标容器监测组件所执行的容器逃逸检测方法。
本申请实施例还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成本申请方法实施例所示的容器逃逸检测方法。例如,该非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本申请实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行本申请方法实施例所示的容器逃逸检测方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (27)

1.一种计算系统中容器逃逸检测方法,其特征在于,所述计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则包括至少一组预设系统调用顺序,每组预设系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;
所述方法包括:
所述逃逸检测组件接收所述容器监测组件上报的被监测容器触发的多个系统调用的信息;
所述逃逸检测组件将所述多个系统调用的发生顺序与所述逃逸检测规则中的至少一组预设系统调用顺序进行匹配,并根据匹配结果确定所述被监测容器是否发生逃逸,所述多个系统调用的发生顺序根据各个系统调用的生成时间、触发时间、执行时间或者接收时间确定。
2.根据权利要求1所述的方法,其特征在于,所述逃逸检测规则还包括预定义的至少一种与容器逃逸相关的高危系统能力;
所述方法还包括:
所述逃逸检测组件接收所述容器监测组件上报的被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力;
所述逃逸检测组件根据预设的所述逃逸检测规则以及所述被监测容器的启用的系统能力,确定所述被监测容器是否发生逃逸。
3.根据权利要求1所述的方法,其特征在于,还包括:
所述逃逸检测组件接收所述容器监测组件上报的敏感文件篡改信息,所述敏感文件篡改信息是所述容器监测组件在监测到所述被监测容器中的进程对所述被监测容器的宿主机中预设的敏感文件进行写操作后发送的;
所述逃逸检测组件基于所述敏感文件篡改信息,确定所述被监测容器发生了容器逃逸。
4.根据权利要求1所述的方法,其特征在于,还包括:
所述逃逸检测组件根据所述被监测容器是否发生逃逸,发送容器逃逸事件报告或逃逸告警。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述逃逸检测规则采用目标决策树表达,所述目标决策树包括至少一个分支,每个分支包括系统能力节点和有序的多个系统调用节点,每个分支的系统能力节点对应于一种高危系统能力,每个分支的多个系统调用节点的预设顺序代表启用该分支的系统能力节点所描述的高危系统能力的容器发生逃逸时所触发的多个系统调用的预测发生顺序,所述目标决策树的每个分支的每个节点上都预先设置有可能性标识,所述可能性标识的大小指示容器逃逸的可能性大小;
所述逃逸检测组件确定所述被监测容器是否发生逃逸具体包括:
所述逃逸检测组件在接收到所述被监测容器的启动参数后,根据获取到的所述被监测容器的启用的系统能力,与所述目标决策树中的各个系统能力节点进行匹配,获取匹配成功的系统能力节点对应的第一可能性标识,将所述第一可能性标识作为所述被监测容器当前的可能性标识;
所述逃逸检测组件在接收到所述被监测容器触发的多个系统调用的信息后,确定所述多个系统调用的实际发生顺序,将所述多个系统调用的实际发生顺序与匹配成功的系统能力节点所在的分支的预设顺序进行匹配,若在匹配成功的系统能力节点所在的分支的第n个系统调用节点匹配成功,获取所述第n个系统调用节点所对应的第二可能性标识,使用所述第二可能性标识更新所述被监测容器当前的可能性标识。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述逃逸检测组件确定所述被监测容器是否发生逃逸具体包括:
获取目标状态机,所述目标状态机包括初始状态、最终状态以及由所述初始状态转移至所述最终状态所需满足的状态转移条件,所述状态转移条件为输入的顺序信息所指示的顺序与所述预设系统调用顺序相同的条件;
在所述目标状态机处于所述初始状态时,将所述多个系统调用的发生顺序输入至所述目标状态机;
当所述目标状态机由所述初始状态转移至所述最终状态时,确定所述被监测容器发生了容器逃逸。
7.一种计算系统中容器逃逸检测方法,其特征在于,所述计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则包括至少一组预设系统调用顺序,每组系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;
所述方法包括:
所述容器监测组件对被监测容器的运行情况进行监测;
所述容器监测组件向所述逃逸检测组件上报所述被监测容器触发的多个系统调用的信息,所述多个系统调用的发生顺序用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸,所述多个系统调用的发生顺序根据各个系统调用的生成时间、触发时间、执行时间或者接收时间确定。
8.根据权利要求7所述的方法,其特征在于,还包括:
所述容器监测组件向所述逃逸检测组件上报所述被监测容器的信息,所述被监测容器的信息包括所述被监测容器的ID或所述被监测容器的启动的进程ID;
所述容器监测组件接收所述逃逸检测组件根据所述被监测容器的信息下发的审计规则,所述审计规则指示所述容器监测组件对所述被监测容器的系统调用事件进行审计;
所述容器监测组件向所述逃逸检测组件上报所述被监测容器触发的多个系统调用的信息包括:
所述容器监测组件在监测到所述被监测容器触发的系统调用事件后,向所述逃逸检测组件上报审计报告,所述审计报告携带所述被监测容器触发的多个系统调用的信息。
9.根据权利要求7所述的方法,其特征在于,所述逃逸检测规则还包括预定义的至少一种与容器逃逸相关的高危系统能力;
所述方法还包括:
所述容器监测组件在监测到所述被监测容器启动后,向所述逃逸检测组件上报所述被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力,所述被监测容器启用的系统能力用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸。
10.根据权利要求9所述的方法,其特征在于,所述容器监测组件向所述逃逸检测组件上报被监测容器的启动参数包括:
所述容器监测组件调用docker socket接口获取所述被监测容器的启动参数,向所述逃逸检测组件上报携带所述被监测容器的启动参数的docker run命令。
11.根据权利要求7-10任一项所述的方法,其特征在于,还包括:
所述容器监测组件向所述逃逸检测组件上报敏感文件篡改信息,所述敏感文件篡改信息是所述容器监测组件在监测到所述被监测容器中的进程对所述被监测容器的宿主机中预设的敏感文件进行写操作后发送的。
12.一种计算系统中容器逃逸检测方法,其特征在于,所述计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则包括预定义的至少一种与容器逃逸相关的高危系统能力,所述与容器逃逸相关的高危系统能力包括发生逃逸的容器所拥有的系统权限;
所述方法包括:
所述逃逸检测组件接收所述容器监测组件上报的被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力;
所述逃逸检测组件根据预设的所述逃逸检测规则以及所述被监测容器的启用的系统能力,确定所述被监测容器是否发生逃逸。
13.根据权利要求12所述的方法,其特征在于,所述逃逸检测规则还包括至少一组预设系统调用顺序,每组系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;
所述方法还包括:
所述逃逸检测组件接收所述容器监测组件上报的所述被监测容器触发的多个系统调用的信息;
所述逃逸检测组件将所述多个系统调用的发生顺序与所述逃逸检测规则中的至少一组预设系统调用顺序进行匹配,并根据匹配结果确定所述被监测容器是否发生逃逸。
14.根据权利要求12所述的方法,其特征在于,还包括:
所述逃逸检测组件接收所述容器监测组件上报的敏感文件篡改信息,所述敏感文件篡改信息是所述容器监测组件在监测到所述被监测容器中的进程对所述被监测容器的宿主机中预设的敏感文件进行写操作后发送的;
所述逃逸检测组件基于所述敏感文件篡改信息,确定所述被监测容器发生了容器逃逸。
15.根据权利要求12所述的方法,其特征在于,还包括:
所述逃逸检测组件根据所述被监测容器是否发生逃逸,发送容器逃逸事件报告或逃逸告警。
16.根据权利要求12-15任一项所述的方法,其特征在于,所述逃逸检测规则采用目标决策树表达,所述目标决策树包括至少一个分支,每个分支包括系统能力节点和有序的多个系统调用节点,每个分支的系统能力节点对应于一种高危系统能力,每个分支的多个系统调用节点的预设顺序代表启用该分支的系统能力节点所描述的高危系统能力的容器发生逃逸时所触发的多个系统调用的预测发生顺序,所述目标决策树的每个分支的每个节点上都预先设置有相应的可能性标识,所述可能性标识的大小指示容器逃逸的可能性大小;
所述逃逸检测组件确定所述被监测容器是否发生逃逸具体包括:
所述逃逸检测组件在接收到所述被监测容器的启动参数后,根据获取到的所述被监测容器的启用的系统能力,与所述目标决策树中的各个系统能力节点进行匹配,获取匹配成功的系统能力节点对应的第一可能性标识,将所述第一可能性标识作为所述被监测容器当前的可能性标识;
所述逃逸检测组件在接收到所述被监测容器触发的多个系统调用的信息后,确定所述多个系统调用的实际发生顺序,将所述多个系统调用的实际发生顺序与匹配成功的系统能力节点所在的分支的预设顺序进行匹配,若在匹配成功的系统能力节点所在的分支的第n个系统调用节点匹配成功,获取所述第n个系统调用节点所对应的第二可能性标识,使用所述第二可能性标识更新所述被监测容器当前的可能性标识。
17.根据权利要求12-15任一项所述的方法,其特征在于,所述逃逸检测组件确定所述被监测容器是否发生逃逸具体包括:
获取目标状态机,所述目标状态机包括初始状态、最终状态以及由所述初始状态转移至所述最终状态所需满足的状态转移条件,所述状态转移条件为输入的顺序信息所指示的顺序与预设系统调用顺序相同的条件;
在所述目标状态机处于所述初始状态时,将多个系统调用的发生顺序输入至所述目标状态机;
当所述目标状态机由所述初始状态转移至所述最终状态时,确定所述被监测容器发生了容器逃逸。
18.一种计算系统中容器逃逸检测方法,其特征在于,所述计算系统包括至少一台宿主机,所述宿主机上运行容器监测组件和至少一个容器,所述计算系统还包括逃逸检测组件,所述逃逸检测组件设置有逃逸检测规则,所述逃逸检测规则还包括预定义的至少一种与容器逃逸相关的高危系统能力,所述与容器逃逸相关的高危系统能力包括发生逃逸的容器所拥有的系统权限;
所述方法包括:
所述容器监测组件对被监测容器的运行情况进行监测;
所述容器监测组件在监测到所述被监测容器启动后,向所述逃逸检测组件上报所述被监测容器的启动参数,所述启动参数包含所述被监测容器启用的系统能力,所述被监测容器启用的系统能力用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸。
19.根据权利要求18所述的方法,其特征在于,所述容器监测组件向所述逃逸检测组件上报被监测容器的启动参数包括:
所述容器监测组件调用docker socket接口获取所述被监测容器的启动参数,向所述逃逸检测组件上报携带所述被监测容器的启动参数的docker run命令。
20.根据权利要求18所述的方法,其特征在于,所述逃逸检测规则还包括至少一组预设系统调用顺序,每组系统调用顺序对应于一种容器逃逸行为所触发的多个系统调用的预测发生顺序;
所述方法还包括:
所述容器监测组件向所述逃逸检测组件上报所述被监测容器触发的多个系统调用的信息,所述多个系统调用的发生顺序用于与所述逃逸检测规则进行匹配以确定所述被监测容器是否发生逃逸。
21.根据权利要求20所述的方法,其特征在于,还包括:
所述容器监测组件向所述逃逸检测组件上报所述被监测容器的信息,所述被监测容器的信息包括所述被监测容器的ID或所述被监测容器的启动的进程ID;
所述容器监测组件接收所述逃逸检测组件根据所述被监测容器的信息下发的审计规则,所述审计规则指示所述容器监测组件对所述被监测容器的系统调用事件进行审计;
所述容器监测组件向所述逃逸检测组件上报所述被监测容器触发的多个系统调用的信息包括:
所述容器监测组件在监测到所述被监测容器触发的系统调用事件后,向所述逃逸检测组件上报审计报告,所述审计报告携带所述被监测容器触发的多个系统调用的信息。
22.根据权利要求18-21任一项所述的方法,其特征在于,还包括:
所述容器监测组件向所述逃逸检测组件上报敏感文件篡改信息,所述敏感文件篡改信息是所述容器监测组件在监测到所述被监测容器中的进程对所述被监测容器的宿主机中预设的敏感文件进行写操作后发送的。
23.一种检测装置,其特征在于,所述装置用于检测计算系统中的宿主机上运行的容器的逃逸行为,所述装置包括处理器、第一存储器和第二存储器;
所述第二存储器中设置有逃逸检测规则;
所述处理器被配置为执行所述第一存储器中存储的指令,所述处理器通过执行所述指令来实现权利要求1至6任一项所述的检测方法。
24.一种检测装置,其特征在于,所述装置用于检测计算系统中的宿主机上运行的容器的逃逸行为,所述装置包括处理器、第一存储器和第二存储器;
所述第二存储器中设置有逃逸检测规则;
所述处理器被配置为执行所述第一存储器中存储的指令,所述处理器通过执行所述指令来实现权利要求12至17任一项所述的检测方法。
25.一种监测装置,其特征在于,所述装置用于监测计算系统中的宿主机上运行的容器的运行,所述装置包括处理器和存储器;
所述处理器被配置为执行所述存储器中存储的指令,所述处理器通过执行所述指令来实现权利要求7至11任一项所述的检测方法。
26.一种监测装置,其特征在于,所述装置用于监测计算系统中的宿主机上运行的容器的运行,所述装置包括处理器和存储器;
所述处理器被配置为执行所述存储器中存储的指令,所述处理器通过执行所述指令来实现权利要求18至22任一项所述的检测方法。
27.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行权利要求1至22中任一项所述的方法。
CN201880091015.XA 2018-03-16 2018-08-28 容器逃逸检测方法、装置、系统及存储介质 Active CN111819556B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/CN2018/079338 WO2019174048A1 (zh) 2018-03-16 2018-03-16 容器逃逸检测方法、装置、系统及存储介质
CNPCT/CN2018/079338 2018-03-16
PCT/CN2018/102667 WO2019174193A1 (zh) 2018-03-16 2018-08-28 容器逃逸检测方法、装置、系统及存储介质

Publications (2)

Publication Number Publication Date
CN111819556A CN111819556A (zh) 2020-10-23
CN111819556B true CN111819556B (zh) 2024-04-09

Family

ID=67908604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880091015.XA Active CN111819556B (zh) 2018-03-16 2018-08-28 容器逃逸检测方法、装置、系统及存储介质

Country Status (4)

Country Link
US (1) US11989283B2 (zh)
EP (1) EP3761198B1 (zh)
CN (1) CN111819556B (zh)
WO (2) WO2019174048A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109033405B (zh) 2018-08-03 2020-09-08 华为技术有限公司 维护区块链的方法和装置、服务器和计算机可读存储介质
US11062022B1 (en) * 2019-05-01 2021-07-13 Intuit Inc. Container packaging device
CN111221625B (zh) * 2019-12-31 2023-08-04 北京水滴科技集团有限公司 文件检测方法、装置及设备
CN111310180A (zh) * 2020-02-18 2020-06-19 上海迅软信息科技有限公司 一种企业信息安全用计算机进程防冒充方法
CN111881453A (zh) * 2020-07-20 2020-11-03 北京百度网讯科技有限公司 一种容器逃逸检测方法、装置以及电子设备
CN113221103B (zh) * 2021-05-08 2022-09-20 山东英信计算机技术有限公司 一种容器安全防护方法、系统及介质
CN113761537A (zh) * 2021-07-29 2021-12-07 苏州浪潮智能科技有限公司 一种防范容器逃逸的方法、系统、设备、存储介质
CN113553598A (zh) * 2021-09-18 2021-10-26 云宏信息科技股份有限公司 操作系统的完整性校验方法、可读存储介质及校验系统
US11983268B2 (en) * 2022-02-15 2024-05-14 Palo Alto Networks, Inc. Prevention of container escape-based attacks of a host system
CN115373798A (zh) * 2022-07-25 2022-11-22 国网新疆电力有限公司乌鲁木齐供电公司 一种智能物联终端容器逃逸攻击检测和防御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608374A (zh) * 2015-12-18 2016-05-25 北京奇虎科技有限公司 虚拟机逃逸的检测方法及装置
CN106778257A (zh) * 2016-12-08 2017-05-31 北京国电通网络技术有限公司 一种虚拟机防逃逸装置
CN107679399A (zh) * 2017-10-19 2018-02-09 郑州云海信息技术有限公司 一种基于容器的恶意代码检测沙盒系统及检测方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8272048B2 (en) * 2006-08-04 2012-09-18 Apple Inc. Restriction of program process capabilities
US9037854B2 (en) * 2013-01-22 2015-05-19 Amazon Technologies, Inc. Privileged cryptographic services in a virtualized environment
US9832217B2 (en) * 2014-03-13 2017-11-28 International Business Machines Corporation Computer implemented techniques for detecting, investigating and remediating security violations to IT infrastructure
CN105590054A (zh) * 2014-11-11 2016-05-18 航天恒星科技有限公司 虚拟机进程监控的方法、装置及系统
US20160379136A1 (en) * 2015-06-26 2016-12-29 Qualcomm Incorporated Methods and Systems for Automatic Extraction of Behavioral Features from Mobile Applications
CN104915285B (zh) * 2015-06-30 2018-08-14 北京奇虎科技有限公司 一种容器进程监控方法、装置及系统
KR102294568B1 (ko) 2015-08-19 2021-08-26 삼성에스디에스 주식회사 컨테이너 이미지 보안 검사 방법 및 그 장치
US10586042B2 (en) * 2015-10-01 2020-03-10 Twistlock, Ltd. Profiling of container images and enforcing security policies respective thereof
US10223534B2 (en) * 2015-10-15 2019-03-05 Twistlock, Ltd. Static detection of vulnerabilities in base images of software containers
US9521115B1 (en) 2016-03-24 2016-12-13 Varmour Networks, Inc. Security policy generation using container metadata
US10791134B2 (en) * 2016-12-21 2020-09-29 Threat Stack, Inc. System and method for cloud-based operating system event and data access monitoring
US10824745B2 (en) * 2017-04-19 2020-11-03 Servicenow, Inc. System for accessing a kernel space of an operating system with access control functionality

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608374A (zh) * 2015-12-18 2016-05-25 北京奇虎科技有限公司 虚拟机逃逸的检测方法及装置
CN106778257A (zh) * 2016-12-08 2017-05-31 北京国电通网络技术有限公司 一种虚拟机防逃逸装置
CN107679399A (zh) * 2017-10-19 2018-02-09 郑州云海信息技术有限公司 一种基于容器的恶意代码检测沙盒系统及检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A VMM-based System Call Interposition Framework for Program Monitoring;Bo Li et al;《2010 IEEE 16th International Conference on Parallel and Distributed Systems》;706-711页 *
基于层次分析―模糊评价的云计算安全评估与对策;杨爱民;高放;边敏华;杨曙磊;;通信学报;20161030(第S1期);全文 *

Also Published As

Publication number Publication date
US20200410089A1 (en) 2020-12-31
EP3761198A1 (en) 2021-01-06
EP3761198B1 (en) 2023-07-26
WO2019174193A1 (zh) 2019-09-19
WO2019174048A1 (zh) 2019-09-19
US11989283B2 (en) 2024-05-21
EP3761198A4 (en) 2021-04-28
CN111819556A (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
CN111819556B (zh) 容器逃逸检测方法、装置、系统及存储介质
RU2645268C2 (ru) Сложное классифицирование для выявления вредоносных программ
KR102301721B1 (ko) 다수의 네트워크 종점들을 보호하기 위한 듀얼 메모리 인트로스펙션
US9596257B2 (en) Detection and prevention of installation of malicious mobile applications
CN102651061B (zh) 用于检测复杂恶意软件的系统和方法
RU2568295C2 (ru) Система и способ временной защиты операционной системы программно-аппаратных устройств от приложений, содержащих уязвимости
US8607339B2 (en) Systems and methods for improved identification and analysis of threats to a computing system
CN110851241A (zh) Docker容器环境的安全防护方法、装置及系统
CN105580022A (zh) 使用声誉指示符来促进恶意软件扫描的系统和方法
CN111191226B (zh) 利用提权漏洞的程序的确定方法、装置、设备及存储介质
EP3474174B1 (en) System and method of adapting patterns of dangerous behavior of programs to the computer systems of users
CN102882875B (zh) 主动防御方法及装置
CN112995236B (zh) 一种物联网设备安全管控方法、装置和系统
US20220012158A1 (en) Application monitoring using workload metadata
WO2021121382A1 (en) Security management of an autonomous vehicle
CN102857519B (zh) 主动防御系统
KR102382889B1 (ko) 프로세스 정보를 사용하여 웹쉘을 탐지하는 방법 및 시스템
CN110889112B (zh) 一种基于白名单机制的软件运行统一控制系统及方法
CN110659478B (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
US11449610B2 (en) Threat detection system
CN113504971B (zh) 基于容器的安全拦截方法及系统
US20240078342A1 (en) Securing a container ecosystem
CN116566633A (zh) 攻击行为防御方法、装置、设备及存储介质
CN113836542A (zh) 可信白名单匹配方法、系统和装置
KR20230169268A (ko) 사이버 보안 공격에 대한 엔드포인트 탐지 및 대응

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220304

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant