CN105389197B - 用于基于容器的虚拟化***的操作捕获方法和装置 - Google Patents
用于基于容器的虚拟化***的操作捕获方法和装置 Download PDFInfo
- Publication number
- CN105389197B CN105389197B CN201510670474.1A CN201510670474A CN105389197B CN 105389197 B CN105389197 B CN 105389197B CN 201510670474 A CN201510670474 A CN 201510670474A CN 105389197 B CN105389197 B CN 105389197B
- Authority
- CN
- China
- Prior art keywords
- signal
- container
- function
- system call
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program 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,在内核态通过读特殊模块寄存器(Model Specific Register,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中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有***600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线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所述的安全控制装置,其特征在于,所述安全确定单元进一步配置用于通过预先配置的配置文件来确定所述***调用操作是否安全,所述配置文件用于指定待查***调用号和\或待保护资源,以及与所述***调用号和\或待保护资源关联的操作指示。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510670474.1A CN105389197B (zh) | 2015-10-13 | 2015-10-13 | 用于基于容器的虚拟化***的操作捕获方法和装置 |
KR1020160103690A KR101845162B1 (ko) | 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 |
JP2016159649A JP6196356B2 (ja) | 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 CN105389197A (zh) | 2016-03-09 |
CN105389197B true 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) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018014282A1 (en) * | 2016-07-21 | 2018-01-25 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Efficient communications amongst computing nodes for operating autonomous vehicles |
CN108334341B (zh) * | 2017-07-20 | 2021-11-30 | 创新先进技术有限公司 | 用户界面ui组件的定位方法及装置 |
CN107689953B (zh) * | 2017-08-18 | 2020-10-27 | 中国科学院信息工程研究所 | 一种面向多租户云计算的容器安全监控方法及*** |
CN107679399A (zh) * | 2017-10-19 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种基于容器的恶意代码检测沙盒***及检测方法 |
CN108416210B (zh) * | 2018-03-09 | 2020-07-14 | 北京顶象技术有限公司 | 一种程序保护方法及装置 |
US11659003B2 (en) | 2018-08-30 | 2023-05-23 | International Business Machines Corporation | Safe shell container facilitating inspection of a virtual container |
US11461474B2 (en) | 2020-01-24 | 2022-10-04 | International Business Machines Corporation | Process-based virtualization system for executing a secure application process |
KR102494791B1 (ko) * | 2021-11-08 | 2023-02-06 | 숭실대학교산학협력단 | 컨테이너 환경에서 알려지지 않은 바이너리 검사 및 차단 방법 및 장치 |
CN114489941B (zh) * | 2022-01-19 | 2024-05-28 | 上海交通大学 | 运行在宿主模式用户态的虚拟机管理方法及*** |
CN114491516B (zh) * | 2022-01-26 | 2023-04-14 | 北京小佑网络科技有限公司 | 一种基于容器环境的威胁检测诱捕方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100489728C (zh) * | 2004-12-02 | 2009-05-20 | 联想(北京)有限公司 | 一种建立计算机中可信任运行环境的方法 |
CN103312661A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 一种服务访问方法及装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7519814B2 (en) * | 2003-09-15 | 2009-04-14 | Trigence Corp. | System for containerization of application sets |
US7552426B2 (en) * | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US7665143B2 (en) * | 2005-05-16 | 2010-02-16 | Microsoft Corporation | Creating secure process objects |
US8732824B2 (en) * | 2006-01-23 | 2014-05-20 | Microsoft Corporation | Method and system for monitoring integrity of running computer system |
US8819676B2 (en) * | 2007-10-30 | 2014-08-26 | Vmware, Inc. | Transparent memory-mapped emulation of I/O calls |
JP5382450B2 (ja) * | 2008-02-14 | 2014-01-08 | 日本電気株式会社 | アクセス制御装置、その方法及び情報記録媒体 |
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 |
-
2015
- 2015-10-13 CN CN201510670474.1A patent/CN105389197B/zh active Active
-
2016
- 2016-08-16 US US15/237,940 patent/US10102373B2/en active Active
- 2016-08-16 KR KR1020160103690A patent/KR101845162B1/ko active IP Right Grant
- 2016-08-16 JP JP2016159649A patent/JP6196356B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100489728C (zh) * | 2004-12-02 | 2009-05-20 | 联想(北京)有限公司 | 一种建立计算机中可信任运行环境的方法 |
CN103312661A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 一种服务访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2017076369A (ja) | 2017-04-20 |
JP6196356B2 (ja) | 2017-09-13 |
KR20170043438A (ko) | 2017-04-21 |
KR101845162B1 (ko) | 2018-04-03 |
US20170103206A1 (en) | 2017-04-13 |
US10102373B2 (en) | 2018-10-16 |
CN105389197A (zh) | 2016-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389197B (zh) | 用于基于容器的虚拟化***的操作捕获方法和装置 | |
US10740456B1 (en) | Threat-aware architecture | |
US12013939B2 (en) | Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment | |
US11438349B2 (en) | Systems and methods for protecting devices from malware | |
US20200311268A1 (en) | Methods and systems for performing a dynamic analysis of applications for protecting devices from malwares | |
US20240095340A1 (en) | Technologies for untrusted code execution with processor sandbox support | |
US8707417B1 (en) | Driver domain as security monitor in virtualization environment | |
US10140448B2 (en) | Systems and methods of asynchronous analysis of event notifications for computer security applications | |
US10339301B2 (en) | System and method of analysis of files for maliciousness in a virtual machine | |
CN106055385B (zh) | 监控虚拟机进程的***和方法、过滤page fault异常的方法 | |
US20140053272A1 (en) | Multilevel Introspection of Nested Virtual Machines | |
US10726119B2 (en) | Monitoring application execution in a clone of a virtual computing instance for application whitelisting | |
JP2018520446A (ja) | 非同期イントロスペクション例外を使用するコンピュータセキュリティシステムおよび方法 | |
AU2014330136A1 (en) | Complex scoring for malware detection | |
EP3053087A1 (en) | Complex scoring for malware detection | |
WO2015152748A1 (en) | Process evaluation for malware detection in virtual machines | |
US20150302192A1 (en) | System and methods of performing antivirus checking in a virtual environment using different antivirus checking techniques | |
CN108388793B (zh) | 一种基于主动防御的虚拟机逃逸防护方法 | |
US9824225B1 (en) | Protecting virtual machines processing sensitive information | |
CN111324891A (zh) | 用于容器文件完整性监视的***和方法 | |
US10846405B1 (en) | Systems and methods for detecting and protecting against malicious software | |
US11775640B1 (en) | Resource utilization-based malicious task detection in an on-demand code execution system | |
CN115730307A (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 |