【技术实现步骤摘要】
一种获取容器需要的系统调用白名单的方法
本专利技术属于容器安全领域,涉及一种获取容器需要的系统调用白名单的方法,能够通过静态分析和动态分析的方法容器需要的系统调用白名单。
技术介绍
容器技术已用于在主机上运行多个独立的操作系统发行版或部署大规模的基于微服务的应用程序。与基于虚拟机的传统虚拟机相比,该容器具有更快的启动速度,更低的资源消耗和更高的I/O吞吐量。云计算厂商使用基于容器的技术来构建平台即服务(PaaS)或者直接向用户提供定制化的容器服务。随着云计算技术的广泛应用,近年来基于容器的虚拟化技术得到了极大的发展。学术界和工业界已经提出了许多容器技术,例如Docker、rkt、LXD等。在这些容器技术中,Docker是最受欢迎的容器技术,并已在工业界得到广泛使用。在大多数情况下,容器与主机和同一主机上的其他容器共享同一内核,并且容器中的应用程序可以像主机上的正常进程那样对主机内核进行系统调用。Seccomp是Linux内核的一种安全机制,通过它本专利技术可以禁止程序执行某些系统调用。Docker从1.10版本开始支持sec ...
【技术保护点】
1.一种获取容器需要的系统调用白名单的方法,其步骤包括:/n1)在容器启动时获取需要添加到系统调用白名单中的系统调用集合A,以及在容器运行时调用的ELF可执行文件集合B,并将集合A添加到系统调用白名单中;/n2)基于步骤1)得到的ELF可执行文件集合B,对容器进行静态分析,得到容器中的应用运行过程中所需调用的系统调用集合S并将其添加到系统调用白名单中。/n
【技术特征摘要】
1.一种获取容器需要的系统调用白名单的方法,其步骤包括:
1)在容器启动时获取需要添加到系统调用白名单中的系统调用集合A,以及在容器运行时调用的ELF可执行文件集合B,并将集合A添加到系统调用白名单中;
2)基于步骤1)得到的ELF可执行文件集合B,对容器进行静态分析,得到容器中的应用运行过程中所需调用的系统调用集合S并将其添加到系统调用白名单中。
2.如权利要求1所述的方法,其特征在于,容器启动时获取需要添加到系统调用白名单中的系统调用集合A的方法为:当docker守护进程接收到启动容器的请求时,将该请求发送给容器,然后容器执行初始化并派生一个docker-shim进程;docker-shim进程初始化容器环境,包括使seccomp配置文件生效;然后将docker-shim进程执行的系统调用集合A和用户指定的应用程序执行的系统调用集合C分别添加到系统调用白名单中。
3.如权利要求2所述的方法,其特征在于,在docker源代码中设置一个睡眠操作暂停程序;当seccomp配置文件生效后,docker守护进程执行该睡眠操作暂停docker-shim进程,然后将docker-shim进程的pid传递给容器所在主机上运行的跟踪模块;该跟踪模块接收到docker-shim进程的pid后,启动strace指令来跟踪系统调用,然后继续执行docker-shim进程,获取docker-shim进程执行的系统调用集合A。
4.如权利要求2所述的方法,其特征在于,在docker-shim进程启动用户指定的应用程序之前,启动一监视模块,以获取用户指定的应用程序运行时所调用的ELF可执行文件集合B。
5.如权利要求4所述的方法,其特征在于,基于linux提供的inotifyAPI实现所述监视模块。
6.如权利要求1所述的方法,其特征在于,步骤2)中,对容器进行静态分析,得到容器中的应用运行过程中所需调用的系统调用集合S,包括获得容器中静态链接的应用程序的系统调用集合S’和容器中动态链接的应用程序的系统调用集合S”。
7.如权利要求6所述的方法,其特征在于,获...
【专利技术属性】
技术研发人员:沈晴霓,王旭豪,罗武,方跃坚,杨雅辉,
申请(专利权)人:北京大学,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。