CN105389197A - 用于基于容器的虚拟化系统的操作捕获方法和装置 - Google Patents

用于基于容器的虚拟化系统的操作捕获方法和装置 Download PDF

Info

Publication number
CN105389197A
CN105389197A CN201510670474.1A CN201510670474A CN105389197A CN 105389197 A CN105389197 A CN 105389197A CN 201510670474 A CN201510670474 A CN 201510670474A CN 105389197 A CN105389197 A CN 105389197A
Authority
CN
China
Prior art keywords
signal
system call
container
function
kernel
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.)
Granted
Application number
CN201510670474.1A
Other languages
English (en)
Other versions
CN105389197B (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201510670474.1A priority Critical patent/CN105389197B/zh
Publication of CN105389197A publication Critical patent/CN105389197A/zh
Priority to JP2016159649A priority patent/JP6196356B2/ja
Priority to US15/237,940 priority patent/US10102373B2/en
Priority to KR1020160103690A priority patent/KR101845162B1/ko
Application granted granted Critical
Publication of CN105389197B publication Critical patent/CN105389197B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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
    • 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/445Program loading or initiating
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了用于基于容器的虚拟化系统的操作捕获方法、安全控制方法和装置。所述操作捕获方法的一具体实施方式包括:在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作;如果监测到进程启动的操作,则在内核态执行对信号处理操作进行捕获的步骤,包括:确定所述进程中是否存在未处理的信号;如果存在所述信号,则将所述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将所述信号的信号编号传给所述第一函数;如果所述第一函数被调用,则捕获到调用时传入的信号编号对应的信号处理操作。该实施方式实现了对容器中的进程访问宿主机内核的操作的捕获,以便后续对捕获到的操作进行安全控制,以保障系统安全。

Description

用于基于容器的虚拟化系统的操作捕获方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及计算机安全技术领域,尤其涉及用于基于容器的虚拟化系统的操作捕获方法、安全控制方法和装置。
背景技术
虚拟化,是指通过虚拟化技术将一台计算机(物理机)虚拟为多台逻辑计算机(虚拟机)。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。目前,基于容器(Container-Based)的虚拟化技术是应用最多的虚拟化技术之一,其可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂处理。基于容器的虚拟化系统即为通过基于容器的虚拟化技术创建的包括容器和宿主机的虚拟化环境。容器(Container)有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,基于容器的虚拟化技术的优势在于:与宿主机使用同一个内核,性能损耗小,并且不需要指令级模拟。
然而,在基于容器的虚拟化系统中,由于容器可以直接访问宿主的内核,容器中的进程可以很容易攻破宿主机内核并拿到宿主机控制权,从而威胁到整个宿主机以及其他容器的安全。为了保证基于容器的虚拟化系统的安全,需要对容器中的进程访问宿主机内核的操作进行捕获,并对捕获到的操作进行相应的处理,而目前还没有方法实现对容器中的进程访问宿主机内核的操作的捕获。
发明内容
本申请的目的在于提出一种用于基于容器的虚拟化系统的操作捕获方法、安全控制方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于基于容器的虚拟化系统的操作捕获方法,所述方法包括:在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作;如果监测到所述进程启动的操作,则在内核态执行对信号处理操作进行捕获的步骤,所述对信号处理操作进行捕获的步骤包括:确定所述进程中是否存在未处理的信号;如果存在所述信号,则将所述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将所述信号的信号编号传给所述第一函数;如果所述第一函数被调用,则捕获到调用时传入的信号编号对应的信号处理操作。
第二方面,本申请提供了一种用于基于容器的虚拟化系统的安全控制方法,所述方法包括:通过第一方面所述的方法,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作,所述访问内核的操作为信号处理操作或系统调用操作;如果捕获到的所述操作是信号处理操作,则获取所述信号处理操作对应的信号编号;将所述信号编号对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行。
第三方面,本申请提供了一种用于基于容器的虚拟化系统的操作捕获装置,所述装置包括:进程启动监测单元,用于在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作;信号处理捕获单元,用于在进程启动监测单元监测到所述进程启动的操作时,在内核态执行对信号处理操作进行捕获的步骤,所述信号处理捕获单元包括:信号检测子单元,用于确定所述进程中是否存在未处理的信号;执行指令跳转子单元,用于在存在所述信号时,将所述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将所述信号的信号编号传给所述第一函数;信号处理捕获子单元,用于在所述第一函数被调用时,捕获到调用时传入的信号编号对应的信号处理操作。
第四方面,本申请提供了用于基于容器的虚拟化系统的安全控制装置,所述装置包括:操作捕获单元,用于通过第一方面所述的方法,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作,所述访问内核的操作为信号处理操作或系统调用操作;信号编号获取单元,用于在捕获到的所述操作是信号处理操作时,获取所述信号处理操作对应的信号编号;特权级别切换单元,用于将所述信号编号对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行。
本申请提供的用于基于容器的虚拟化系统的操作捕获方法、安全控制方法和装置,通过将进程中的未处理的信号所指示的执行指令跳转到自定义的第一函数的入口地址,从而捕获到了可能访问内核的信号处理操作,实现了对容器中的进程访问宿主机内核的操作的捕获,以便后续对捕获到的操作进行安全控制,以保障系统安全。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是根据本申请的用于基于容器的虚拟化系统的操作捕获方法的一个实施例的流程图;
图2是根据本申请的用于基于容器的虚拟化系统的操作捕获方法的另一个实施例的流程图;
图3是根据本申请的用于基于容器的虚拟化系统的安全控制方法的一个实施例的流程图;
图4是根据本申请的用于基于容器的虚拟化系统的操作捕获装置的一个实施例的结构示意图;
图5是根据本申请的用于基于容器的虚拟化系统的安全控制装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的基于容器的虚拟化系统所在的物理机的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了根据本申请的用于基于容器的虚拟化系统的操作捕获方法的一个实施例的流程100。
如图1所示,本实施例的用于基于容器的虚拟化系统的操作捕获方法包括以下步骤:
步骤101,在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作。
在本实施例中,步骤101可以包括:监测与上述进程被调到虚拟化系统的宿主机的中央处理器处执行对应的操作。根据CPU(中央处理器)虚拟化技术,进程在运行时会先占用内核中的一个虚拟CPU,因此在本步骤中,可以通过在对虚拟CPU的处理中增加监测处理,以实现对上述进程启动的操作的监测。
步骤102,如果监测到上述进程启动的操作,则在内核态确定上述进程中是否存在未处理的信号。
在本实施例中,监测到上述进程启动的操作后,在内核态可以得到上述进程的task_struct结构(用于Linux操作系统的进程描述符),通过该task_struct结构就能确定上述进程中是否存在未处理的信号。
步骤103,如果存在上述信号,则将上述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将上述信号的信号编号传给上述第一函数。
在本实施例中,在步骤102之前,可以在用户态将上述第一函数的入口地址传入上述虚拟化系统中的宿主机的内核,并在内核态将上述第一函数的入口地址保存于内核空间中。相应地,上述将上述信号所指示的执行指令跳转到自定义的第一函数的入口地址可以包括:获取上述内核空间中存储的上述第一函数的入口地址;将上述信号所指示的执行指令跳转到上述第一函数的入口地址。
步骤104,如果上述第一函数被调用,则捕获到调用时传入的信号编号对应的信号处理操作。
每个信号都对应一个正整数常量,称为信号编号,定义在系统头文件中。在本实施例中,由于在步骤103中将上述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将上述信号的信号编号传给了上述第一函数,因此在第一函数被调用并执行时,在第一函数中就能获得传入的信号编号,于是就捕获到了该信号编号对应的信号处理操作。
本实施例提供的用于基于容器的虚拟化系统的操作捕获方法,通过将进程中的未处理的信号所指示的执行指令跳转到自定义的第一函数的入口地址,从而捕获到了可能访问内核的信号处理操作,实现了对容器中的进程访问宿主机内核的操作的捕获。
继续参考图2,图2示出了根据本申请的用于基于容器的虚拟化系统的操作捕获方法的另一个实施例的流程200。
如图2所示,本实施例的用于基于容器的虚拟化系统的操作捕获方法包括以下步骤:
步骤201,在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作。
在本实施例中,步骤201的具体处理可参考上述对图1对应实施例中步骤101的详细描述,在此不再赘述。
步骤202,如果监测到上述进程启动的操作,则在内核态执行对信号处理操作进行捕获的步骤。
其中,上述对信号处理操作进行捕获的步骤包括:
步骤2021,确定上述进程中是否存在未处理的信号。
步骤2022,如果存在上述信号,则将上述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将上述信号的信号编号传给上述第一函数。
步骤2023。如果上述第一函数被调用,则捕获到调用时传入的信号编号对应的信号处理操作。
在本实施例中,步骤2021、步骤2022以及步骤2023的具体处理可分别参考上述对图1对应实施例中步骤102、步骤103以及步骤104的详细描述,在此不再赘述。
步骤203,如果监测到上述进程启动的操作,则执行对系统调用操作进行捕获的步骤。
其中,上述对系统调用操作进行捕获的步骤包括:
步骤2031,在内核态通过读特殊模块寄存器(ModelSpecificRegister,MSR),获取系统调用的入口地址。
在本实施例中,如果在用户态监测到上述进程启动的操作,就可以在用户态发送自定义的命令(例如GET_SYSCALL)给内核态中的一个预定的接口。内核态的上述接口收到该命令后,就可以通过MSR_LSTAR命令来读特殊模块寄存器以获取到系统调用的入口地址。
步骤2032,在用户态将上述入口地址中的系统调用的入口函数的地址用自定义的第二函数的地址替代。
在本实施例中,本步骤可以在上述进程的地址空间中执行,通过步骤2021获取到的系统调用的入口地址中存储的数据为系统调用的入口函数的地址,将上述入口地址中原有的数据更改为自定义的第二函数的地址,这样在上述进程进行系统调用操作时,相关入口参数和系统调用号就可以在第二函数中获取到。
步骤2033,如果上述第二函数被调用,则捕获到调用上述第二函数的系统调用操作。
在本实施例中,通过步骤2032,实现了在上述进程进行系统调用操作时,在第二函数中获取到相关入口参数和系统调用号。因此,如果第二函数被调用并执行时,就捕获到了该系统调用号对应的系统调用操作。
需要说明的是,步骤203可以与步骤202同时进行,本实施例不对其执行顺序作限定。
从图2中可以看出,与图1对应的实施例相比,本实施例中的操作捕获方法的流程200增加了对系统调用操作进行捕获的步骤。由此,本实施例描述的方案可以更全面地捕获容器中的进程访问内核的操作,从而可以在后续对捕获到的操作采取一定的安全措施后,更全面地保障基于容器的虚拟化系统的安全。
下面参考图3,图3示出了根据本申请的用于基于容器的虚拟化系统的安全控制方法的一个实施例的流程300。
如图3所示,本实施例的用于基于容器的虚拟化系统的安全控制方法包括以下步骤:
步骤301,通过图1或图2对应的实施例的操作捕获方法,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作,上述访问内核的操作为信号处理操作或系统调用操作。
在本实施例中,步骤301的具体处理可参考上述对图1或图2对应实施例的详细描述,在此不再赘述。
步骤302,如果捕获到的上述操作是信号处理操作,则获取上述信号处理操作对应的信号编号。
在本实施例中,本步骤可以由图1或图2对应的实施例中的第一函数执行,由于在步骤301中将未处理的信号的信号编号传给了第一函数,因此在第一函数中能够获得上述信号处理操作对应的信号编号。
步骤303,将上述信号编号对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行。
中央处理器的特权级别Ring3是目前权限最低的特权级别,在Ring3下运行的程序只能执行相对安全的指令,不能执行比Ring3级别更高的相对危险的指令(如Ring0指令),因此在本实施例中,将上述信号编号对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行,使捕获到的信号处理操作所对应的执行指令在安全模式下运行,加强了基于容器的虚拟化系统的安全性。
在本实施例的一些实现方式中,步骤301可以通过图2对应实施例的操作捕获方法来捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作。以及本实施例的安全控制方法还可以包括:
如果捕获到的上述操作是系统调用操作,则根据捕获到的系统调用操作对应的系统调用号和入口参数,确定上述系统调用操作是否安全;如果确定上述系统调用操作不安全,则阻止上述系统调用操作。
其中,上述根据捕获到的系统调用操作对应的系统调用号和入口参数,确定上述系统调用操作是否安全可以包括:通过预先配置的配置文件来确定上述系统调用操作是否安全,上述配置文件用于指定待查系统调用号和\或待保护资源,以及与上述系统调用号和\或待保护资源关联的操作指示。例如,如果要对某个路径中的文件进行保护,不允许对这些文件进行写操作,则可以在配置文件中设置在系统调用号为与write()系统调用对应的系统调用号并且入口参数含有该路径时,所要采取的措施(例如,阻止该系统调用)。
上述实现方式增加了针对系统调用操作的安全控制方法,从而使得本申请的安全控制方法能够更加全面地保护基于容器的虚拟化系统。
本实施例提供的用于基于容器的虚拟化系统的安全控制方法,通过将捕获法到的信号处理操作对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行,从而使上述执行指令在安全模式下运行,阻止了危险指令的执行,加强了基于容器的虚拟化系统的安全。
进一步参考图4,作为对上述图1所示方法的实现,本申请提供了一种用于基于容器的虚拟化系统的操作捕获装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以应用于基于容器的虚拟化系统中。
如图4所示,本实施例的操作捕获装置400包括:进程启动监测单元401和信号处理捕获单元402。其中,进程启动监测单元401用于在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作;信号处理捕获单元402用于在进程启动监测单元监测到上述进程启动的操作时,在内核态执行对信号处理操作进行捕获的步骤。其中,信号处理捕获单元402包括:信号检测子单元4021,用于确定上述进程中是否存在未处理的信号;执行指令跳转子单元4022,用于在存在上述信号时,将上述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将上述信号的信号编号传给上述第一函数;信号处理捕获子单元4023,用于在上述第一函数被调用时,捕获到调用时传入的信号编号对应的信号处理操作。
在本实施例中,进程启动监测单元401可以进一步配置用于监测与上述进程被调到上述虚拟化系统的宿主机的中央处理器处执行对应的操作。进程启动监测单元401的具体处理可参考图1对应实施例中步骤101的详细描述,在此不再赘述。
在本实施例中,执行指令跳转子单元4022可以包括:第一函数入口地址获取模块(图中未示出),用于获取上述内核空间中存储的上述第一函数的入口地址;执行指令跳转模块(图中未示出),用于将上述信号所指示的执行指令跳转到上述第一函数的入口地址。
在本实施例中,信号检测子单元4021、执行指令跳转子单元4022以及信号处理捕获子单元4023的具体处理可分别参考图1对应实施例中步骤102、步骤103、步骤104的详细描述,在此不再赘述。
在本实施例的一些实现方式中,本实施例的操作捕获装置还可以包括:系统调用捕获单元403,用于在进程启动监测单元监测到上述进程启动的操作时,执行对系统调用操作进行捕获的步骤。其中,系统调用捕获单元403包括:系统调用入口地址获取子单元4031,用于在内核态通过读特殊模块寄存器,获取系统调用的入口地址;地址替代子单元4032,用于在用户态将上述入口地址中的系统调用的入口函数的地址用自定义的第二函数的地址替代;系统调用捕获子单元4033,用于在上述第二函数被调用时,捕获到调用上述第二函数的系统调用操作。
系统调用入口地址获取子单元4031、地址替代子单元4032以及系统调用捕获子单元4033可分别参考图2对应实施例中步骤2031、步骤2032、步骤2033的详细描述,在此不再赘述。
通过上述实现方式,使本实施例的操作捕获方法可以更全面地捕获容器中的进程访问内核的操作,从而可以在后续对捕获到的操作采取一定的安全措施后,更全面地保障基于容器的虚拟化系统的安全。
在本实施例的一些实现方式中,信号处理捕获单元402还可以包括:地址传入子单元(图中未示出),用于在确定上述进程中是否有未处理的信号之前,在用户态将上述第一函数的入口地址传入上述虚拟化系统中的宿主机的内核,并在内核态将上述第一函数的入口地址保存于内核空间中。
本实施例提供的用于基于容器的虚拟化系统的操作捕获装置,通过执行指令跳转子单元4022将进程中的未处理的信号所指示的执行指令跳转到自定义的第一函数的入口地址,从而捕获到了可能访问内核的信号处理操作,实现了对容器中的进程访问宿主机内核的操作的捕获。
本领域技术人员可以理解,上述操作捕获装置400还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图4中未示出。
继续参考图5,作为对上述图3所示方法的实现,本申请提供了一种用于基于容器的虚拟化系统的安全控制装置的一个实施例,该装置实施例与图3所示的方法实施例相对应,该装置具体可以应用于基于容器的虚拟化系统中。
如图5所示,本实施例的安全控制装置500包括:操作捕获单元501、信号编号获取单元502以及特权级别切换单元503。其中,操作捕获单元501,用于通过图4对应实施例提供的装置,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作,上述访问内核的操作为信号处理操作或系统调用操作;信号编号获取单元502,用于在捕获到的上述操作是信号处理操作时,获取上述信号处理操作对应的信号编号;特权级别切换单元503,用于将上述信号编号对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行。
在本实施例中,操作捕获单元501、信号编号获取单元502以及特权级别切换单元503可分别参考图3对应实施例中步骤301、步骤302、步骤303的详细描述,在此不再赘述。
在本实施例的一些实现方式中,本实施例的安全控制装置还可以包括:安全确定单元504,用于在捕获到的上述操作是系统调用操作时,根据捕获到的系统调用操作对应的系统调用号和入口参数,确定上述系统调用操作是否安全;操作阻止单元505,用于在确定上述系统调用操作不安全,则阻止上述系统调用操作。
其中,安全确定单元504可以进一步配置用于通过预先配置的配置文件来确定上述系统调用操作是否安全,上述配置文件用于指定待查系统调用号和\或待保护资源,以及与上述系统调用号和\或待保护资源关联的操作指示。安全确定单元504以及操作阻止单元505的具体处理及其所带来的技术效果可参考图3对应实施例中相关实现方式的详细描述,在此不再赘述。
本实施例提供的用于基于容器的虚拟化系统的安全控制装置,通过特权级别切换单元503将捕获法到的信号处理操作对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行,从而使上述执行指令在安全模式下运行,阻止了危险指令的执行,加强了基于容器的虚拟化系统的安全。
本领域技术人员可以理解,上述安全控制装置500还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图5中未示出。
下面参考图6,其示出了适于用来实现本申请实施例的基于容器的虚拟化系统的计算机系统600的结构示意图。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602以及RAM603通过总线604彼此相连。输入\输出(I\O)接口605也连接至总线604。
以下部件连接至I\O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I\O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,上述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和\或从可拆卸介质611被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和\或流程图中的每个方框、以及框图和\或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括进程启动监测单元和信号处理捕获单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,信号处理捕获单元还可以被描述为“捕获信号处理的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中上述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当上述一个或者多个程序被一个设备执行时,使得上述设备:在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作;如果监测到上述进程启动的操作,则在内核态执行对信号处理操作进行捕获的步骤,上述对信号处理操作进行捕获的步骤包括:确定上述进程中是否存在未处理的信号;如果存在上述信号,则将上述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将上述信号的信号编号传给上述第一函数;如果上述第一函数被调用,则捕获到调用时传入的信号编号对应的信号处理操作。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (16)

1.一种用于基于容器的虚拟化系统的操作捕获方法,其特征在于,所述方法包括:
在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作;
如果监测到所述进程启动的操作,则在内核态执行对信号处理操作进行捕获的步骤,所述对信号处理操作进行捕获的步骤包括:
确定所述进程中是否存在未处理的信号;
如果存在所述信号,则将所述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将所述信号的信号编号传给所述第一函数;
如果所述第一函数被调用,则捕获到调用时传入的信号编号对应的信号处理操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果监测到所述进程启动的操作,则执行对系统调用操作进行捕获的步骤,所述对系统调用操作进行捕获的步骤包括:
在内核态通过读特殊模块寄存器,获取系统调用的入口地址;
在用户态将所述入口地址中的系统调用的入口函数的地址用自定义的第二函数的地址替代;
如果所述第二函数被调用,则捕获到调用所述第二函数的系统调用操作。
3.根据权利要求1或2所述的方法,其特征在于,所述监测基于容器的虚拟化系统中的容器中的进程启动的操作,包括:
监测与所述进程被调到所述虚拟化系统的宿主机的中央处理器处执行对应的操作。
4.根据权利要求1或2所述的方法,其特征在于,所述对信号处理操作进行捕获的步骤还包括:
在确定所述进程中是否有未处理的信号之前,在用户态将所述第一函数的入口地址传入所述虚拟化系统中的宿主机的内核,并在内核态将所述第一函数的入口地址保存于内核空间中。
5.根据权利要求4所述的方法,其特征在于,所述将所述信号所指示的执行指令跳转到自定义的第一函数的入口地址,包括:
获取所述内核空间中存储的所述第一函数的入口地址;
将所述信号所指示的执行指令跳转到所述第一函数的入口地址。
6.一种用于基于容器的虚拟化系统的安全控制方法,其特征在于,所述方法包括:
通过权利要求1-5任一所述的方法,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作,所述访问内核的操作为信号处理操作或系统调用操作;
如果捕获到的所述操作是信号处理操作,则获取所述信号处理操作对应的信号编号;
将所述信号编号对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行。
7.根据权利要求6所述的安全控制方法,其特征在于,所述捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作包括:
通过权利要求2-5任一所述的方法,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作;以及
所述安全控制方法还包括:
如果捕获到的所述操作是系统调用操作,则根据捕获到的系统调用操作对应的系统调用号和入口参数,确定所述系统调用操作是否安全;
如果确定所述系统调用操作不安全,则阻止所述系统调用操作。
8.根据权利要求7所述的安全控制方法,其特征在于,所述根据捕获到的系统调用操作对应的系统调用号和入口参数,确定所述系统调用操作是否安全,包括:
通过预先配置的配置文件来确定所述系统调用操作是否安全,所述配置文件用于指定待查系统调用号和\或待保护资源,以及与所述系统调用号和\或待保护资源关联的操作指示。
9.一种用于基于容器的虚拟化系统的操作捕获装置,其特征在于,所述装置包括:
进程启动监测单元,用于在用户态监测基于容器的虚拟化系统中的容器中的进程启动的操作;
信号处理捕获单元,用于在进程启动监测单元监测到所述进程启动的操作时,在内核态执行对信号处理操作进行捕获的步骤,所述信号处理捕获单元包括:
信号检测子单元,用于确定所述进程中是否存在未处理的信号;
执行指令跳转子单元,用于在存在所述信号时,将所述信号所指示的执行指令跳转到自定义的第一函数的入口地址,并将所述信号的信号编号传给所述第一函数;
信号处理捕获子单元,用于在所述第一函数被调用时,捕获到调用时传入的信号编号对应的信号处理操作。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:系统调用捕获单元,用于在进程启动监测单元监测到所述进程启动的操作时,执行对系统调用操作进行捕获的步骤,所述系统调用捕获单元包括:
系统调用入口地址获取子单元,用于在内核态通过读特殊模块寄存器,获取系统调用的入口地址;
地址替代子单元,用于在用户态将所述入口地址中的系统调用的入口函数的地址用自定义的第二函数的地址替代;
系统调用捕获子单元,用于在所述第二函数被调用时,捕获到调用所述第二函数的系统调用操作。
11.根据权利要求9或10所述的装置,其特征在于,所述进程启动监测单元进一步配置用于监测与所述进程被调到所述虚拟化系统的宿主机的中央处理器处执行对应的操作。
12.根据权利要求9或10所述的装置,其特征在于,所述信号处理捕获单元还包括:
地址传入子单元,用于在确定所述进程中是否有未处理的信号之前,在用户态将所述第一函数的入口地址传入所述虚拟化系统中的宿主机的内核,并在内核态将所述第一函数的入口地址保存于内核空间中。
13.根据权利要求12所述的装置,其特征在于,所述执行指令跳转子单元包括:
第一函数入口地址获取模块,用于获取所述内核空间中存储的所述第一函数的入口地址;
执行指令跳转模块,用于将所述信号所指示的执行指令跳转到所述第一函数的入口地址。
14.一种用于基于容器的虚拟化系统的安全控制装置,其特征在于,所述装置包括:
操作捕获单元,用于通过权利要求9-13任一所述的装置,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作,所述访问内核的操作为信号处理操作或系统调用操作;
信号编号获取单元,用于在捕获到的所述操作是信号处理操作时,获取所述信号处理操作对应的信号编号;
特权级别切换单元,用于将所述信号编号对应的信号所指示的执行指令切换到中央处理器的特权级别Ring3下运行。
15.根据权利要求14所述的安全控制装置,其特征在于,所述操作捕获单元进一步配置用于通过权利要求10-13任一所述的装置,捕获基于容器的虚拟化系统中的容器中的进程的访问内核的操作;以及
所述安全控制装置还包括:
安全确定单元,用于在捕获到的所述操作是系统调用操作时,根据捕获到的系统调用操作对应的系统调用号和入口参数,确定所述系统调用操作是否安全;
操作阻止单元,用于在确定所述系统调用操作不安全,则阻止所述系统调用操作。
16.根据权利要求15所述的安全控制装置,其特征在于,所述安全确定单元进一步配置用于通过预先配置的配置文件来确定所述系统调用操作是否安全,所述配置文件用于指定待查系统调用号和\或待保护资源,以及与所述系统调用号和\或待保护资源关联的操作指示。
CN201510670474.1A 2015-10-13 2015-10-13 用于基于容器的虚拟化系统的操作捕获方法和装置 Active CN105389197B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201510670474.1A CN105389197B (zh) 2015-10-13 2015-10-13 用于基于容器的虚拟化系统的操作捕获方法和装置
JP2016159649A JP6196356B2 (ja) 2015-10-13 2016-08-16 コンテナに基づく仮想化システム用動作キャプチャ方法、および装置
US15/237,940 US10102373B2 (en) 2015-10-13 2016-08-16 Method and apparatus for capturing operation in a container-based virtualization system
KR1020160103690A KR101845162B1 (ko) 2015-10-13 2016-08-16 컨테이너 기반의 가상화 시스템용 조작 포획 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510670474.1A CN105389197B (zh) 2015-10-13 2015-10-13 用于基于容器的虚拟化系统的操作捕获方法和装置

Publications (2)

Publication Number Publication Date
CN105389197A true CN105389197A (zh) 2016-03-09
CN105389197B CN105389197B (zh) 2019-02-26

Family

ID=55421504

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510670474.1A Active CN105389197B (zh) 2015-10-13 2015-10-13 用于基于容器的虚拟化系统的操作捕获方法和装置

Country Status (4)

Country Link
US (1) US10102373B2 (zh)
JP (1) JP6196356B2 (zh)
KR (1) KR101845162B1 (zh)
CN (1) CN105389197B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107679399A (zh) * 2017-10-19 2018-02-09 郑州云海信息技术有限公司 一种基于容器的恶意代码检测沙盒系统及检测方法
CN107864694A (zh) * 2016-07-21 2018-03-30 百度时代网络技术(北京)有限公司 用于操作无人驾驶车辆的计算节点当中的有效通信
CN108334341A (zh) * 2017-07-20 2018-07-27 阿里巴巴集团控股有限公司 用户界面ui组件的定位方法及装置
CN108416210A (zh) * 2018-03-09 2018-08-17 北京顶象技术有限公司 一种程序保护方法及装置
WO2021148863A1 (en) * 2020-01-24 2021-07-29 International Business Machines Corporation Process-based virtualization system for executing secure application process
CN113791865A (zh) * 2021-09-08 2021-12-14 山石网科通信技术股份有限公司 容器安全的处理方法及装置、存储介质和处理器
CN114489941A (zh) * 2022-01-19 2022-05-13 上海交通大学 运行在宿主模式用户态的虚拟机管理方法及系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107689953B (zh) * 2017-08-18 2020-10-27 中国科学院信息工程研究所 一种面向多租户云计算的容器安全监控方法及系统
US11659003B2 (en) 2018-08-30 2023-05-23 International Business Machines Corporation Safe shell container facilitating inspection of a virtual container
KR102494791B1 (ko) * 2021-11-08 2023-02-06 숭실대학교산학협력단 컨테이너 환경에서 알려지지 않은 바이너리 검사 및 차단 방법 및 장치
CN114491516B (zh) * 2022-01-26 2023-04-14 北京小佑网络科技有限公司 一种基于容器环境的威胁检测诱捕方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060722A1 (en) * 2003-09-15 2005-03-17 Trigence Corp. System for containerization of application sets
US20060259487A1 (en) * 2005-05-16 2006-11-16 Microsoft Corporation Creating secure process objects
US20090113424A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Transparent VMM-Assisted User-Mode Execution Control Transfer
CN100489728C (zh) * 2004-12-02 2009-05-20 联想(北京)有限公司 一种建立计算机中可信任运行环境的方法
CN103312661A (zh) * 2012-03-07 2013-09-18 腾讯科技(深圳)有限公司 一种服务访问方法及装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US8732824B2 (en) * 2006-01-23 2014-05-20 Microsoft Corporation Method and system for monitoring integrity of running computer system
WO2009102006A1 (ja) * 2008-02-14 2009-08-20 Nec Corporation アクセス制御装置、その方法及び情報記録媒体
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
US8627414B1 (en) * 2009-08-04 2014-01-07 Carnegie Mellon University Methods and apparatuses for user-verifiable execution of security-sensitive code
US9229783B2 (en) * 2010-03-31 2016-01-05 International Business Machines Corporation Methods and apparatus for resource capacity evaluation in a system of virtual containers
US9043903B2 (en) * 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9069782B2 (en) * 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9117080B2 (en) 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
WO2015052831A1 (ja) * 2013-10-11 2015-04-16 順子 杉中 情報処理装置、方法およびプログラム
KR101445634B1 (ko) 2014-01-27 2014-10-06 주식회사 이글루시큐리티 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법
US10013453B2 (en) * 2015-06-22 2018-07-03 Vmware, Inc. Efficient management of large number of file descriptors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060722A1 (en) * 2003-09-15 2005-03-17 Trigence Corp. System for containerization of application sets
CN100489728C (zh) * 2004-12-02 2009-05-20 联想(北京)有限公司 一种建立计算机中可信任运行环境的方法
US20060259487A1 (en) * 2005-05-16 2006-11-16 Microsoft Corporation Creating secure process objects
US20090113424A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Transparent VMM-Assisted User-Mode Execution Control Transfer
CN103312661A (zh) * 2012-03-07 2013-09-18 腾讯科技(深圳)有限公司 一种服务访问方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107864694A (zh) * 2016-07-21 2018-03-30 百度时代网络技术(北京)有限公司 用于操作无人驾驶车辆的计算节点当中的有效通信
CN107864694B (zh) * 2016-07-21 2020-11-03 百度时代网络技术(北京)有限公司 用于管理无人驾驶车辆中的处理节点的数据流的系统和方法
CN108334341A (zh) * 2017-07-20 2018-07-27 阿里巴巴集团控股有限公司 用户界面ui组件的定位方法及装置
CN107679399A (zh) * 2017-10-19 2018-02-09 郑州云海信息技术有限公司 一种基于容器的恶意代码检测沙盒系统及检测方法
CN108416210A (zh) * 2018-03-09 2018-08-17 北京顶象技术有限公司 一种程序保护方法及装置
CN108416210B (zh) * 2018-03-09 2020-07-14 北京顶象技术有限公司 一种程序保护方法及装置
WO2021148863A1 (en) * 2020-01-24 2021-07-29 International Business Machines Corporation Process-based virtualization system for executing secure application process
US11461474B2 (en) 2020-01-24 2022-10-04 International Business Machines Corporation Process-based virtualization system for executing a secure application process
GB2607529A (en) * 2020-01-24 2022-12-07 Ibm Process-based virtualization system for executing secure application process
CN113791865A (zh) * 2021-09-08 2021-12-14 山石网科通信技术股份有限公司 容器安全的处理方法及装置、存储介质和处理器
CN114489941A (zh) * 2022-01-19 2022-05-13 上海交通大学 运行在宿主模式用户态的虚拟机管理方法及系统
CN114489941B (zh) * 2022-01-19 2024-05-28 上海交通大学 运行在宿主模式用户态的虚拟机管理方法及系统

Also Published As

Publication number Publication date
JP6196356B2 (ja) 2017-09-13
KR101845162B1 (ko) 2018-04-03
KR20170043438A (ko) 2017-04-21
JP2017076369A (ja) 2017-04-20
CN105389197B (zh) 2019-02-26
US10102373B2 (en) 2018-10-16
US20170103206A1 (en) 2017-04-13

Similar Documents

Publication Publication Date Title
CN105389197A (zh) 用于基于容器的虚拟化系统的操作捕获方法和装置
US9690606B1 (en) Selective system call monitoring
US12013939B2 (en) Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
US10055585B2 (en) Hardware and software execution profiling
CN108399332B (zh) 在虚拟机中针对恶意性对文件进行分析的系统和方法
US11070570B2 (en) Methods and cloud-based systems for correlating malware detections by endpoint devices and servers
KR101806090B1 (ko) 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹
WO2015119522A2 (en) Systems and methods for detecting return-oriented programming (rop) exploits
US11048795B2 (en) System and method for analyzing a log in a virtual machine based on a template
JP6893531B2 (ja) 要求処理方法及び装置
US20210064443A1 (en) Hardware offload support for an operating system offload interface using operation code verification
CN110659478B (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
US11263307B2 (en) Systems and methods for detecting and mitigating code injection attacks
CN115033889B (zh) 非法提权检测方法和装置、存储介质、计算机设备
CN108399330B (zh) 监控可编程逻辑控制器的执行系统的系统和方法
US20220138311A1 (en) Systems and methods for detecting and mitigating code injection attacks
US20220391507A1 (en) Malware identification
US10423792B2 (en) Identifying exploitable code sequences
CN103679006A (zh) 一种运行驱动程序的方法及装置
EP3361406A1 (en) System and method of analysis of files for maliciousness in a virtual machine
RU2637435C1 (ru) Способ обнаружения аномального исполнения системы исполнения программируемого логического контроллера
CN110765462A (zh) 一种操作控制方法、装置、计算系统及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant