转自: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简介相关推荐

  1. Mac 开发(一) 苹果沙盒机制sandbox 简介

    文章目录 Mac 开发(一) 苹果沙盒机制sandbox简介 1 Mac sandbox简介 1.1 关于应用程序沙盒 1.2 为啥要用沙盒机制 2 沙盒原理 3 xcode中开启沙盒权限 3.1 X ...

  2. Mac 开发(一) 苹果沙盒机制sandbox简介

    Mac 开发(一) 苹果沙盒机制sandbox简介 孔雨露正在上传-重新上传取消 2020年06月07日 16:41 ·  阅读 7332 @[TOC] Mac 开发(一) 苹果沙盒机制sandbox ...

  3. JVM SandBox 的技术原理与应用分析

    原文:https://www.infoq.cn/article/TSY4lGjvSfwEuXEBW*Gp 一.前言 在开始之前,我们先来模拟一下以下的场景: 小李:"小明,你的接口没有返回数 ...

  4. AOP—JVM SandBox—底层原理解析

    原文作者:陆晨 原文地址:JVM SandBox 的技术原理与应用分析 目录 一.前言 二.JVM SandBox 简介 2.1 AOP 2.2 JVM SandBox 三.JVM 核心技术 3.1 ...

  5. 阿里JVM SANDBOX原理

    一.前言 在开始之前,我们先来模拟一下以下的场景: 小李:"小明,你的接口没有返回数据,麻烦帮忙看一下?" 小明:"我这边的数据也是从别人的服务器中拿到的,但是我不确定是 ...

  6. 【pwnable】asm之write up

    首先查看源代码: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <s ...

  7. chromedriver中的浏览器选项

    chromedriver中的浏览器选项 There are lots of command lines which can be used with the Google Chrome browser ...

  8. Chromium浏览器(CEF)的命令行列表说明

    找到的Chromium浏览器的命令行说明列表,转放在这里以方便查看. List of Chromium Command Line Switches There are lots of command ...

  9. Alibaba之jvm-sandbox初体验

    前言 在开始之前,我们先来模拟一下以下的场景: 小李:"小明,你的接口没有返回数据,麻烦帮忙看一下?" 小明:"我这边的数据也是从别人的服务器中拿到的,但是我不确定是因为 ...

最新文章

  1. Android中Broadcast
  2. Nature、Science的绘图新宠,博导人论文覆盖率高达78%...
  3. 在Java Build Path中找不到超类“javax.servlet.http.HttpServlet”[重复]
  4. “诺奖风向标”沃尔夫奖出炉:数学颁给表示论,物理颁给激光
  5. doctype的种类
  6. FLV封装格式分析器
  7. crontab命令---Linux学习笔记
  8. leetcode 剑指 Offer 03. 数组中重复的数字
  9. 用 @Value(“${xxxx}“)注解从配置文件读取值的用法
  10. [视频]Google Chrome背后的故事
  11. mysql ssh .net_c# – 使用SSH.NET库与MySQL建立SSH连接
  12. 我的世界java什么时候打折_十周年特别纪念!微软《我的世界》游戏全平台最高折扣50% - IT之家...
  13. NSTimer里的userInfo
  14. 树莓派视频监控 —— 使用 mjpg
  15. Renesas:RH850G3KH 2.0内核简单知识整理
  16. 轻松筹 html模板,水滴筹、轻松筹感人标题模板25个字怎么写?在朋友圈发求捐款语录怎么写?...
  17. 算法:(BFS)迷宫寻路算法
  18. 新手如何有效的刷算法题(LeetCode)
  19. 黑苹果 MacOS 10.15 Catalina安装教程
  20. 家长必备技能!教您限制孩子手机上的娱乐功能APP!

热门文章

  1. 数据采集—XPath抽取网页数据
  2. linux打印信息命令行,技术|从 Linux 命令行进行打印
  3. 我的世界java栏杆_我的世界:java版完美种子,开局两村庄齐铁套,还有满级时运附魔...
  4. HHVM jit过程
  5. Linux红帽8.2系统中密钥加装和日志管理
  6. Java中的lambda表达式如何理解——精简
  7. 电脑图片损坏是怎么回事
  8. 为什么能用域名访问斗鱼、却不能用ip访问
  9. Android 自定义注解详细用法,手写Butterknife黄油刀
  10. 使用Service和BroadcastReceiver实时监听网络状态