CN108021807A - Linux容器的细粒度沙盒策略执行方法 - Google Patents

Linux容器的细粒度沙盒策略执行方法 Download PDF

Info

Publication number
CN108021807A
CN108021807A CN201711483780.XA CN201711483780A CN108021807A CN 108021807 A CN108021807 A CN 108021807A CN 201711483780 A CN201711483780 A CN 201711483780A CN 108021807 A CN108021807 A CN 108021807A
Authority
CN
China
Prior art keywords
container
sandbox
linux
parameter
target container
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
CN201711483780.XA
Other languages
English (en)
Other versions
CN108021807B (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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201711483780.XA priority Critical patent/CN108021807B/zh
Publication of CN108021807A publication Critical patent/CN108021807A/zh
Application granted granted Critical
Publication of CN108021807B publication Critical patent/CN108021807B/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种Linux容器的细粒度沙盒策略执行方法,限制Linux容器的系统调用行为,减少攻击面,实现Linux容器的安全加固。所述方法包括:容器追踪模块通过采用ptrace系统调用接口,追踪目标容器运行,根据沙盒策略定义的规则,对具有字符串类型参数的系统调用访问进行过滤。系统调用拦截模块通过采用seccomp/BPF技术,实时拦截目标容器系统调用访问,根据沙盒策略定义的规则,对系统调用类型及具有非字符串类型参数的系统调用访问进行过滤。

Description

Linux容器的细粒度沙盒策略执行方法
技术领域
本发明专利属于计算机技术领域,涉及云计算安全方向。更具体的讲,本发明专利涉及一种Linux容器的细粒度沙盒策略执行方法。
背景技术
Linux容器技术采用命名空间将进、文件、设备等资源进行隔离,为用户提供几近原生的性能体验,极大降低了虚拟化的额外开销。Docker容器是最具代表性的Linux容器技术之一。
Linux容器的安全问题已成为限制其广泛使用的重要影响因素。安全问题主要来源于,系统调用接口未实现命名空间的隔离,同一宿主操作系统上的容器共享系统调用接口。攻击者可通过系统调用接口,利用内核漏洞进行权限提升、任意代码执行、绕过访问控制、实现隔离机制的逃逸。
如何提高容器的安全性?一种直观的方法是将容器放在沙盒中,限制容器访问系统调用接口的行为。当可信容器被攻击者攻占后,沙盒的存在一定程度上可以限制攻击者对底层操作系统的影响。系统调用拦截技术是一种限制程序系统调用行为的有效技术,基于系统调用拦截技术的沙盒技术得到研究界及工业界的广泛关注。其中,seccomp/BPF技术是自Linux 3.5开始引入的一种高效的系统调用拦截技术。
然而,基于系统拦截技术的沙盒技术,实现Linux容器的细粒度沙盒策略执行,即过滤字符串类型的系统调用参数,仍然极具挑战。
发明内容
针对上述问题,本发明提出一种Linux容器的细粒度沙盒策略执行方法。在系统调用层面,实现细粒度沙盒策略执行,对Linux容器进行安全加固。细粒度沙盒策略限制Linux容器的系统调用类型及参数。
本发明采用如下技术方案:一种Linux容器的细粒度沙盒策略执行方法;细粒度沙盒策略包含了Linux容器的系统调用类型及参数的访问权限;该Linux容器的细粒度沙盒策略执行方法包括容器追踪模块和系统调用拦截模块;所述容器追踪模块包括追踪进程;该方法包括以下步骤:
步骤1:启动追踪进程。
步骤2:当目标容器的初始进程启动之后,通过进程间通信,追踪进程从容器运行环境获取目标容器的初始进程的进程号;追踪进程根据目标容器的初始进程的进程号,附着(attach)到目标容器的初始进程;追踪进程读取沙盒策略,获得目标容器系统调用的字符串类型的参数的过滤规则,等待触发事件;同时,系统调用拦截模块读取沙盒策略,并将沙盒策略载入到系统内核。
步骤3:系统调用拦截模块实时拦截目标容器的系统调用访问;并根据Linux容器的系统调用类型及参数的访问权限,限制目标容器的系统调用行为,具体为:
如果系统调用访问的类型和参数在沙盒策略定义的白名单中,则沙盒策略允许此次系统调用访问;如果系统调用访问的类型和参数在沙盒策略定义的追踪名单中,暂停目标容器运行,触发容器追踪模块;其他情况下,禁止此次系统调用访问;
当容器追踪模块被触发后,根据沙盒规则,对目标容器系统调用访问的参数进行过滤。重启该过滤后的目标容器,等待下次事件的触发。
进一步地,步骤2所述的附着(attach)到目标容器的初始进程,具体是指:调用Linux系统调用接口ptrace,传入PTRACE_ATTACH作为第一个参数。
进一步地,步骤2所述的系统调用拦截模块读取沙盒策略,并将沙盒策略载入到系统内核,具体是指:读取沙盒策略配置文件,翻译成seccomp/BPF程序并载入Linux内核中运行,用于后续限制目标容器的系统调用行为。
进一步地,步骤3所述的实时拦截目标容器的系统调用访问,具体是指:运行中的seccomp/BPF程序实时拦截目标容器的系统调用访问。
进一步地,步骤3所述的根据沙盒规则,对目标容器系统调用访问的参数进行过滤,具体是指:调用Linux系统调用接口ptrace,分别传入PTRACE_GETREGS和PTRACE_PEEKDATA作为第一个参数,从寄存器及内存中读取目标容器进程系统调用访问的字符串类型参数,并根据沙盒策略,对参数执行过滤操作。
进一步地,步骤3所述的重启该过滤后的目标容器,具体是指:调用Linux系统调用接口ptrace,传入PTRACE_CONT作为第一个参数。
本发明下有益效果在于:
(1)减少攻击面:通过执行本发明方法,可限制目标容器的系统调用访问的类型和参数,从而限制目标容器的行为;进一步地,如容器被入侵,可限制攻击者对底层操作系统及同一宿主操作系统上的其他容器可能造成的危害;
(2)额外性能开销小:Linux容器的细粒度沙盒策略执行引发的目标容器端到端额外性能开销几乎可以忽略。
附图说明
图1示出本发明的各种实施例的架构原理图;
图2示出本发明一种实施例的细粒度沙盒策略执行方法流程图;
图3示出本发明一种实施例的沙盒策略配置文件示例代码示意图;
图4示出容器的端到端性能TPS示意图。
具体实施方法
为便于本领域普通技术人员理解和实施本发明,下面结合附图及实施示例对本发明作进一步的详细描述。应当理解,所述的实施示例仅用于说明和解释本发明,并不应该限制本发明的范围。
本发明提出了一种Linux容器的细粒度沙盒策略执行方法。具体来讲,在系统调用层面,执行细粒度沙盒策略,细粒度是指限制容器的系统调用类型及参数,参数类型包括字符串和非字符串,从而实现对Linux容器的安全加固。
该方法包含容器追踪模块和系统调用拦截模块,如图1所示。容器追踪模块可以通过采用ptrace系统调用接口,追踪目标容器,根据沙盒策略定义的规则,对具有字符串类型的参数的系统调用访问进行过滤。系统调用拦截模块可以通过采用seccomp/BPF系统调用拦截技术,对系统调用类型及具有非字符串类型参数的系统调用访问进行过滤。
如图2所示,本发明方法包括如下步骤:
步骤1:采用手动或自动方式启动容器追踪模块的追踪进程,追踪进程等待目标容器的启动;该步骤可通过采用Linux命名管道(FIFO),实现追踪进程与系统调用拦截模块进程间的同步。
步骤2:在命令行输入“docker run--security-opt seccomp=”启动目标容器的初始进程后,追踪进程通过进程间通信,比如采用Linux命名管道(FIFO),从容器运行环境获取目标容器的初始进程的进程号;追踪进程利用目标容器的初始进程的进程号,附着到目标容器的初始进程;具体而言,追踪进程可调用ptrace系统调用接口,并传入PTRACE_ATTACH和目标容器的初始进程的进程号作为第一个和第二个参数;然后,追踪进程载入沙盒策略,沙盒策略包含目标容器系统调用的字符串类型的参数的过滤规则;最后,追踪进程调用waitpid等待目标容器进程触发事件。
在容器追踪模块启动的同时,通过docker run命令的security-opt seccomp选项,启动系统调用拦截模块;系统调用拦截模块可读入并解析JSON格式的沙盒策略配置文件,如图3所示;然后,将沙盒策略配置文件中的所有规则转化为seccomp/BPF程序,并载入Linux内核。
步骤3:系统调用拦截模块的执行,其具体实现包括以下子步骤:
步骤3.1:采用seccomp/BPF技术,在目标容器的系统调用入口,实时拦截目标容器的系统调用访问;
步骤3.2:系统调用拦截模块根据载入的沙盒策略,限制目标容器的系统调用类型和参数;沙盒策略可以用JSON格式的配置文件描述,如图3所示;沙盒策略具体包含:1)目标容器被允许的系统调用访问类型和参数,即白名单:白名单中的沙盒规则的“action”定义为“SCMP_ACT_ALLOW”操作,即沙盒策略允许定义的系统调用访问;2)目标容器被追踪的系统调用访问类型和参数,即追踪名单:追踪名单中的沙盒规则的“action”定义为“SCMP_ACT_TRACE”,即暂停目标容器运行,发送ptrace事件给追踪进程,从而触发容器追踪模块;3)其他情况下,遵循沙盒策略定义的默认“action”“SCMP_ACT_ERRNO”,即禁止目标容器的系统调用访问,并返回错误值。
当容器追踪模块被触发后,追踪进程根据沙盒规则,对目标容器系统调用访问的参数进行过滤,具体为:调用Linux系统调用接口ptrace,分别传入PTRACE_GETREGS和PTRACE_PEEKDATA作为第一个参数,从寄存器及内存中读取目标容器进程系统调用的字符串类型参数;根据沙盒策略,对参数执行过滤操作。
然后调用Linux系统调用接口ptrace,传入PTRACE_CONT作为第一个参数,重启暂停的目标容器,等待下次事件的触发。
为验证上述细粒度沙盒策略执行方法的性能,分析该方法对Linux容器性能的影响,将该方法用于限制Docker容器的系统调用访问。每一个容器分别以两种形式运行,即采用本方法限制容器的系统调用访问、以及不限制容器的系统调用访问。在容器的两种形式运行过程中,分别测量容器的端到端性能TPS(Transactions Per Second),结果如图4所示。采用本方法限制目标容器的系统调用访问时,产生的额外性能开销几乎可以忽略(1.22%-3.76%)。

Claims (6)

1.一种Linux容器的细粒度沙盒策略执行方法,其特征在于,所述细粒度沙盒策略包含了Linux容器的系统调用类型及参数的访问权限;该Linux容器的细粒度沙盒策略执行方法包括容器追踪模块和系统调用拦截模块;所述容器追踪模块包括追踪进程;该方法包括以下步骤:
步骤1:启动追踪进程。
步骤2:当目标容器的初始进程启动之后,通过进程间通信,追踪进程从容器运行环境获取目标容器的初始进程的进程号;追踪进程根据目标容器的初始进程的进程号,附着(attach)到目标容器的初始进程;追踪进程读取沙盒策略,获得目标容器系统调用的字符串类型的参数的过滤规则,等待触发事件;同时,系统调用拦截模块读取沙盒策略,并将沙盒策略载入到系统内核。
步骤3:系统调用拦截模块实时拦截目标容器的系统调用访问;并根据Linux容器的系统调用类型及参数的访问权限,限制目标容器的系统调用访问,具体为:
如果系统调用访问的类型和参数在沙盒策略定义的白名单中,则沙盒策略允许此次系统调用访问;如果系统调用访问的类型和参数在沙盒策略定义的追踪名单中,暂停目标容器运行,触发容器追踪模块;其他情况下,禁止此次系统调用访问;
当容器追踪模块被触发后,根据沙盒规则,对目标容器系统调用访问的参数进行过滤。重启该过滤后的目标容器,等待下次事件的触发。
2.根据权利要求1所述Linux容器的细粒度沙盒策略执行方法,其特征在于,步骤2所述的附着(attach)到目标容器的初始进程,具体是指:调用Linux系统调用接口ptrace,传入PTRACE_ATTACH作为第一个参数。
3.根据权利要求1所述Linux容器的细粒度沙盒策略执行方法,其特征在于,步骤2所述的系统调用拦截模块读取沙盒策略,并将沙盒策略载入到系统内核,具体是指:读取沙盒策略配置文件,翻译成seccomp/BPF程序并载入Linux内核中运行,用于后续限制目标容器的系统调用行为。
4.根据权利要求1所述Linux容器的细粒度沙盒策略执行方法,其特征在于,步骤3所述的实时拦截目标容器的系统调用访问,具体是指:运行中的seccomp/BPF程序实时拦截目标容器的系统调用访问。
5.根据权利要求1所述Linux容器的细粒度沙盒策略执行方法,其特征在于,步骤3所述的根据沙盒规则,对目标容器系统调用访问的参数进行过滤,具体是指:调用Linux系统调用接口ptrace,分别传入PTRACE_GETREGS和PTRACE_PEEKDATA作为第一个参数,从寄存器及内存中读取目标容器进程系统调用访问的字符串类型参数,并根据沙盒策略,对参数执行过滤操作。
6.根据权利要求1所述Linux容器的细粒度沙盒策略执行方法,其特征在于,步骤3所述的重启该过滤后的目标容器,具体是指:调用Linux系统调用接口ptrace,传入PTRACE_CONT作为第一个参数。
CN201711483780.XA 2017-12-29 2017-12-29 Linux容器的细粒度沙盒策略执行方法 Active CN108021807B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711483780.XA CN108021807B (zh) 2017-12-29 2017-12-29 Linux容器的细粒度沙盒策略执行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711483780.XA CN108021807B (zh) 2017-12-29 2017-12-29 Linux容器的细粒度沙盒策略执行方法

Publications (2)

Publication Number Publication Date
CN108021807A true CN108021807A (zh) 2018-05-11
CN108021807B CN108021807B (zh) 2020-04-28

Family

ID=62071087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711483780.XA Active CN108021807B (zh) 2017-12-29 2017-12-29 Linux容器的细粒度沙盒策略执行方法

Country Status (1)

Country Link
CN (1) CN108021807B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749393A (zh) * 2019-10-31 2021-05-04 中国电信股份有限公司 安全控制方法、安全控制系统、安全控制装置及存储介质
CN113032129A (zh) * 2021-04-22 2021-06-25 北京小佑科技有限公司 一种容器阻断用户指定进程生成方法
CN113419737A (zh) * 2021-06-11 2021-09-21 广发证券股份有限公司 一种基于Linux seccomp的量化策略托管方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104008337A (zh) * 2014-05-07 2014-08-27 广州华多网络科技有限公司 一种基于Linux系统的主动防御方法及装置
CN106384045A (zh) * 2016-09-12 2017-02-08 电子科技大学 基于应用程序虚拟化的安卓存储应用沙箱及通信方法
CN106778244A (zh) * 2016-11-28 2017-05-31 北京奇虎科技有限公司 基于虚拟机的内核漏洞检测进程保护方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104008337A (zh) * 2014-05-07 2014-08-27 广州华多网络科技有限公司 一种基于Linux系统的主动防御方法及装置
CN106384045A (zh) * 2016-09-12 2017-02-08 电子科技大学 基于应用程序虚拟化的安卓存储应用沙箱及通信方法
CN106778244A (zh) * 2016-11-28 2017-05-31 北京奇虎科技有限公司 基于虚拟机的内核漏洞检测进程保护方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZHIYUAN WAN,DAVID LO,XIN XIA,LIANG CAI,SHANPING LI: "Mining Sandboxes for Linux Containers", 《2017 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION》 *
程虎等: "Linux系统内核的沙箱模块实现", 《计算机应用》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749393A (zh) * 2019-10-31 2021-05-04 中国电信股份有限公司 安全控制方法、安全控制系统、安全控制装置及存储介质
CN113032129A (zh) * 2021-04-22 2021-06-25 北京小佑科技有限公司 一种容器阻断用户指定进程生成方法
CN113419737A (zh) * 2021-06-11 2021-09-21 广发证券股份有限公司 一种基于Linux seccomp的量化策略托管方法及装置
CN113419737B (zh) * 2021-06-11 2023-11-10 广发证券股份有限公司 一种基于Linux seccomp的量化策略托管方法及装置

Also Published As

Publication number Publication date
CN108021807B (zh) 2020-04-28

Similar Documents

Publication Publication Date Title
US11200080B1 (en) Late load technique for deploying a virtualization layer underneath a running operating system
US9589132B2 (en) Method and apparatus for hypervisor based monitoring of system interactions
EP2715589B1 (en) System and method for preserving references in sandboxes
US12013939B2 (en) Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
US20170090929A1 (en) Hardware-assisted software verification and secure execution
US10649877B2 (en) Macro-script execution control
WO2019072008A1 (zh) 小程序的安全扫描方法、装置以及电子设备
CN104750534B (zh) 触发虚拟机自省的方法、装置及系统
US10013553B2 (en) Protecting software application
CN108021807A (zh) Linux容器的细粒度沙盒策略执行方法
JP2016503219A (ja) 認知挙動認識のためのシステムおよびその方法
US8429648B2 (en) Method and apparatus to service a software generated trap received by a virtual machine monitor
US10198309B2 (en) Unexpected event detection during execution of an application
US9483327B2 (en) Mechanism for interposing on operating system calls
CN108334779A (zh) 一种应用的处理方法、设备和计算存储介质
CN106682493B (zh) 一种防止进程被恶意结束的方法、装置及电子设备
CN106127031A (zh) 一种保护进程的方法、装置及电子设备
CN112231198B (zh) 一种恶意进程调试方法、装置、电子设备及介质
US10198280B2 (en) Method and apparatus for hypervisor based monitoring of system interactions
CN108304195B (zh) 一种aop组件的实现方法、装置及电子设备
WO2019127399A1 (zh) Linux容器的细粒度沙盒策略执行方法
US11244042B2 (en) Systems and methods for zero-footprint email and browser lifecycle
EP3040895A1 (en) System and method for protecting a device against return-oriented programming attacks
CN106169044B (zh) 一种保护线程数据的方法、装置及电子设备
CN111443907A (zh) 一种调用sdk功能的方法和装置

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
CB03 Change of inventor or designer information

Inventor after: Cai Liang

Inventor after: Wan Zhiyuan

Inventor after: Wang Xinyu

Inventor after: Xia Xin

Inventor after: Yang Xiaohu

Inventor after: Li Shanping

Inventor before: Wan Zhiyuan

Inventor before: Cai Liang

Inventor before: Wang Xinyu

Inventor before: Xia Xin

Inventor before: Yang Xiaohu

Inventor before: Li Shanping

CB03 Change of inventor or designer information
GR01 Patent grant
GR01 Patent grant