seccomp sandbox简介
转自:http://www.linuxidc.com/Linux/2015-02/112913.htm
Seccomp(secure computing)是Linux kernel (自从2.6.23版本之后)所支持的一种简洁的sandboxing机制。它能使一个进程进入到一种“安全”运行模式,该模式下的进程只能调用4种系统调用(system calls),即read(), write(), exit()和sigreturn(),否则进程便会被终止。
Seccomp是Andrea Arcangeli在2005年设计的,其目的是解决grid computing中的安全问题,比如你打算出租你的CPU资源,但又担心不可信的代码会破坏你的系统。那么,Seccomp则可以为“不可信的纯计算型代码”提供一个“安全(SAFE, not SECURE)”的运行环境,以保护你的系统和应用程序的正常运行不受不可信代码的干扰。
据说Google Chrome浏览器的开发人员曾经考虑过使用Seccomp来建立Chrome Sandbox,但考虑到Seccomp的一些不足而“另辟蹊径”—— Native Client 。『据了解,Google Chrome 4 在今年 CanSecWest Applied Security 大会上是唯一没有被当场攻破的浏览器,而IE8 on Windows7/Vista/XP, Mozilla Firefox 3 和 Apple Safari 4 都相继被攻破。』
简洁、优美是Seccomp的优点,但只能支持“纯计算型”代码却使得其应用受到很大限制。比如,Seccomp模式的进程不能动态分配内存、不能与其它进程使用共享内存、不能使用新的文件描述符、等等。如果要支持具有丰富功能的应用程序,则需要另外的方法来截获并处理其它系统调用。
有人提议对seccomp进行改进使其支持对系统调用提供更细粒度的控制。比如,对seccomp增加一个新的mode,使用一个bitmap来精确描述哪些系统调用是可以被访问的,而哪些是被禁止的。而进程自己还可以丢弃(但不能重新获取)它所具有的访问哪些系统调用的能力(这种工作方法有点像Linux capability安全机制,尽管这两者是完全正交的)。但是到今天为止,还没有看到相关的进展,据说是因为ftrace也支持类似的功能,如何裁定还需要进一步讨论。
通过截获系统调用来实现sandbox是一贯的做法,它假设Kernel是好人,而User不一定是好人。在现代操作系统中,User和Kernel的空间是隔离的,一个进程只能通过系统调用才能从user空间进入kernel空间。如果一个进程不需要执行系统调用(即不需要kernel提供的丰富功能),那么我们的系统被攻击的风险就小。当然假设进程不使用系统调用是不切实际的,但对今天的多数系统来说,为用户程序提供的丰富功能是以牺牲安全性为代价的。但是,“仅仅通过截获并处理系统调用的方法去实现sandbox”是否是正确的技术方向呢?我们知道,当系统调用的参数保存在用户空间的时候,要想验证该参数是否“安全”是非常困难的,比如TOC2TOU问题便是一个挑战:一个恶意进程可能会在“参数被安全检查”之后、而在“实际使用参数”之前将该参数换掉,这便使截获系统调用时所做的参数检查变得没有意义。要解决这个问题,我们也许不应当只将目光锁定在系统调用的入口处。
sandboxing一直以来都是一个大难题,对于今天的COTS OS来说还不存在一个通用的安全方案。如何去做满足自己需要的sandbox,则需要量体裁衣。
seccomp sandbox简介相关推荐
- Mac 开发(一) 苹果沙盒机制sandbox 简介
文章目录 Mac 开发(一) 苹果沙盒机制sandbox简介 1 Mac sandbox简介 1.1 关于应用程序沙盒 1.2 为啥要用沙盒机制 2 沙盒原理 3 xcode中开启沙盒权限 3.1 X ...
- Mac 开发(一) 苹果沙盒机制sandbox简介
Mac 开发(一) 苹果沙盒机制sandbox简介 孔雨露正在上传-重新上传取消 2020年06月07日 16:41 · 阅读 7332 @[TOC] Mac 开发(一) 苹果沙盒机制sandbox ...
- JVM SandBox 的技术原理与应用分析
原文:https://www.infoq.cn/article/TSY4lGjvSfwEuXEBW*Gp 一.前言 在开始之前,我们先来模拟一下以下的场景: 小李:"小明,你的接口没有返回数 ...
- AOP—JVM SandBox—底层原理解析
原文作者:陆晨 原文地址:JVM SandBox 的技术原理与应用分析 目录 一.前言 二.JVM SandBox 简介 2.1 AOP 2.2 JVM SandBox 三.JVM 核心技术 3.1 ...
- 阿里JVM SANDBOX原理
一.前言 在开始之前,我们先来模拟一下以下的场景: 小李:"小明,你的接口没有返回数据,麻烦帮忙看一下?" 小明:"我这边的数据也是从别人的服务器中拿到的,但是我不确定是 ...
- 【pwnable】asm之write up
首先查看源代码: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <s ...
- chromedriver中的浏览器选项
chromedriver中的浏览器选项 There are lots of command lines which can be used with the Google Chrome browser ...
- Chromium浏览器(CEF)的命令行列表说明
找到的Chromium浏览器的命令行说明列表,转放在这里以方便查看. List of Chromium Command Line Switches There are lots of command ...
- Alibaba之jvm-sandbox初体验
前言 在开始之前,我们先来模拟一下以下的场景: 小李:"小明,你的接口没有返回数据,麻烦帮忙看一下?" 小明:"我这边的数据也是从别人的服务器中拿到的,但是我不确定是因为 ...
最新文章
- Android中Broadcast
- Nature、Science的绘图新宠,博导人论文覆盖率高达78%...
- 在Java Build Path中找不到超类“javax.servlet.http.HttpServlet”[重复]
- “诺奖风向标”沃尔夫奖出炉:数学颁给表示论,物理颁给激光
- doctype的种类
- FLV封装格式分析器
- crontab命令---Linux学习笔记
- leetcode 剑指 Offer 03. 数组中重复的数字
- 用 @Value(“${xxxx}“)注解从配置文件读取值的用法
- [视频]Google Chrome背后的故事
- mysql ssh .net_c# – 使用SSH.NET库与MySQL建立SSH连接
- 我的世界java什么时候打折_十周年特别纪念!微软《我的世界》游戏全平台最高折扣50% - IT之家...
- NSTimer里的userInfo
- 树莓派视频监控 —— 使用 mjpg
- Renesas:RH850G3KH 2.0内核简单知识整理
- 轻松筹 html模板,水滴筹、轻松筹感人标题模板25个字怎么写?在朋友圈发求捐款语录怎么写?...
- 算法:(BFS)迷宫寻路算法
- 新手如何有效的刷算法题(LeetCode)
- 黑苹果 MacOS 10.15 Catalina安装教程
- 家长必备技能!教您限制孩子手机上的娱乐功能APP!
热门文章
- 数据采集—XPath抽取网页数据
- linux打印信息命令行,技术|从 Linux 命令行进行打印
- 我的世界java栏杆_我的世界:java版完美种子,开局两村庄齐铁套,还有满级时运附魔...
- HHVM jit过程
- Linux红帽8.2系统中密钥加装和日志管理
- Java中的lambda表达式如何理解——精简
- 电脑图片损坏是怎么回事
- 为什么能用域名访问斗鱼、却不能用ip访问
- Android 自定义注解详细用法,手写Butterknife黄油刀
- 使用Service和BroadcastReceiver实时监听网络状态