CN116974685A - 一种容器内异常系统调用的检测方法和相关装置 - Google Patents

一种容器内异常系统调用的检测方法和相关装置 Download PDF

Info

Publication number
CN116974685A
CN116974685A CN202210424325.7A CN202210424325A CN116974685A CN 116974685 A CN116974685 A CN 116974685A CN 202210424325 A CN202210424325 A CN 202210424325A CN 116974685 A CN116974685 A CN 116974685A
Authority
CN
China
Prior art keywords
system call
container
call
information
target
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
CN202210424325.7A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210424325.7A priority Critical patent/CN116974685A/zh
Publication of CN116974685A publication Critical patent/CN116974685A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开一种容器内异常系统调用的检测方法和相关装置,涉及计算机技术领域。本申请实施例可应用于云技术、云安全、容器安全、车联网、智慧交通和人工智能等各种场景中。该方法在获取到包括至少一个系统调用的系统调用配置信息后,可以通过性能监测框架,分别开启的与每个系统调用对应的目标监测点,获取到相应的系统调用对应的调用监测信息,并根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出系统调用被异常执行的检测结果。与相关技术相比,该方法可以避免宿主机内核频繁切换进程而导致的性能问题,同时也可以及时检测出容器内存在的异常系统调用,以提高宿主机系统的稳定性。

Description

一种容器内异常系统调用的检测方法和相关装置
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种容器内异常系统调用的检测方法和相关装置。
背景技术
容器是应用于操作系统上的一种虚拟化技术,通过这种技术能够将运行在操作系统之上的各种应用程序进行隔离,使每个应用程序都有专属的运行空间和资源来提供相应的服务,相互之间不受影响。容器所在的主机被称为宿主机,不同容器内的各进程可以共享宿主机的操作系统内核,直接调用宿主机内核提供的系统调用。
然而,当容器内的应用程序在提供服务过程中被攻破,进而转变为恶意程序,或者,当容器编排系统在对容器进行管理的过程中被攻破,进而将宿主机中的已部署容器转变为恶意容器时,就会导致容器内的进程通过执行一些异常的系统调用,破坏宿主机系统的稳定性。
为了提高宿主机系统的稳定性,一般需要在进程执行系统调用时,对系统调用进行抓取,并通过对抓取得到的系统调用的分析,确定出来自于容器内的异常系统调用。
相关技术下,可以启用一个专属的监测进程,来对各进程进行监测,并在进程执行系统调用时,对这些系统调用进行抓取;然而,在采用上述方案时,被监测的进程每执行一个系统调用,宿主机内核无论当前在执行任何进程,均会启动并切换至监测进程来抓取该系统调用,导致宿主机内核需要频繁地进行进程切换,进而导致宿主机的系统性能变差。
发明内容
为解决相关技术中存在的技术问题,本申请实施例提供一种容器内异常系统调用的检测方法和相关装置,可以避免在抓取系统调用的过程中,宿主机内核频繁地进行进程切换而导致的宿主机系统性能变差问题。
为达到上述目的,本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供了一种容器内异常系统调用的检测方法,包括:
获取包括至少一个系统调用的系统调用配置信息;
通过宿主机中的性能监测框架,分别开启与所述至少一个系统调用相对应的目标监测点;其中,每个目标监测点为预先在相应的系统调用对应的代码中插入的插桩代码;
基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息;
根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出所述系统调用被异常执行的检测结果。
一方面,本申请实施例还提供了一种容器内异常系统调用的检测方法,包括:
响应于针对容器内异常系统调用的检测操作,向容器安全组件发送相应的检测请求;所述检测请求中携带有包括至少一个系统调用的系统调用配置信息;
接收所述容器安全组件基于所述至少一个系统调用各自对应的调用监测信息,确定相应的系统调用的执行进程来自于容器时,返回的所述系统调用被异常执行的检测结果;
响应于展示数据的操作,展示所述检测结果。
一方面,本申请实施例还提供了一种容器内异常系统调用的检测装置,包括:
系统调用确定单元,用于获取包括至少一个系统调用的系统调用配置信息;
监测点开启单元,用于通过宿主机中的性能监测框架,分别开启与所述至少一个系统调用相对应的目标监测点;其中,每个目标监测点为预先在相应的系统调用对应的代码中插入的插桩代码;
监测信息获取单元,用于基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息;
异常调用确定单元,用于根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出所述系统调用被异常执行的检测结果。
可选的,所述监测点开启单元,具体用于:
根据系统调用与监测点之间的关联关系,分别确定与所述至少一个系统调用相对应的目标监测点;
通过所述性能监测框架,开启获得的至少一个目标监测点。
可选的,所述异常调用确定单元,具体用于:
针对获得的至少一个调用监测信息,分别执行以下操作:
从一个调用监测信息中,获取相应的系统调用的执行进程的进程信息;
根据进程信息与控制组信息之间的对应关系,确定所述进程信息相对应的目标控制组信息;所述目标控制组信息包含:所述执行进程关联的容器配置信息;
若基于所述目标控制组信息,确定所述执行进程归属于容器,则确定所述系统调用被异常执行,并输出相应的检测结果。
可选的,所述异常调用确定单元,还用于:
基于控制组信息与进程载体之间的对应关系,确定所述目标控制组信息对应的目标进程载体;所述进程载体为容器或宿主机;
若所述目标进程载体为容器,则输出告警信息;所述告警信息用于表征所述系统调用被异常执行。
可选的,所述异常调用确定单元,还用于:
根据控制组信息与容器号之间的对应关系,若确定出与所述目标控制组信息相对应的目标容器号,则确定所述系统调用被所述目标容器号对应的目标容器异常执行,并输出所述系统调用被所述目标容器异常执行的检测结果。
可选的,所述异常调用确定单元,还用于:
获取与所述系统调用被异常执行相关联的异常监测信息;所述异常监测信息包括以下至少一种:
所述系统调用的名称、所述系统调用的执行进程路径、所述目标容器的容器号和容器名称、与所述目标容器相关联的镜像号和镜像名称;
基于所述异常监测信息,输出所述系统调用被所述目标容器异常执行的检测结果。
可选的,所述宿主机中包括至少一个内核,所述装置还包括缓冲区设置单元,用于:
针对所述至少一个内核,分别执行以下操作:
在一个内核中设置一个缓冲区,并采用内存映射方式,将所述一个缓冲区从所述一个内核空间映射到容器安全组件的地址空间中;其中,所述缓冲区用于存储所述获得的至少一个调用监测信息。
可选的,所述装置还包括监测信息处理单元,用于:
通过所述性能监测框架,将获得的至少一个调用监测信息添加到至少一个缓冲区中;
从所述至少一个缓冲区中,依次读取所述至少一个调用监测信息。
一方面,本申请实施例还提供了一种容器内异常系统调用的检测装置,包括:
请求发送单元,用于响应于针对容器内异常系统调用的检测操作,向容器安全组件发送相应的检测请求;所述检测请求中携带有包括至少一个系统调用的系统调用配置信息;
检测结果接收单元,用于接收所述容器安全组件基于所述至少一个系统调用各自对应的调用监测信息,确定相应的系统调用的执行进程来自于容器时,返回的所述系统调用被异常执行的检测结果;
检测结果展示单元,用于响应于展示数据的操作,展示所述检测结果。
可选的,所述检测结果中包括与异常执行所述系统调用的目标容器相关联的目标镜像信息;所述检测结果展示单元,还用于:
将所述目标镜像信息,与预设编辑名单中包括的至少一个预设镜像信息进行比对;
若所述至少一个预设镜像信息中存在与所述目标镜像信息相匹配的目标预设镜像信息,则响应于展示数据的操作,不展示所述检测结果。
一方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述容器内异常系统调用的检测方法的步骤。
一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当所述程序在电子设备上运行时,使得所述电子设备执行上述容器内异常系统调用的检测方法的步骤。
一方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述容器内异常系统调用的检测方法的步骤。
本申请有益效果如下:
本申请实施例提供的容器内异常系统调用的检测方法和相关装置,在获取到包括至少一个系统调用的系统调用配置信息后,通过宿主机中的性能监测框架,分别开启与至少一个系统调用相对应的目标监测点,并基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息,根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出系统调用被异常执行的检测结果。与相关技术中通过监测进程来抓取系统调用的方式相比,该方法可以直接通过宿主机中的性能监测框架来获取进程执行的系统调用,避免在抓取系统调用的过程中,宿主机内核频繁地进行进程切换而导致的宿主机系统性能变差问题,同时也可以实现对容器内进程执行的异常系统调用进行检测,及时捕获容器内进程对宿主机内核存在潜在破坏的行为,以提高宿主机系统的稳定性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
图1为本申请实施例中的一种应用场景示意图;
图2为本申请实施例中的一种容器内异常系统调用的检测方法的流程示意图;
图3为本申请实施例中的一种容器内异常系统调用的检测方法的原理示意图;
图4为本申请实施例中的另一种容器内异常系统调用的检测方法的流程示意图;
图5a为本申请实施例中的另一种容器内异常系统调用的检测方法的流程示意图;
图5b为本申请实施例中的一种异常系统调用事件页面的示意图;
图6为本申请实施例中的一种异常系统调用事件详情页面的示意图;
图7为本申请实施例中的一种白名单编辑页面的示意图;
图8a为本申请实施例中的一种容器内异常系统调用的检测方法的总体流程示意图;
图8b为本申请实施例中的一种容器内异常系统调用的检测方法的具体场景示意图;
图9为本申请实施例中的一种容器内异常系统调用的检测装置的结构示意图;
图10为本申请实施例中的另一种容器内异常系统调用的检测装置的结构示意图;
图11为本申请实施例中的另一种容器内异常系统调用的检测装置的结构示意图;
图12为本申请实施例中的一种电子设备的结构示意图;
图13为本申请实施例中的另一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够在除了这里图示或描述的那些以外的顺序实施。
以下对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
Docker:一种容器技术。容器可认为是提供一个与宿主机操作系统共享内核,但与操作系统中的其他进程资源相隔离的执行环境。通过容器方式,可将每个资源设备上的资源进行划分,得到相互隔离且可独立使用的资源单元,以便于不同的用户直接调用这些资源单元。其中,本申请实施例中的容器也指容器环境,它首先是一个相对独立的运行环境,在这一点有点类似于虚拟机,但是不像虚拟机那样彻底。在容器内,应该最小化其对外界的影响,比如不能在容器内把宿主机上的资源全部消耗,这就是资源控制。容器是根据镜像在物理机的操作系统中或者在虚拟机的操作系统中直接创建的实例,它可以被启动、开始、停止或删除。每个容器都包括独立的运行环境(即逻辑上的操作系统,包括用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序。简单来说,容器内的软件包程序及配置文件等静态信息,以及容器内运行态的对象、进程等信息,容器内自身的组织架构信息的汇总,称之为容器或容器环境。可理解的,从功能上划分,容器环境可以包括测试环境、开发环境和生产环境等,在此不做限制。
容器编排系统:Kubernetes,简称K8s,是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。该系统旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”,它支持一系列容器工具,包括Docker等。
镜像:是指一个特殊的文件系统,类似于一个模板,是创建容器环境的基础,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
控制组(control group,cgroup):用来限制容器内的进程资源占用,可以用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。
tracepoint:位于宿主机内核的各个系统调用中的静态探针点,即监测点,用于记录相应的系统调用信息。
perf:性能监测框架,是一种用于进行性能分析的工具。
系统调用事件:性能监测框架在开启监测点后,获取的相应的系统调用对应的调用监测信息。
句柄:是一个用来标识对象的标识符,只要获得对象的句柄,就可以对该对象进行任意的操作。
下文中所用的词语“示例性”的意思为“用作例子、实施例或说明性”。作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
文中的术语“第一”、“第二”仅用于描述目的,而不能理解为明示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
云安全(Cloud Security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云安全主要研究方向包括:1.云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2.安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3.云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。本申请实施例中的云平台可以通过性能监测框架抓取系统调用配置信息中包括的至少一个系统调用,分别获取调用至少一个系统调用对应的调用监测信息,并在根据至少一个调用监测信息确定相应的系统调用的执行进程来自于容器时,确定该系统调用被异常执行。
下面对本申请实施例的设计思想进行简要介绍:
不同容器内的各进程可以共享宿主机的操作系统内核,直接调用宿主机内核提供的系统调用,当容器内的应用程序在提供服务过程中被攻破,进而转变为恶意程序,或者,当容器编排系统在对容器进行管理的过程中被攻破,进而将宿主机中的已部署容器转变为恶意容器时,就会导致容器内的进程通过执行一些异常的系统调用(如:ptrace、setuid、init_module等),破坏宿主机系统的稳定性。
为了提高宿主机系统的稳定性,一般需要在进程执行系统调用时,对系统调用进行抓取,并通过对抓取得到的系统调用的分析,确定出来自于容器内的异常系统调用。
相关技术下,可以启用一个专属的监测进程,来对各进程进行监测,并在进程执行系统调用时,对这些系统调用进行抓取;然而,在采用上述方案时,被监测的进程每执行一个系统调用,宿主机内核无论当前在执行任何进程,均会启动并切换至监测进程来抓取该系统调用,导致宿主机内核需要频繁地进行进程切换,进而导致宿主机的系统性能变差。
或者,也可以通过一个内核驱动模块,在内核驱动中,使用内核tracing技术,在各进程执行系统调用时,对这些系统调用进行抓取。然而,在采用上述方案时,如果宿主机的内核版本较低时,就需要在宿主机上安装一个内核驱动。但是,由于宿主机内核版本碎片化非常严重(上千种不同的内核版本),因此,对内核驱动的兼容性及版本管理非常困难。
有鉴于此,本申请实施例提出了一种容器内异常系统调用的检测方法和相关装置,在获取到包括至少一个系统调用的系统调用配置信息后,通过宿主机中的性能监测框架,分别开启与至少一个系统调用相对应的目标监测点,并基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息,根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出系统调用被异常执行的检测结果。从而可以避免在抓取系统调用的过程中,宿主机内核频繁地进行进程切换而导致的宿主机系统性能变差问题,以及在宿主机上安装内核驱动后导致的兼容性问题,同时也可以实现对容器内进程执行的异常系统调用进行检测,及时捕获容器内进程对宿主机内核存在潜在破坏的行为,以提高宿主机系统的稳定性。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请实施例及实施例中的特征可以相互组合。
参阅图1所示,为本申请实施例中应用场景示意图。该应用场景中至少包括终端设备110和服务器130,可通过终端设备110登录应用操作界面120。终端设备110的数量可以是一个或多个,服务器130的数量也可以是一个或多个,本申请对终端设备110和服务器130的数量不做具体限定。终端设备110与服务器130之间可以通过通信网络进行通信。
在本申请实施例中,终端设备110中预先安装具有容器内异常系统调用检测功能的容器安全应用,目标对象可以通过该应用完成对容器内异常系统调用的检测和查看等,且该应用的类型包括客户端应用、网页版应用、小程序应用等。终端设备110可以但不限于是个人计算机、手机、平板电脑、笔记本、电子书阅读器、智能家居、智能语音交互设备、车载终端等。
服务器130为可以安装支持对容器内异常系统调用进行检测的容器安全组件的服务器。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备110与服务器130可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例中的容器内异常系统调用的检测方法可以由终端设备110执行,也可以由服务器130执行,还可以由终端设备110与服务器130交互执行。
以服务器130执行本申请实施例中的容器内异常系统调用的检测方法举例来说,包括以下步骤:
响应于目标对象针对容器内异常系统调用的检测操作,终端设备110可以向服务器130发送相应的检测请求,且该检测请求中携带有包括至少一个系统调用的系统调用配置信息。服务器130在接收到该检测请求后,可以通过性能监测框架,分别开启与至少一个系统调用相对应的目标监测点,基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息,根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出系统调用被异常执行的检测结果。服务器130在得到系统调用被容器异常执行的检测结果后,可以将该检测结果发送给终端设备110,以使终端设备110可以向目标对象展示该检测结果。
应当说明的是,图1是对本申请的容器内异常系统调用的检测方法的应用场景进行示例介绍,实际本申请实施例中的方法可以适用的应用场景并不限于此。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并行执行。
图2示出了本申请实施例提供的一种容器内异常系统调用的检测方法的流程图,该方法可以由电子设备中的容器安全组件执行,该电子设备可以是图1中的终端设备110和/或服务器130。如图2所示,包括以下步骤:
步骤S201,获取包括至少一个系统调用的系统调用配置信息。
其中,系统调用配置信息中包括的每个系统调用为可能在容器出现异常时被执行的系统调用。
步骤S202,通过宿主机中的性能监测框架,分别开启与至少一个系统调用相对应的目标监测点。
其中,每个目标监测点为预先在相应的系统调用对应的代码中插入的插桩代码。
具体地,可以根据系统调用与监测点之间的关联关系,分别确定与至少一个系统调用相对应的目标监测点,并通过性能监测框架,开启获得的至少一个目标监测点。
例如,系统调用配置信息中包括的一个系统调用为init_module系统调用,根据系统调用与监测点之间的关联关系,可以得到与init_module系统调用相对应的目标监测点为syscalls/sys_enter_init_module。
步骤S203,基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息。
通过开启的至少一个目标监测点,可以分别获得与每个目标监测点相对应的系统调用对应的调用监测信息。
其中,每个调用监测信息中可以包括有相应的系统调用对应的系统调用号、系统调用参数和执行进程信息等。
步骤S204,根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出系统调用被异常执行的检测结果。
针对获得的至少一个调用监测信息,可以分别执行以下操作:
从一个调用监测信息中,获取相应的系统调用的执行进程的进程信息,根据进程信息与控制组信息之间的对应关系,确定出进程信息相对应的目标控制组信息,其中,目标控制组信息包含:执行进程关联的容器配置信息,若基于目标控制组信息,确定执行进程归属于容器,则确定系统调用被异常执行,并输出相应的检测结果。
可选的,在确定系统调用被容器异常执行后,可以发出告警信息,以提示相关人员容器内的进程存在异常系统调用。
可选的,当根据调用监测信息,确定相应的系统调用对应的执行进程不是来自于容器,即来自于宿主机时,可以舍弃该调用监测信息。
可选的,在根据调用监测信息,确定相应的系统调用对应的执行进程归属于目标容器时,可以确定系统调用被目标容器内的进程异常执行,且输出目标容器内的进程存在异常系统调用的告警信息。
例如,宿主机中包括有容器A和容器B共2个容器,通过性能监测框架,可以获取到系统调用1对应的调用监测信息1、系统调用2对应的调用监测信息2、系统调用3对应的调用监测信息3,根据调用监测信息1,可以确定出相应的系统调用1对应的执行进程来自于容器A,根据调用监测信息2,可以确定出相应的系统调用2对应的执行进程来自于容器B,调用监测信息3,可以确定出相应的系统调用3对应的执行进程既不来自于容器A也不来自于容器B,则可以输出容器A和容器B内的进程均存在异常系统调用的告警信息,并将调用监测信息3丢弃。
在一种实施例中,对于每个调用监测信息,在确定出进程信息相对应的目标控制组信息后,也可以基于控制组信息与进程载体之间的对应关系,确定目标控制组信息对应的目标进程载体,其中,进程载体为容器或宿主机,若目标进程载体为容器,则输出告警信息,其中,告警信息用于表征系统调用被异常执行。
在另一种实施例中,对于每个调用监测信息,在确定出进程信息相对应的目标控制组信息后,也可以根据控制组信息与容器号之间的对应关系,若确定出与目标控制组信息相对应的目标容器号,则确定系统调用被目标容器号对应的目标容器异常执行,并获取与系统调用被异常执行相关联的异常监测信息,基于该异常监测信息,输出系统调用被目标容器异常执行的检测结果。其中,异常监测信息可以包括以下至少一种:系统调用的名称、系统调用的执行进程路径、目标容器的容器号和容器名称、与目标容器相关联的镜像号和镜像名称。
可选的,宿主机中包括有至少一个内核,则针对至少一个内核,可以分别执行以下操作:
在一个内核中设置一个缓冲区,并采用内存映射方式,将一个缓冲区从一个内核空间映射到容器安全组件的地址空间中,其中,缓冲区用于存储获得的至少一个调用监测信息。
在将宿主机中的至少一个缓冲区与容器安全组件建立连接,且获得至少一个调用监测信息之后,可以通过性能监测框架,将获得的至少一个调用监测信息添加到至少一个缓冲区中,以使容器安全组件可以从至少一个缓冲区中,依次读取至少一个调用监测信息,并根据至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定系统调用被异常执行。
本申请中的容器内异常系统调用的检测原理图可以如图3所示。在图3中,容器和容器安全组件都位于宿主机的应用层中,perf内核框架为性能监测框架,perf内核框架由用于获取系统调用对应的调用监测信息的监测点组成,缓冲区用于存放监测点记录的系统调用事件,即调用监测信息,perf内核框架和缓冲区都位于宿主机的内核层中。
在容器安全组件对系统调用开启监测时,如果容器中的应用程序执行宿主机内核中的系统调用,宿主机中的perf内核框架就会通过与该系统调用相对应的目标监测点,对该系统调用进行抓取,获得该系统调用对应的系统调用事件,并将该系统调用事件存放到缓冲区中,以使容器安全组件可以从缓冲区中读取系统调用事件,根据该系统调用事件检测出容器内的进程是否执行异常系统调用。
具体地,容器中的程序(myprog)在执行系统调用时,会陷入到宿主机的内核中,并先调用内核预编译的tracepoint(静态探针点),即监测点,再执行真正的系统调用逻辑。例如:init_module系统调用进入内核后,会先后经过多个tracepoint,分别是sys_enter(原始调用探针)、sys_enter_init_module(init_module调用执行前探针)、sys_exit_init_module(init_module调用执行后探针),然后再执行真正的init_module调用内核逻辑。
内核中所有的tracepoint在默认情况下是关闭的,不会记录系统调用信息,仅当应用层开启特定的tracepoint时,才会记录系统调用信息。
容器安全组件通过perf_event_open系统调用开启特定的内核tracepoint后,当容器内进程有新的系统调用产生,内核中相应的tracepoint会记录当前产生的系统调用号、系统调用参数、进程信息,并生成事件写入内核的缓冲区中。
容器安全组件在启动时,通过mmap调用将内核缓冲区映射到容器安全组件进程应用层内存地址空间中。容器安全组件通过实时读取内核缓冲区中记录的系统调用信息,检测容器内进程是否发起异常系统调用。
在一些实施例中,本申请提出的容器内异常系统调用的检测方法还可以按照图4示出的过程进行实现,该过程可以由电子设备中的容器安全组件执行,该电子设备可以是图1中的终端设备110和/或服务器130。如图4所示,包括以下步骤:
步骤S401,通过应用程序编程接口,对性能监测框架进行初始化,并将宿主机内核中设置的缓冲区从内核空间映射到容器安全组件的地址空间中。
容器安全组件在启动时,可以通过调用内核应用程序编程接口(ApplicationProgramming Interface,API)(perf_event_open)初始化性能监测框架perf的句柄,主要初始化事件采样周期、采样字段类型。
在对perf句柄进行初始化后,可以获取宿主机的CPU核心数,为每个CPU核心创建perf监测框架的句柄,并通过mmap调用映射句柄关联的内核缓冲区到容器安全组件进程的应用层地址空间中。
通过为每个CPU核心设置一个缓冲区,避免在多核场景下,操作缓冲区产生竞争,且将缓冲区mmap映射到容器安全组件的应用层地址空间中,可以便于应用层直接以读内存方式获取系统调用事件。
步骤S402,获取包括至少一个系统调用的系统调用配置信息。
获取包括至少一个系统调用的系统调用配置信息,其中的每个系统调用均为需要进行检测的系统调用。此外,从系统调用配置信息中还可以提取出每个系统调用是开启enter还是exit探针点。
步骤S403,通过性能监测框架,分别开启与每个系统调用相对应的目标监测点。
针对每个系统调用,解析系统调用对应enter或exit探针点的tracepoint id,并通过perf_event_open调用开启相应的监测点tracepoint。
例如,针对init_module系统调用enter探针点,容器安全组件会从/sys/kernel/debug/tracing/events/syscalls/sys_enter_init_module/id读取对应的id,通过perf_event_open函数开启,同时传入PERF_FLAG_FD_OUTPUT参数,使对应的tracepoint产生的事件被内核记录到缓冲区中。
步骤S404,通过性能监测框架,获取每个系统调用对应的系统调用事件,并将每个系统调用事件添加到缓冲区中。
通过宿主机内核中的性能监测框架,分别获取每个系统调用对应的系统调用事件,并将获得的每个系统调用事件添加到缓冲区中。
步骤S405,从缓冲区中依次读取每个系统调用事件。
在通过性能监测框架将每个系统调用事件添加到缓冲区中之后,容器安全组件可以从缓冲区中读取出每个系统调用事件。
步骤S406,根据每个系统调用事件,确定相应的执行进程对应的容器id。
从每个系统调用事件中,获取相应的系统调用对应的进程的进程标识符(processidentifier,pid)信息,即进程的进程号,并查询进程pid对应的cgroup信息。
具体地,进程的cgroup信息在/proc/[pid]/cgroup文件中,cgroup信息由多行记录组成(例如:pid、blkio、memory cgroup等),示例如下:
11:devices:/docker/76e58c2a77a3457…
10:pids:/docker/76e58c2a77a3457…
3:cpuset:/docker/76e58c2a77a3457……
2:memory:/docker/76e58c2a77a3457…
从包含pids:的行中,可以提取出该进程的pid cgroup路径,并根据路径转换容器id规则,将该路径转为容器id。其中,不同的容器在运行时,转换规则不尽相同,docker的转换规则为/docker/{container_id}。
若没有查询到进程对应的容器id,容器安全组件可以判定该进程不属于容器,该进程所产生的系统调用事件会被丢弃。
若查询到有效的容器id,容器安全组件可以将<进程pid、cgroup信息、容器id>的对应关系添加到缓冲区中,以使容器安全组件在后续过程中,在从缓冲区中读取得到系统调用事件后,可以直接根据该对应关系确定相应的执行进程所对应的容器id,避免重复从内核查询cgroup信息,进一步降低资源占用。
步骤S407,获取与容器id相关联的容器详细信息和镜像详细信息。
获取与容器id相关联的容器详细信息和镜像详细信息,包括:容器关联的镜像id、镜像tag、镜像生产时间、容器启动时间、容器名称、容器启动参数等。
容器安全组件通过调用容器平台服务API查询容器及关联镜像的详情。如果容器运行时为docker,则调用docker API获取(docker API地址为/var/run/docker.sock,获取容器详情API为/containers/{container_id}/json,获取镜像详情API为/images/{image_id}/json),若容器运行时为containerd,则需要通过containerd的API获取容器详情及镜像详情。
步骤S408,确定相应的系统调用被容器异常执行,并输出告警信息。
在根据系统调用事件,确定出相应的系统调用对应的执行进程来自于容器的容器id后,可以确定该系统调用被容器异常执行,并输出相应的告警信息。该告警信息中可以包括:镜像详情、容器详情、容器内产生异常系统调用的进程详情、以及异常系统调用等。
可选的,容器安全组件在对系统调用进行检测,确定出容器内的进程执行异常系统调用后,可以将异常系统调用事件,即异常系统调用对应的调用监测信息发送给提供容器安全服务的容器安全应用,以使目标对象可以通过该容器安全应用对容器内进程执行的异常系统调用进行查看和管理等操作。
图5a示出了本申请中的另一种容器内异常系统调用的检测方法的流程图,该方法可以由终端设备中安装的容器安全应用执行,该终端设备可以是图1中的终端设备110。如图5a所示,包括以下步骤:
步骤S501,响应于针对容器内异常系统调用的检测操作,向容器安全组件发送相应的检测请求。
其中,检测请求中携带有包括至少一个系统调用的系统调用配置信息。
步骤S502,接收容器安全组件基于至少一个系统调用各自对应的调用监测信息,确定相应的系统调用的执行进程来自于容器时,返回的系统调用被异常执行的检测结果。
容器安全组件在接收到容器安全应用发送的检测请求后,可以通过宿主机中的性能监测框架,分别开启与至少一个系统调用相对应的目标监测点,并通过至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息,从而根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出系统调用被异常执行的检测结果。详细过程可以参阅图2,在此不作赘述。
容器安全组件在确定出系统调用被异常执行的检测结果后,可以将该检测结果发送给容器安全应用。
步骤S503,响应于展示数据的操作,展示检测结果。
响应于展示数据的操作,可以在容器安全应用中展示系统调用被异常执行的检测结果。
可选的,容器安全应用中的检测结果展示可以如图5b所示。图5b中展示有多个系统调用被异常执行的检测结果,即异常系统调用事件页面,在该页面中,显示有多个异常系统调用对应的事件列表。对于每个异常系统调用事件,目标对象可以查看该异常系统调用对应的执行进程的进程路径、系统调用名称、首次生成时间、最近生成时间、事件数量、容器名称/ID、镜像名称/ID、节点名称和当前状态等。
例如,对于系统调用名称为“1_create”的异常系统调用,在该事件页面中,可以查看到该异常系统调用对应的进程路径为/tmp/1_exec,首次生成时间为2021-7-28 09:56:05,最近生成时间为2021-7-28 10:02:17,事件数量为2,容器名称/ID为1,镜像名称/ID为2等等。
在该页面中,目标对象也可以对产生的异常系统调用进行处理,响应于目标对象的“立即处理”点击操作,可以对目标容器内被攻破的服务或容器编排系统进行修复,以达到解决产生的异常系统调用问题的目的。
响应于目标对象针对图5b中的任一异常系统调用事件栏的“查看详情”点击操作,可以展示如图6所示的事件详情页面。在事件详情页面中,也可以展示异常系统调用对应的相关信息,如首次生成时间,容器名称/ID、镜像名称/ID等。此外,在该事件详情页面中,还可以展示异常系统调用对应的进程详细信息,如,进程PID、进程权限、进程树等,以及父进程信息和事件描述。
在一种实施例中,检测结果中包括与异常执行系统调用的目标容器相关联的目标镜像信息,则容器安全应用在接收到容器安全组件返回的系统调用被异常执行的检测结果后,还可以将检测结果中包括的目标镜像信息,与预设编辑名单中包括的至少一个预设镜像信息进行比对,当至少一个预设镜像信息中存在与目标镜像信息相匹配的目标预设镜像信息时,响应于展示数据的操作,可以不展示该检测结果。
具体地,响应于目标对象针对图5b中的“白名单管理”的点击操作,可以显示如图7所示的白名单编辑页面。在该页面中,目标对象可以对异常系统调用事件页面中包括的异常系统调用事件进行编辑,将异常系统调用事件对应的目标容器相关联的目标镜像信息加入至预设编辑名单中。这是因为虽然某些系统调用被容器调用时,可以认为这些系统调用为异常系统调用,而有些镜像的运行离不开执行这些系统调用,此时目标对象可以将这些镜像加入到“白名单”中,以使后续在对系统调用配置信息中包括的至少一个系统调用对应的异常系统调用事件进行分析,确定出系统调用被异常执行的检测结果后,可以将这些检测结果中包括的目标镜像信息,与加入到“白名单”中的预设镜像信息进行比对,如果预设镜像信息中包含有目标镜像信息,则可以不对该目标镜像信息对应的检测结果进行展示。
例如,预设镜像信息中包括有镜像A和镜像B,检测结果中包括有系统调用1对应的镜像A、系统调用2对应的镜像B、系统调用3对应的镜像C和系统调用4对应的镜像D。将检测结果与预设镜像信息进行比对,可以确定预设镜像信息中包含有系统调用1对应的镜像A和系统调用2对应的镜像B,则在展示检测结果时,可以只展示系统调用3和系统调用4分别对应的检测结果。
在一些实施例中,本申请提出的容器内异常系统调用的检测方法的总体过程可以按照图8a中示出的过程来进行实现,该方法可以由电子设备中的容器安全组件执行,该电子设备可以是图1中的终端设备110和/或服务器130。如图8a所示,包括以下步骤:
步骤S801,采用内存映射方式,将缓冲区从宿主机的内核空间映射到容器安全组件的地址空间中。
当宿主机中包括有多个内核时,对于每个内核,可以在每个内核中设置一个缓冲区,并采用内存映射方式,将缓冲区从内核空间映射到容器安全组件的地址空间中。其中,缓冲区用于存储系统调用对应的调用监测信息。
步骤S802,获得包括至少一个系统调用的系统调用配置信息。
系统调用配置信息中包括可能在容器出现异常时被执行的至少一个系统调用。
步骤S803,根据系统调用与监测点之间的关联关系,分别确定与至少一个系统调用相对应的目标监测点。
其中,监测点为预先在系统调用对应的代码中插入的插桩代码,且系统调用与监测点之间具有关联关系,即一个系统调用具有一个与其对应的目标监测点。
步骤S804,通过宿主机中的性能监测框架,分别开启至少一个目标监测点。
步骤S805,基于至少一个目标监测点,分别获得相应的系统调用对应的调用监测信息。
步骤S806,通过性能监测框架,将获得的至少一个调用监测信息添加到缓冲区中。
步骤S807,从缓冲区中,依次读取至少一个调用监测信息。
在将至少一个调用监测信息添加到缓冲区中后,容器安全组件可以从缓冲区中,依次读取至少一个调用监测信息。
步骤S808,从每个调用监测信息中,获取相应的系统调用的执行进程的进程信息。
步骤S809,根据进程信息与控制组cgroup信息之间的对应关系,确定进程信息相对应的目标cgroup信息。
步骤S810,基于cgroup信息与进程载体之间的对应关系,确定目标cgroup信息对应的目标进程载体。
其中,进程载体可以是容器或宿主机。
步骤S811,若目标进程载体为容器,则输出告警信息。
当根据系统调用对应的调用监测信息,确定系统调用对应的执行进程来自于容器时,可以输出系统调用被异常执行的告警信息。
如图8b所示,其为本申请实施例中所列举的一种容器内异常系统调用的检测方法的具体场景示意图,目标对象可以通过终端设备上安装的容器安全应用,向服务器发送对容器内异常系统调用进行检测的检测请求,该检测请求中携带有包括多个可能被容器异常执行的系统调用的系统调用配置信息。服务器中的容器安全组件在接收到终端设备发送的检测请求后,假设该系统调用配置信息中包括有系统调用A、系统调用B和系统调用C,则容器安全组件可以通过性能监测框架,分别开启与系统调用A相对应的监测点T1、与系统调用B相对应的监测点T2和与系统调用C相对应的监测点T3。基于监测点T1,可以获取到系统调用A对应的调用监测信息A,基于监测点T2,可以获取到系统调用B对应的调用监测信息B,基于监测点T3,可以获取到系统调用C对应的调用监测信息C,通过分别对调用监测信息A、调用监测信息B和调用监测信息C的分析,确定系统调用A对应的执行进程来自于容器1,系统调用B和系统调用C对应的执行进程来自于容器2。
容器安全组件在得到检测结果后,可以将该检测结果发送给终端设备,以使终端设备可以通过容器安全应用向目标对象输出告警信息,并展示该检测结果,且该检测结果可以为系统调用A被容器1异常执行、系统调用B为容器2异常执行,系统调用C被容器2异常执行。
本申请提出的容器内异常系统调用的检测方法,可以通过宿主机中的性能监测框架,将宿主机内核中的缓冲区映射到容器安全组件进程的应用层内存地址空间中,在获取到系统调用配置信息中包括的至少一个系统调用后,可以通过性能监测框架,分别开启与至少一个系统调用相对应的目标监测点,并基于至少一个目标监测点,分别获得相应的系统调用对应的调用监测信息,在通过性能监测框架,将获得的至少一个调用监测信息添加到缓冲区中,以使容器安全组件从缓冲区中读取至少一个调用监测信息后,根据至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定系统调用被异常执行。该方法不需要通过启用一个专属的监测进程来对系统调用进行抓取,而是直接采用宿主机内核中的perf性能监测框架,抓取可能来自于容器内的系统调用,并通过对抓取得到的系统调用事件的分析,在确定相应的系统调用来自于容器内时,发出告警信息,从而可以避免在抓取系统调用的过程中,宿主机内核频繁地进行进程切换而导致的性能问题,同时可以实现对容器内进程执行的异常系统调用进行检测,及时捕获容器内进程对宿主机内核存在潜在破坏的行为,以提高宿主机系统的稳定性。
与图2所示的容器内异常系统调用的检测方法基于同一发明构思,本申请实施例中还提供了一种容器内异常系统调用的检测装置,该容器内异常系统调用的检测装置可以布设在服务器或终端设备中。由于该装置是本申请容器内异常系统调用的检测方法对应的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见上述方法的实施,重复之处不再赘述。
图9示出了本申请实施例提供的一种容器内异常系统调用的检测装置的结构示意图,如图9所示,该容器内异常系统调用的检测装置包括系统调用确定单元901、监测点开启单元902、监测信息获取单元903和异常调用确定单元904。
其中,系统调用确定单元901,用于获取包括至少一个系统调用的系统调用配置信息;
监测点开启单元902,用于通过宿主机中的性能监测框架,分别开启与至少一个系统调用相对应的目标监测点;其中,每个目标监测点为预先在相应的系统调用对应的代码中插入的插桩代码;
监测信息获取单元903,用于基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息;
异常调用确定单元904,用于根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出系统调用被异常执行的检测结果。
可选的,监测点开启单元902,具体用于:
根据系统调用与监测点之间的关联关系,分别确定与至少一个系统调用相对应的目标监测点;
通过性能监测框架,开启获得的至少一个目标监测点。
可选的,异常调用确定单元904,具体用于:
针对获得的至少一个调用监测信息,分别执行以下操作:
从一个调用监测信息中,获取相应的系统调用的执行进程的进程信息;
根据进程信息与控制组信息之间的对应关系,确定进程信息相对应的目标控制组信息;目标控制组信息包含:执行进程关联的容器配置信息;
若基于目标控制组信息,确定执行进程归属于容器,则确定系统调用被异常执行。
可选的,异常调用确定单元904,还用于:
基于控制组信息与进程载体之间的对应关系,确定目标控制组信息对应的目标进程载体;进程载体为容器或宿主机;
若目标进程载体为容器,则输出告警信息;告警信息用于表征系统调用被异常执行。
可选的,异常调用确定单元904,还用于:
根据控制组信息与容器号之间的对应关系,若确定出与目标控制组信息相对应的目标容器号,则确定系统调用被目标容器号对应的目标容器异常执行,并输出系统调用被目标容器异常执行的检测结果。
可选的,异常调用确定单元904,还用于:
获取与系统调用被异常执行相关联的异常监测信息;异常监测信息包括以下至少一种:
系统调用的名称、系统调用的执行进程路径、目标容器的容器号和容器名称、与目标容器相关联的镜像号和镜像名称;
基于异常监测信息,输出系统调用被目标容器异常执行的检测结果。
可选的,宿主机中包括至少一个内核,如图10所示,上述容器内异常系统调用的检测装置还可以包括缓冲区设置单元1001,用于:
针对至少一个内核,分别执行以下操作:
在一个内核中设置一个缓冲区,并采用内存映射方式,将一个缓冲区从一个内核空间映射到容器安全组件的地址空间中;其中,缓冲区用于存储获得的至少一个调用监测信息。
可选的,如图10所示,上述容器内异常系统调用的检测装置还可以包括监测信息处理单元1002,用于:
通过性能监测框架,将获得的至少一个调用监测信息添加到至少一个缓冲区中;
从至少一个缓冲区中,依次读取至少一个调用监测信息。
与图5a所示的容器内异常系统调用的检测方法基于同一发明构思,本申请实施例中还提供了一种容器内异常系统调用的检测装置,该容器内异常系统调用的检测装置可以布设在终端设备中。由于该装置是本申请容器内异常系统调用的检测方法对应的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见上述方法的实施,重复之处不再赘述。
图11示出了本申请实施例提供的一种容器内异常系统调用的检测装置的结构示意图,如图11所示,该容器内异常系统调用的检测装置包括请求发送单元1101、检测结果接收单元1102和检测结果展示单元1104。
其中,请求发送单元1101,用于响应于针对容器内异常系统调用的检测操作,向容器安全组件发送相应的检测请求;检测请求中携带有包括至少一个系统调用的系统调用配置信息;
检测结果接收单元1102,用于接收容器安全组件基于至少一个系统调用各自对应的调用监测信息,确定相应的系统调用的执行进程来自于容器时,返回的系统调用被异常执行的检测结果;
检测结果展示单元1103,用于响应于展示数据的操作,展示检测结果。
可选的,检测结果中包括与异常执行系统调用的目标容器相关联的目标镜像信息;检测结果展示单元1103,还用于:
将目标镜像信息,与预设编辑名单中包括的至少一个预设镜像信息进行比对;
若至少一个预设镜像信息中存在与目标镜像信息相匹配的目标预设镜像信息,则响应于展示数据的操作,不展示检测结果。
与上述方法实施例和装置实施例基于同一发明构思,本申请实施例中还提供了一种电子设备。
在一种实施例中,电子设备可以是服务器,如图1所示的服务器130。在该实施例中,电子设备的结构可以如图12所示,包括存储器1201,通讯模块1203以及一个或多个处理器1202。
存储器1201,用于存储处理器1202执行的计算机程序。存储器1201可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1201可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1201也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器1201是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1201可以是上述存储器的组合。
处理器1202,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1202,用于调用存储器1201中存储的计算机程序时实现上述容器内异常系统调用的检测方法。
通讯模块1203用于与终端设备和其他电子设备进行通信。如果电子设备为服务器,则服务器可以通过通讯模块1203向终端设备发送的异常系统调用对应的调用监测信息。
本申请实施例中不限定上述存储器1201、通讯模块1203和处理器1202之间的具体连接介质。本公开实施例在图12中以存储器1201和处理器1202之间通过总线1204连接,总线1204在图12中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1204可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在另一种实施例中,电子设备可以为手机、平板电脑、POS(Point of Sales,销售终端)、车载电脑、智能穿戴设备、PC机等任意电子设备,该电子设备也可以是图1中所示的终端设备110。
图13示出了一种本申请实施例提供的电子设备的结构框图。如图13所示,该电子设备包括:射频(Radio Frequency,RF)电路1310、存储器1320、输入单元1330、显示单元1340、传感器1350、音频电路1360、无线保真(wireless fidelity,WiFi)模块1370、处理器1380等部件。本领域技术人员可以理解,图13中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图13对电子设备的各个构成部件进行具体的介绍:
RF电路1310可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1380处理;另外,将设计上行的数据发送给基站。
存储器1320可用于存储软件程序以及模块,如本申请实施例中的容器内异常系统调用的检测方法以及装置对应的程序指令/模块,处理器1380通过运行存储在存储器1320的软件程序以及模块,从而执行电子设备的各种功能应用以及数据处理,如本申请实施例提供的容器内异常系统调用的检测方法。存储器1320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个应用的应用程序等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器1320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1330可用于接收目标对象输入的数字或字符信息,以及产生与终端的目标对象设置以及功能控制有关的键信号输入。
可选的,输入单元1330可包括触控面板1331以及其他输入设备1332。
其中,触控面板1331,也称为触摸屏,可收集目标对象在其上或附近的触摸操作(比如目标对象使用手指、触笔等任何适合的物体或附件在触控面板1331上或在触控面板1331附近的操作),并根据预先设定的程式实现相应的操作,如目标对象点击功能模块的快捷标识的操作等。可选的,触控面板1331可以包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测目标对象的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1380,并能接收处理器1380发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1331。
可选的,其他输入设备1332可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1340可用于显示由目标对象输入的信息或展示给目标对象的界面信息以及电子设备的各种菜单。显示单元1340即为终端设备的显示系统,用于呈现界面,如显示桌面、应用的操作界面或直播应用的操作界面等。
显示单元1340可以包括显示面板1341。可选的,显示面板1341可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置。
进一步的,触控面板1331可覆盖显示面板1341,当触控面板1331检测到在其上或附近的触摸操作后,传送给处理器1380以确定触摸事件的类型,随后处理器1380根据触摸事件的类型在显示面板1341上提供相应的界面输出。
虽然在图13中,触控面板1331与显示面板1341是作为两个独立的部件来实现电子设备的输入和输入功能,但是在某些实施例中,可以将触控面板1331与显示面板1341集成而实现终端的输入和输出功能。
电子设备还可包括至少一种传感器1350,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1341的亮度,接近传感器可在电子设备移动到耳边时,关闭显示面板1341的背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1360、扬声器1361,传声器1362可提供对象与电子设备之间的音频接口。音频电路1360可将接收到的音频数据转换后的电信号,传输到扬声器1361,由扬声器1361转换为声音信号输出;另一方面,传声器1362将收集的声音信号转换为电信号,由音频电路1360接收后转换为音频数据,再将音频数据输出处理器1380处理后,经RF电路1310以发送给比如另一电子设备,或者将音频数据输出至存储器1320以便进一步处理。
WiFi属于短距离无线传输技术,电子设备通过WiFi模块1370可以帮助目标对象收发电子邮件、浏览网页和访问流式媒体等,它为对象提供了无线的宽带互联网访问。虽然图13示出了WiFi模块1370,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1380是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器1320内的软件程序和/或模块,以及调用存储在存储器1320内的数据,执行电子设备的各种功能和处理数据。可选的,处理器1380可包括一个或多个处理单元;可选的,处理器1380可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、应用及应用内部的功能模块等软件程序,如本申请实施例提供的容器内异常系统调用的检测方法等。调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1380中。
可以理解,图13所示的结构仅为示意,电子设备还可包括比图13中所示更多或者更少的组件,或者具有与图13所示不同的配置。图13中所示的各组件可以采用硬件、软件或其组合实现。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的容器内异常系统调用的检测方法。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (15)

1.一种容器内异常系统调用的检测方法,其特征在于,包括:
获取包括至少一个系统调用的系统调用配置信息;
通过宿主机中的性能监测框架,分别开启与所述至少一个系统调用相对应的目标监测点;其中,每个目标监测点为预先在相应的系统调用对应的代码中插入的插桩代码;
基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息;
根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出所述系统调用被异常执行的检测结果。
2.如权利要求1所述的方法,其特征在于,所述通过宿主机中的性能监测框架,分别开启与所述至少一个系统调用相对应的目标监测点,包括:
根据系统调用与监测点之间的关联关系,分别确定与所述至少一个系统调用相对应的目标监测点;
通过所述性能监测框架,开启获得的至少一个目标监测点。
3.如权利要求1所述的方法,其特征在于,所述根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出所述系统调用被异常执行的检测结果,包括:
针对获得的至少一个调用监测信息,分别执行以下操作:
从一个调用监测信息中,获取相应的系统调用的执行进程的进程信息;
根据进程信息与控制组信息之间的对应关系,确定所述进程信息相对应的目标控制组信息;所述目标控制组信息包含:所述执行进程关联的容器配置信息;
若基于所述目标控制组信息,确定所述执行进程归属于容器,则确定所述系统调用被异常执行,并输出相应的检测结果。
4.如权利要求3所述的方法,其特征在于,所述确定所述进程信息相对应的目标控制组信息之后,所述方法还包括:
基于控制组信息与进程载体之间的对应关系,确定所述目标控制组信息对应的目标进程载体;所述进程载体为容器或宿主机;
若所述目标进程载体为容器,则输出告警信息;所述告警信息用于表征所述系统调用被异常执行。
5.如权利要求3所述的方法,其特征在于,所述确定所述进程信息相对应的目标控制组信息之后,所述方法还包括:
根据控制组信息与容器号之间的对应关系,若确定出与所述目标控制组信息相对应的目标容器号,则确定所述系统调用被所述目标容器号对应的目标容器异常执行,并输出所述系统调用被所述目标容器异常执行的检测结果。
6.如权利要求5所述的方法,其特征在于,所述确定所述系统调用被所述目标容器号对应的目标容器异常执行之后,所述方法还包括:
获取与所述系统调用被异常执行相关联的异常监测信息;所述异常监测信息包括以下至少一种:
所述系统调用的名称、所述系统调用的执行进程路径、所述目标容器的容器号和容器名称、与所述目标容器相关联的镜像号和镜像名称;
基于所述异常监测信息,输出所述系统调用被所述目标容器异常执行的检测结果。
7.如权利要求1~6中任一项所述的方法,其特征在于,所述宿主机中包括至少一个内核,所述方法还包括:
针对所述至少一个内核,分别执行以下操作:
在一个内核中设置一个缓冲区,并采用内存映射方式,将所述一个缓冲区从所述一个内核空间映射到容器安全组件的地址空间中;其中,所述缓冲区用于存储所述获得的至少一个调用监测信息。
8.如权利要求7所述的方法,其特征在于,所述分别获得相应的系统调用对应的调用监测信息之后,确定执行相应的系统调用的进程来自于容器之前,所述方法还包括:
通过所述性能监测框架,将获得的至少一个调用监测信息添加到至少一个缓冲区中;
从所述至少一个缓冲区中,依次读取所述至少一个调用监测信息。
9.一种容器内异常系统调用的检测方法,其特征在于,包括:
响应于针对容器内异常系统调用的检测操作,向容器安全组件发送相应的检测请求;所述检测请求中携带有包括至少一个系统调用的系统调用配置信息;
接收所述容器安全组件基于所述至少一个系统调用各自对应的调用监测信息,确定相应的系统调用的执行进程来自于容器时,返回的所述系统调用被异常执行的检测结果;
响应于展示数据的操作,展示所述检测结果。
10.如权利要求9所述的方法,其特征在于,所述检测结果中包括与异常执行所述系统调用的目标容器相关联的目标镜像信息;所述接收所述容器安全组件返回的所述系统调用被异常执行的检测结果之后,所述方法还包括:
将所述目标镜像信息,与预设编辑名单中包括的至少一个预设镜像信息进行比对;
若所述至少一个预设镜像信息中存在与所述目标镜像信息相匹配的目标预设镜像信息,则响应于展示数据的操作,不展示所述检测结果。
11.一种容器内异常系统调用的检测装置,其特征在于,包括:
系统调用确定单元,用于获取包括至少一个系统调用的系统调用配置信息;
监测点开启单元,用于通过宿主机中的性能监测框架,分别开启与所述至少一个系统调用相对应的目标监测点;其中,每个目标监测点为预先在相应的系统调用对应的代码中插入的插桩代码;
监测信息获取单元,用于基于至少一个目标监测点,分别获取相应的系统调用对应的调用监测信息;
异常调用确定单元,用于根据获得的至少一个调用监测信息,在确定相应的系统调用的执行进程来自于容器时,确定并输出所述系统调用被异常执行的检测结果。
12.一种容器内异常系统调用的检测装置,其特征在于,包括:
请求发送单元,用于响应于针对容器内异常系统调用的检测操作,向容器安全组件发送相应的检测请求;所述检测请求中携带有包括至少一个系统调用的系统调用配置信息;
检测结果接收单元,用于接收所述容器安全组件基于所述至少一个系统调用各自对应的调用监测信息,确定相应的系统调用的执行进程来自于容器时,返回的所述系统调用被异常执行的检测结果;
检测结果展示单元,用于响应于展示数据的操作,展示所述检测结果。
13.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~10中任一项所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,其包括程序代码,当所述程序代码在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1~10中任一项所述方法的步骤。
15.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1~10中任一项所述方法的步骤。
CN202210424325.7A 2022-04-21 2022-04-21 一种容器内异常系统调用的检测方法和相关装置 Pending CN116974685A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210424325.7A CN116974685A (zh) 2022-04-21 2022-04-21 一种容器内异常系统调用的检测方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210424325.7A CN116974685A (zh) 2022-04-21 2022-04-21 一种容器内异常系统调用的检测方法和相关装置

Publications (1)

Publication Number Publication Date
CN116974685A true CN116974685A (zh) 2023-10-31

Family

ID=88480130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210424325.7A Pending CN116974685A (zh) 2022-04-21 2022-04-21 一种容器内异常系统调用的检测方法和相关装置

Country Status (1)

Country Link
CN (1) CN116974685A (zh)

Similar Documents

Publication Publication Date Title
US10552610B1 (en) Adaptive virtual machine snapshot update framework for malware behavioral analysis
CN106575243B (zh) 管理程序托管的虚拟机取证
CN103843004B (zh) 装置定制白名单
CN109074278B (zh) 验证移动应用中的有状态动态链接
US20140351939A1 (en) Systems and methods for determining an objective security assessment for a network of assets
US11503070B2 (en) Techniques for classifying a web page based upon functions used to render the web page
CN112989330B (zh) 容器的入侵检测方法、装置、电子设备及存储介质
US9990214B2 (en) Dynamic agent delivery
CN112148610A (zh) 测试用例执行方法、装置、计算机设备和存储介质
US8849947B1 (en) IT discovery of virtualized environments by scanning VM files and images
US9727394B2 (en) Establishing causality order of computer trace records
CN110362488A (zh) 一种页面测试方法、装置、电子设备及存储介质
CN113849356A (zh) 一种设备测试方法、装置、电子设备和存储介质
CN116756016A (zh) 多浏览器测试方法、装置、设备、介质及程序产品
US20230118838A1 (en) Advanced agent instrumentation for opentelemetry implementations
CN110881030A (zh) 基于logstash的记录web服务管理员操作日志的方法及装置
CN116974685A (zh) 一种容器内异常系统调用的检测方法和相关装置
CN115051867A (zh) 一种非法外联行为的检测方法、装置、电子设备及介质
US11822452B2 (en) Dynamic remote collection of supplemental diagnostic data and triggering of client actions for client software application
CN115828262A (zh) 开源组件漏洞扫描方法、装置、设备及存储介质
CN112351008B (zh) 网络攻击分析方法、装置、可读存储介质及计算机设备
CN112182561B (zh) 一种后门的检测方法、装置、电子设备和介质
CN114422253A (zh) 分布式漏洞扫描系统、方法及存储介质
CN114462030A (zh) 隐私政策的处理、取证方法、装置、设备及存储介质
CN115220859A (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