[发明专利]隔离沙箱加载方法有效
申请号: | 201911065973.2 | 申请日: | 2019-11-04 |
公开(公告)号: | CN110968361B | 公开(公告)日: | 2021-11-23 |
发明(设计)人: | 余天依;杜东;夏虞斌 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F21/53 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 胡晶 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 隔离 加载 方法 | ||
1.一种隔离沙箱加载方法,其特征在于,基于多线程沙箱安全内存复用技术,包括如下步骤:
步骤1、获取在隔离沙箱中运行的程序代码;
步骤2、运行一个模板沙箱,运行开发和配置好的程序代码,等待用户请求;
步骤3、获取函数调用请求,模板沙箱收到请求后通过内存复用,产生一个用于执行用户请求的实例沙箱;
步骤4、实例沙箱对模板沙箱运行过程中执行系统调用造成的系统状态改变进行处理,保证沙箱执行的正确性和安全性;
步骤5、实例沙箱继续执行程序,直至执行完毕,将用户请求的结果返回给用户或发送给用户指定的第三方,实例沙箱销毁;
所述步骤1中:
-默认采用程序第一条指令开始执行前的位置作为入口点;或者
-采用入口点标记自定义入口点;
所述步骤2中,采用分层文件系统的模板沙箱启动,运行至入口点挂起等待用户请求;
模板沙箱运行过程中仅能执行模板沙箱系统调用白名单中允许的系统调用,并记录需要进行一致性处理的系统状态改变;
所述步骤3中,需要保证通过内存复用加载的实例沙箱能进行正常的多线程运行,且通过内存复用产生的多个实例沙箱之间的运行不能相互干扰;
实例沙箱继续进行步骤4和5,模板沙箱回到步骤2结束的状态等待下一个用户函数调用请求;所述步骤4中,根据步骤2中记录的系统状态改变情况,采用分层文件系统处理文件描述符相关的第一系统特征;通过命名空间分隔处理第二系统特征,保证系统状态的一致性;
所述第二系统特征包括用户id和/或进程id,
通过内存复用加载的隔离沙箱中运行的程序执行与正常加载启动的隔离沙箱中运行的程序执行表现相同;
实例沙箱销毁时释放其私有使用的资源,所述资源包括内存空间和/或虚拟化资源。
2.根据权利要求1中所述的隔离沙箱加载方法,其特征在于,所述隔离沙箱加载方法中通过如下步骤实现内存复用:
基于写时复制技术,通过在沙箱运行时中构造一个临时单线程状态来支持多线程程序的内存复用;即:
修改Golang语言运行时使之支持可安全停止的运行时线程runtime thread,并对阻塞执行线程blocking thread设置定时检查机制;进行多线程内存复用时,运行时线程在内存中保存执行上下文并结束线程,阻塞执行线程在检测到内存复用指令时结束线程,设置调度线程scheduling thread数量为1;此时多线程的沙箱程序只剩下了一个主调度线程,进入临时单线程状态,安全地执行内存复用产生新进程和实例沙箱;产生内存复用的新实例沙箱,根据内存中保存的多线程信息,在实例沙箱中恢复运行时线程、阻塞执行线程的运行,并重新设置调度线程的数量;此时实例沙箱恢复到了多线程的运行状态。
3.根据权利要求1中所述的隔离沙箱加载方法,其特征在于,所述隔离沙箱加载方法中通过如下步骤实现白名单调用:
为模板沙箱启动过程中能执行的系统调用设置白名单,禁止模板沙箱执行会产生非确定性系统状态修改的系统调用,并在启动过程中记录需要对系统一致性进行处理的系统调用执行。
4.根据权利要求1中所述的隔离沙箱加载方法,其特征在于,所述隔离沙箱加载方法中还包括分层文件系统;
所述分层文件系统包括每个隔离沙箱私有的上层文件系统和所有隔离沙箱共有的下层文件系统;下层文件系统只能处理读文件请求,保证了实例沙箱之间的文件操作不会相互干扰;上层文件系统通过一个文件系统服务器模块从下层文件系统获得只读文件描述符,可处理文件读写请求,但修改操作仅体现在对应函数实例程序私有的内存中,不写入永久存储介质;对设定的、需持久化保存的文件,文件服务器模块向函数实例提供读写文件描述符,这些文件在内存复用时进行复制操作来保证函数实例对他们的私有访问。
5.根据权利要求1中所述的隔离沙箱加载方法,其特征在于:
所述隔离沙箱加载方法中通过如下步骤实现命名空间分隔:
将每个由内存复用产生的实例沙箱放入不同的命名空间;
所述隔离沙箱加载方法中通过如下步骤实现用户自定义的去初始化:
通过允许开发人员根据所开发的程序性质,在隔离沙箱中运行的程序中入口点标记自定义标注入口点;实例沙箱通过复用完成入口点之前的全部逻辑功能的模板沙箱的内存状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911065973.2/1.html,转载请声明来源钻瓜专利网。