讨论操作系统安全性就是惊叹于部署访问控制模型的多样性:Unix和Windows NT多用户安全性、SELinux中的类型强制、反恶意软件产品、Apple OS X、Apple iOS和谷歌Android中的应用程序沙箱,以及FreeBSD中的Capsicum等面向应用程序的系统。这种多样性是一个惊人的转变的结果,从狭窄的1990年代Unix和NT的现状安全定位操作系统安全模型适应站点本地或特定于产品的需求。
这一转变是由三个变化推动的:无处不在的互联网连接的出现;从专用嵌入式操作系统向通用操作系统的迁移,以寻找更复杂的软件堆栈;以及从多用户计算向具有复杂应用模型的单用户设备的广泛转移。这一转变是由可扩展访问控制框架,这使得操作系统内核更容易适应新的安全需求。
其中一个可扩展的内核参考监控框架是托管dbsd MAC(强制访问控制)框架,它于2000年开始开发,2003年在开源FreeBSD操作系统中发布。本文首先描述访问控制可扩展性和高级框架设计的背景和挑战,然后转向在几个基于框架的产品中部署安全策略的实际经验,包括FreeBSD、nCircle设备、Juniper的Junos以及Apple的OS X和iOS。虽然可扩展性是每个项目的关键,但它们促使对框架本身进行了相当大的更改,因此本文还探讨了框架如何满足(和没有)每个产品的需求,并最终反思了操作系统安全性的持续发展。
嵌入式和移动操作系统在过去20年里发生了巨大的变化:设备获得了运行通用操作系统的CPU能力;他们被置于无处不在的网络环境中;他们需要支持成熟的软件栈,包括第三方应用程序;他们发现自己暴露在由强烈的经济动机驱动的恶意活动中。建立在现有操作系统上的供应商软化了开源,以避免从零开始创建它们。这提供了成熟的应用程序框架和复杂的网络堆栈,这两个领域都是当时“嵌入式操作系统”的弱点。一个早期的例子是Juniper的Junos,这是1998年用于路由器控制平面的FreeBSD版本。2007年,谷歌基于Linux的Android系统和部分基于Mach和FreeBSD的苹果iOS系统问世,这一趋势取得了成效,改变了智能手机市场。
所有这些环境的共同之处都是关注安全性和可靠性:由于第三方应用程序通过Junos的SDK部署到iOS/Android应用程序商店,因此沙箱变得至关重要,首先要防止砖衬(由于故障或滥用,将设备简化为一块砖头),然后再限制恶意软件。通过手机上网购物,以及最近的银行和支付系统,这一趋势得到了加强。因此,操作系统安全的作用已经从保护多个用户免受彼此伤害转变为保护单个操作员或用户免受不值得信任的应用程序的伤害。在2013年,嵌入式设备、移动电话和平板电脑是交汇点:许多不同方面的利益——消费者、手机供应商、应用程序作者和在线服务——必须在为另一个地点和时间设计的操作系统的帮助下进行调解。
访问控制框架.操作系统开发人员必须满足设备供应商的要求,他们要求从路由器和防火墙加固到手机应用沙箱等一切。操作系统供应商已经准确地观察到历史上艰难的采用路径可信操作系统,其强制访问控制方案遭受了糟糕的可用性,性能,可维护性,也许最关键的是终端用户的需求。同样,他们在研究中看到了许多有前途的新的安全模型,每一个都具有未知的可行性,这表明没有一个单一的访问控制模型可以满足所有的需求。安全本地化的实际情况直接激发了可扩展的访问控制。
过去20年的研究已经清楚地表明,需要一个参考监视器一种独立的、不可绕过的、紧凑的(因此可验证的)访问控制集中。2到20世纪90年代初,这个概念已经和封装,出现在Abrams等人的访问控制通用框架(GFAC)中,1到20世纪90年代末,出现了Ott的基于规则集的访问控制(RSBAC)。14以及Spencer等人的Flask安全架构。17主流操作系统供应商直到21世纪初才采用这些方法,在FreeBSD上使用MAC框架22不久之后,又推出了Linux安全模块(LSM)。23在这两种情况下,一个关键问题是支持第三方安全模型,而不像早期的可信系统那样使用固定的策略。
MAC框架于1999年提出,其设计白皮书于2000年6月发布。20.它出现在2003年FreeBSD 5.0中,作为一个实验特性,默认编译出来,但早期采用者可以使用。2009年的FreeBSD 8.0将该框架作为产品特性,编译到默认内核中。(其发展过程中关键事件的时间轴出现在图1.)
MAC框架为内核访问控制增强的问题提供了一个逻辑解决方案:扩展基础设施能够表示许多不同的策略,提供了改进的可维护性,并得到操作系统供应商的支持。类似于设备驱动程序和虚拟文件系统模块,10策略被编译到内核或可加载模块中,并实现定义良好的内核编程接口(kpi)。策略可以增强访问控制决策,并利用对象标记等公共基础设施来避免直接修改内核和代码重复。它们能够跨广泛的对象类型(从文件到网络接口)实施访问控制,并与内核的并发模型集成。
强制性的政策.MAC描述了一类安全模型,其中策略约束所有系统用户的交互。自由裁量访问控制(DAC)方案,例如文件系统访问控制列表(acl),允许对象所有者根据自己的判断保护(或共享)对象,而MAC则强制执行系统范围的安全不变量,而不管用户偏好如何。研究文献描述了大量基于信息流和基于规则的模型的强制性政策。
早期的强制策略关注信息流,要求在整个内核中普遍执行。多级安全(MLS)通过标识用户权限和数据机密性来保护机密性,限制流量。5的成员完整性政策是MLS的逻辑对偶,保护了完整性。6这些模型维护主体和对象安全标签保存信息的保密性或完整性,控制可能导致信息升级或降级的操作。
MAC框架为内核访问控制增强的问题提供了一个逻辑解决方案:扩展基础设施能够表示许多不同的策略,提供了改进的可维护性,并得到操作系统供应商的支持。
SRI国际公司的PSOS(可证明安全操作系统)设计包括对对象类型的强大强制执行,补充能力保护。13这演变成了Boebert类型强制(TE)7以及Badger等人的领域和类型实施(DTE),4TE部署在SELinux中11以及McAfee的响尾蛇防火墙。这两个模型都是灵活且细粒度的,用符号域和类型标记主题和对象。管理员控制的规则授权域之间的交互和转换。
最后是一个广泛的特定于产品的类别强硬的政策也有关;这些方法采用较少原则的方法,提供对服务的直接控制,而不是抽象模型。
在访问控制可扩展性.在实现论文中,我们从经验中批评了同时代的技术:
指导设计原则.访问控制可扩展性和鼓励上下游供应商参与的双重目标激发了MAC框架的几个设计原则:
不执行特定的访问控制策略.在单一政策甚至政策语言上都没有达成共识;相反,用C代码捕获策略模型。
避免对内核的特定于策略的入侵.封装与策略无关的接口背后的内部。这自然会导致以对象为中心的设计访问控制检查,涉及主题、对象和方法。
提供policy-agnostic基础设施.这满足了访问控制工具之外的常见需求,例如标记和跟踪。
支持多个策略同时加载.通过这种方式,可能来自不同供应商的政策的不同方面可以独立地表达出来。例如,Trusted IRIX和Argus Pitbull都使用MLS实现用户数据机密性,使用Biba实现可信计算基(TCB)保护。组合必须是可预测的,确定的,理想情况下是合理的。
强加便于保证论证的结构.这可以通过引用监视器和定义良好的KPI语义(例如,锁定)分离策略和机制来实现。
为日益并发的内核设计.策略不仅要正确行为,而且要与它们所保护的特性相适应。
MAC框架的架构.MAC框架(如图2所示)是一个连接内核服务、策略和安全感知应用程序的薄层。控制通过大约250个入口点(对象类型×方法)从内核消费者到框架再到策略:
总的来说,这些接口允许策略以可维护的方式增强内核访问控制。
入口点调用.为了理解这些层是如何交互的,让我们通过内核进行一次文件写入检查。图3说明了vn _写
的VFS函数写
而且writev
系统调用。的MAC _ vnode _ check _ write
内核服务入口点授权写入vnode(副总裁)
通过两个科目的证书:fp - f > _信誉
打开文件,然后活跃_信誉
,它启动写操作。策略可以实现Unix功能语义(fp - f > _信誉
)或撤销语义(活跃_信誉
).的vnode
锁(副总裁- > v _锁
)在检查和使用之间保持,保护标签状态并防止检查时间到使用时间的竞争条件。
被排除在入口点之外的论点与被纳入的论点同样重要。例如,vn _写的
数据的指针(uio
)被省略,因为该数据驻留在用户内存中,就写操作而言,不能无种族限制地访问。整个框架的类似设计选择阻止了不能通过内核同步模型安全地表示的行为。
在可能的情况下,最好从内核子系统实现标记对象的角度出发,并且可以通过对方法调用的控制来实施策略。这种方法很自然地适合内核,它采用了面向对象的结构,尽管在c中缺少语言特性。一旦确定了对象,放置入口点就需要谨慎:KPI越细粒度,表达性越强的策略就能克服策略复杂性的成本。调用站点越少,越容易验证;然而,太少会导致保护不足。入口点设计还必须平衡放置检查的深度,以允许洞察对象类型,同时最小化特定抽象级别的实施点。
图4说明了MAC _ vnode _ check _ write
这是一种薄衬垫,用于断言锁、调用感兴趣的策略并触发DTrace探测。不禁止策略直接访问vnode
字段;然而,传递显式标签引用可以避免编码vnode
在一般情况下,将结构布局转化为政策,提高KPI和KBI的弹性。
策略入口点调用,封装在MAC策略检查
,是非常重要的:必须同步对策略列表的访问,以防止模块卸载的竞争,必须调用感兴趣的策略,并且必须组合结果。该框架使用了一个简单的组合元策略:如果任何策略返回失败,则拒绝访问。例如,一个EACCES
将优先选择Biba返回的值,而不是MLS返回的0(成功)。唯一的例外是后面讨论的特权扩展。此元策略简单、确定、开发人员可预测,而且最重要的是非常有用。
图5演示了Biba调用:Biba检查其撤销配置,展开特定于策略的标签,并使用其优势运算符计算决策。
内核对象标识.许多访问控制策略对主题和对象进行标记,以支持访问控制决策(例如,完整性或机密性级别)。MAC框架为内核对象、标签管理系统调用和文件标签的持久存储提供了策略不可知的标签设施。策略控制的标签语义不仅包括所存储的字节,还包括内存模型:策略可能存储每个实例、引用计数或全局数据。例如,当进程创建一个新的套接字时,Biba传播当前主题完整性级别(例如,低)到套接字标签。分区策略与进程间访问控制有关,它只标记进程而不标记套接字,因此不会为套接字分配标签值。
该框架表示标签存储使用结构体标签
,它对内核服务和策略都是不透明的。其中对象类型支持元数据方案(例如,mbuf
标签保存每个包的元数据),它们被使用;否则,标签指针将被添加到核心结构(例如,vnode
).策略可以借用现有的对象锁来保护同步模型支持的标签数据。
介绍了MAC框架的设计之后,让我们把注意力转向freebsd派生的商业或开源产品中的策略。表1而且图6说明几个这样的策略模块、它们的特性范围和发布日期。许多因素促成了这一转变的成功:
迫切需要新的访问控制.经典的Unix模式无法满足isp、防火墙和智能手机的需求。同时,由于无处不在的网络和攻击者强大的经济动机,攻击的威胁变得普遍。
关于框架的结构论证是正确的.访问控制可扩展性是支持安全本地化的首选方式,以满足不同的需求。
没有一种政策模式成为主导.因此,许多必须得到支持。
硬件性能改进增加了安全开销的容忍度.即使在消费设备和嵌入式设备中也是如此。
开源技术转换工作.FreeBSD不仅为合作研究和开发提供了一个论坛,而且为商业产品提供了一个渠道。
自2003年以来,由于一些公司在产品中部署了该框架,该框架已经有了很大的发展。
FreeBSD是一个开源操作系统,用于构建在线服务、设备和嵌入式设备。FreeBSD或其组件可以在数据中心(Internet Systems Consortium, Yahoo!)、作为集成产品(NetApp和EMC Isilon存储设备)的基础,以及在嵌入式/移动设备(Juniper交换机和Apple iphone)中找到。它的起源是BSD (Berkeley Software Distribution),开发于20世纪70年代和80年代。12BSD起源于许多核心Unix技术,包括FFS(快速文件系统)和Berkeley TCP/IP栈和套接字API。BSD许可证及其变体(MIT、CMU、ISC、Apache)允许无限制的商业使用,从而鼓励了技术转换。FreeBSD的多样化消费者既是安全本地化的动力,也是它的完美目标。
MAC框架是一个复杂的软件;尽管框架本身只有8,500行代码,包含15,000行引用策略,但它集成了一个数百万联机的内核。向生产的过渡依赖于几个因素,包括增加对中介的信心,以及对社区关于设计、兼容性和性能的反馈的响应。该框架在FreeBSD 5.0中首次发布时被标记为实验,有以下几点启示:
在仍处于试验阶段的情况下合并框架是获得能够帮助验证和改进方法的用户的关键,同时保留进行更改的灵活性。在认为该框架具有生产价值之前,需要解决两个问题:
KPI和KBI弹性.FreeBSD策略规定,针对发行版编译的内核模块的某些类必须与同一系列的后续小版本兼容(例如,FreeBSD 9.0网络设备驱动程序应该与FreeBSD 9.1兼容)。目标是避免中断使用者子系统的kbi,并为策略模块提供类似级别的二进制兼容性。子系统和策略的标签存储不透明是改进的主要领域,这避免了只需要标签访问的内核数据结构内部编码到策略中,并且提供了更改标签实现的灵活性。
性能优化.许多FreeBSD部署对性能非常敏感,只需要极小的开销,特别是在禁用框架的情况下。由于站点根据本地的安全性能权衡来选择策略,因此策略只产生它们实际使用的特性的性能损失也是可取的性能比例.然而,在FreeBSD 5.0中,回归是可测量的,这是默认启用框架的一个障碍。
标签分配权衡.即使在框架编译完成后,向内核数据结构(特别是包)添加标签也会导致臃肿mbufs
)产生了显著的分配时间归零成本。在FreeBSD 5.1中,内联mbuf
标签替换为指针,5.2中对于所有对象类型;这降低了非mac内核的成本,代价是为支持mac的内核增加了额外的分配和间接。
在启用框架的情况下,标签分配甚至更加可度量,而对于未标记的策略则没有必要。这种效果在网络数据包中最为明显,并且在FreeBSD 5.1中使用了每个策略标志来请求数据包标签。在8.0中,这种方法得到了推广,以便只为至少一个加载策略定义了初始化入口点的对象类型分配标签。这有效地消除了非策略要求时的标记成本,恢复了性能的比例性,很好地满足了一般情况。然而,一个使用包标记的商业产品,McAfee Sidewinder Firewall,看到了足够的开销来绕过标签抽象,以支持直接的结构修改。
最小化同步开销.有了编译好的框架,对入口点调用的锁保护引用计数操作对于频繁的操作(如每个包交付检查)很容易测量。随着多核硬件变得越来越普遍,锁(以及后来的缓存线)争用也变得非常重要。
从FreeBSD 5.2开始,策略被分为静态而且动态集合,以帮助固定配置嵌入式系统。前者在引导时编译或加载,之后可卸载,因此不需要同步。动态策略,那些在引导后加载的,或潜在的可卸载的,仍然需要多次锁定操作。
在FreeBSD 8.0中,同步被进一步优化,这样MAC框架就可以在默认内核中发布。这种努力得益于越来越常见的八核机器所驱动的内核可伸缩性的持续改进。特别重要的是以读为主的锁,它不会在只读获取期间触发缓存线迁移,代价是更昂贵的独占获取,非常适合不经常更改的策略列表。
nCircle网络安全公司生产了一种基于freebsd的设备IP360,用于扫描网络中的脆弱软件和遵守萨班斯-奥克斯利法案的情况。虽然它的大多数安全需求可以用传统的DAC捕获,但客户要求能够直接审计设备内容和配置。为了满足这一要求,同时在审计访问被滥用或泄露的情况下限制潜在损害,nCircle开发了一个定制策略。
对于策略来说,只产生它们实际使用的特性的性能损失是可取的。
策略授权审计用户读取所有文件系统和配置数据,绕过权限,同时也防止文件系统写入。MAC框架只能表达这种扩展的一个子集:策略可以限制权限,但不能授予权限。nCircle因此增强了框架,允许对细粒度的控制系统权限.
特权扩展.操作系统特权授予绕过操作系统安全策略的权利(例如,更改系统设置或覆盖DAC或进程模型)。在经典的Unix中,系统特权被授予以root用户运行的任何进程。为了满足nCircle的目标,策略必须能够增强内核的默认特权策略,以便为其他用户授予(和调节)特权。这带来了两个技术挑战:如何识别和区分不同类型的特权;以及如何向现有特权模型添加可扩展性。在微观上,这些问题类似于MAC框架所解决的更大的问题,即一个可扩展性参考监视器的结构,尽管背离了最初的设计选择,只限制,而不是授予,但似乎是一个自然的适合。
分析了所有现有的内核特权检查,并将其替换为针对特定命名特权的检查。权限检查随后被重做,包括一个明确的源和权限限制的组合策略,包括两个新的MAC框架入口点:MAC priv _ check
遵循标准入口点约定,接受凭据、命名特权参数,并通过返回错误来限制特权;MAC priv _ grant
通过重写基本操作系统策略来授予新权限,使用新的组合操作符允许任何策略授予权限,而不是要求所有策略都同意,从而与此模型不同。
现有的策略被更新以利用新特性,为根用户提供更强的非随意控制。例如,Biba策略现在限制了对许多特权的访问,当作为没有Biba特权的根用户操作时,可能允许绕过进程模型或重新配置系统。这些特性是在FreeBSD 7.0中提供的。
nCircle MAC策略.nCircle策略扩展(并限制)了可用的权限审计用户:
通过这些增强,nCircle策略能够将受控特权升级与强制约束结合起来,在满足产品需求的同时最小化对本地操作系统的修改。
Juniper路由器操作系统运行在所有Juniper路由器和交换机的控制平面上。Juniper对FreeBSD进行了大量的本地修改,并正在经历一个多年的过程,通过将改进反馈给FreeBSD社区,并增加操作系统可扩展性框架的使用,使本地特性可以干净地嫁接到未修改的操作系统上,从而最小化补丁。作为该项目的一部分,Juniper已经将本地安全扩展移动到MAC框架策略中,以减少FreeBSD更新期间的冲突,并为升级准备某些策略。Junos带有四个本地安全扩展:
mac _ runasnonroot
.确保针对Junos SDK编写的第三方应用程序不以root用户运行。mac_pcap
.允许Junos SDK应用程序捕获数据包,尽管不是以root用户运行。mac _ veriexec
.实现对数字签名二进制文件的支持。mac_veriexec证书
.的mac _ runasnonroot
而且mac _ pcap
扩展在2009年首次作为框架策略发布。然后mac _ veriexec
2012年发布,取代了之前直接打了补丁的实现。Juniper准备将Junos SDK沙箱迁移到MAC框架,以进一步减少本地补丁,以及上游补丁mac _ veriexec
.
这些政策需要对MAC框架进行微小修改,包括增加入口点;也许最有趣的是一种新的O _验证
标记为开放系统调用,它向框架发出信号,表明用户空间运行时连接器请求验证一个文件。
苹果在2007年发布了用于桌面/服务器的OS X Leopard版本,在2008年发布了用于iPhone和iPod Touch的iPhone OS 2版本,将MAC框架作为参考监控框架。OS X Snow Leopard自带三种MAC策略:
在OS X Mountain Lion中,通过苹果应用商店分发的应用程序有强制的沙箱。苹果iOS 2.0发布了两个策略:沙盒策略和一个附加策略:
这些策略共同支持系统完整性,并在应用程序之间提供强大的隔离,以保持数据的私密性。OS X和iOS都与我们对MAC框架的设计期望有很大差异,需要进行重大调整。
XNU原型.苹果在2000年开始对OS X进行beta测试,人们很难忽视一个带有开源内核的商用桌面操作系统的前景。XNU内核是卡内基梅隆大学Mach微内核、FreeBSD 5.0、精选的较新的FreeBSD元素和许多由苹果开发的特性的复杂混合。有了这些基础,MAC框架的方法,甚至代码,似乎都是可以重用的。
虽然不是微内核,但XNU (X的简称不是Unix)采用了Mach的许多元素,包括它的调度器、进程间通信(IPC)模型和VM系统。FreeBSD进程模型、IPC、网络堆栈和VFS被嫁接到Mach上,提供了一个丰富的POSIX编程模型。在第一个OS X版本中,苹果开发的内核组件包括I/O Kit设备驱动框架、网络内核扩展(NKEs)和HFS+文件系统;随着时间的推移,这份清单只会不断增长。
有趣的问题层出不穷:例如,在DTMach中会有想法吗16和dto17在MAC框架中,微核项目比单片内核方法应用更好还是更差?在2003年到2007年之间,日益成熟的MAC框架被移植到OS X上。18
适应OS X.MAC框架需要对FreeBSD内核进行详细的分析,并与底层内存管理和同步紧密集成,以及诸如文件系统、IPC和网络堆栈等更高级别的服务。虽然对OS X的适应很大程度上依赖于Apple对FreeBSD组件的使用,但需要进行根本性的改变来反映FreeBSD和XNU之间的差异。
第一步是将MAC框架与紧密对齐的BSD进程模型、文件系统和网络堆栈集成。高级体系结构对齐使一些适应工作变得容易,但也会遇到不小的差异。例如,FreeBSD的Unix文件系统(UFS)认为目录是专门的文件对象,而HFS+考虑目录和对象属性结构,或磁盘目录,成为一流的对象。这需要对框架和XNU进行更改。
接下来,覆盖范围扩展到包括Mach任务和IPC。每个XNU进程都将一个Mach任务(调度、VM)与一个FreeBSD进程(凭证、文件描述符)连接起来,这就提出了一个哲学问题:MAC框架是Mach的一部分还是BSD的一部分?虽然在体系结构上很有用,但XNU中的MAC - bsd边界被证明是人为的:引用经常跨越层,需要MAC框架同时服务于这两层。BSD进程标签上的标签修改被镜像到相应的Mach任务标签上。
马赫端口是微内核起源与MAC框架的单块内核前提发生冲突的另一种情况。与具有内核管理的名称空间的BSD IPC对象不同,Mach端口依赖于由管理的用户空间名称空间launchd
(例如,对于桌面IPC)。借鉴DTOS的经验,launchd
负责标记和执行,但查询引用监视器以授权查找。一个用户空间标签处理抽象类似于内核标签
结构就是这个目的。
采用苹果.苹果是世界上最大的桌面Unix系统供应商,也是最早在智能手机上部署Unix系统的公司之一。由无处不在的网络和恶意攻击者所激发的用例和新的安全需求也出现了爆炸式增长。然而,苹果采用MAC框架并没有得到保证,因为竞争技术也被考虑在内,动机是类似的观察、对未来产品方向的认识、性能考虑和我们的研究。
替代方案包括基于系统调用的插入技术,类似于前面讨论的技术,以及苹果的Kauth3.(内核授权的缩写),一个针对反病毒供应商的授权框架(部分模仿MAC框架)。苹果发现系统调用介入的不可靠性令人信服,最终采用了两种技术:针对第三方防病毒供应商的Kauth;以及更有表现力、更有能力的MAC框架。
沙箱政策.由于苹果的OS X和iOS策略模块不是开源的,我们无法考虑它们的实现,但Mac OS X组件和第三方应用程序(如谷歌的Chrome Web浏览器)使用的沙盒策略存在公共文档。沙盒允许应用程序自愿地限制它们对资源(例如,文件系统、IPC名称空间和网络)的访问。流程沙盒概要文件存储在流程标签中。
字节码编译策略可以通过公共api设置,也可以通过sandbox-exec
辅助程序。应用程序可以从几个苹果定义的策略(表2)或定义自定义策略。一些应用程序使用默认策略,如iChat视频编解码器,它使用仅计算配置文件,仅限于与主机进程的IPC。许多其他软件组件,如Spotlight索引、BIND名称服务器、Quicklook文档预览和系统日志守护进程,都利用自定义配置文件来限制潜在漏洞的影响。
图7显示节选自common.sb
Chrome使用的配置文件,说明关键沙盒结构:粗糙的控件sysctl
内核管理接口和共享内存,以及文件路径的细粒度正则表达式匹配。基于文件路径的控制是沙盒策略的一个亮点,它对程序员模型的寻址比Biba、MLS和TE中的文件标签好得多。基于路径的方案很难在Unix VFS模型上实现,因为它认为路径是二等结构。FreeBSD允许文件有零个(未链接但打开的)、一个或多个名称(硬链接),而HFS+为文件实现了一个父指针,并确保名称缓存总是包含计算正在使用的文件的明确路径所需的信息。
虽然许多OS X服务都使用沙盒,但许多第三方应用程序都包含了很强的假设环境管理局,即访问系统中任何对象的能力。在iPhone上,苹果打破了这个假设:应用程序与系统服务和其他应用程序是独立执行的。这个模型现在出现在OS X中,同样可以帮助保护设备的完整性,防止行为不当的应用程序,以及越来越多的终端用户数据。
性能优化.在FreeBSD 8.0的性能优化之前,OS X和iOS就已经随MAC框架一起发布了,这要求苹果根据产品特定的约束条件进行自己的优化。与FreeBSD优化一样,这些优化通常与框架输入和标记的开销有关。默认情况下,对于某些对象类型,标记是在内核外编译的;对于其他人,如vnodes组成
,策略可能会选择性地请求标签分配,以满足OS X策略中通常稀疏的标签使用。
在FreeBSD中,框架插装和同步优化依赖于愿意为额外访问控制扩展付费的站点之间的全或无区别。在OS X中,假设在大多数机器上使用沙箱,但有选择地应用于高风险进程。为此,每个流程都携带一个由策略设置的掩码,以指示需要实施的对象类型。由于OS X采用了更多的通用沙盒,就像在iOS中一样,它可能需要应用更多的全局优化,就像在FreeBSD中一样。
在过去的十年中,MAC框架已经成为许多安全本地化实例的基础,允许本地访问控制策略与仍然流行的Unix任意访问控制(DAC)模型组合,这是行业需求和研究的及时融合。通过开源进行部署被证明是一种成功的策略,它为协作改进提供了一个论坛,为早期采用率提供了访问途径,并为众多产品提供了一条途径。
MAC框架已经成为许多安全本地化实例的基础,它允许本地访问控制策略与仍然流行的Unix任意访问控制模型组合。
也许最令人惊讶的采用发生在McAfee本身:当该框架由McAfee Research开源时,Secure Computing Corporation(当时是McAfee的竞争对手)将其用于响尾蛇(后来被McAfee收购)。更普遍地说,这说明了开源的成功,它为竞争的公司提供了一个合作开发公共基础设施技术的场所。业界对设备和嵌入式设备的开源基础的采用已经被我们的访问控制可扩展性论点很好地迎合了:
然而,MAC框架还需要改进和扩展,以解决几个意想不到的问题:
新的设计原则.根据MAC框架的广泛现场经验,我们增加了几个新的设计原则:
策略作者决定他们自己的性能、功能和保证权衡.策略可能不需要重量级的基础设施(例如,标签),因此要提供性能比例。
可追溯性是一个关键的设计关注点.
编程和二进制接口的稳定性至关重要.API、ABI、KPI和KBI可持续性在研究中经常被忽视,在研究中,原型经常是一次性的,没有几十年的支持义务。
操作操作系统特权对于增强DAC而不是补充DAC的策略非常重要.
但是,从下游消费者的工作中可以清楚地看出,现在还需要两个进一步的原则:
应用程序作者是一级主体.苹果的App Store和Juniper的SDK都使用应用程序签名和证书作为策略输入。
应用程序本身需要灵活的访问控制来支持应用程序划分.
后一个观察结果使我们开发了以应用为重点的辣椒保护模型,21最近作为FreeBSD 9.0的实验特性发布。它可以被看作是策略驱动的内核访问控制的补充。
特定领域的政策模型.为什么在操作系统策略的表达上没有达成共识是一个有趣的问题。当然,连续策略模型的支持者认为他们的模型抓住了系统设计中的关键问题。为了迎合各种各样的模型,我们的观察有两个方面:首先,政策模型旨在捕捉经济的各个方面最小特权原则15但通常以根本不同的形式(例如,信息流vs.系统特权),使它们的方法互为补充;其次,不同的模型在表达式类型、保证、性能、管理复杂性、实现复杂性、兼容性和可维护性之间的多维权衡中处理不同的空间。相反,这反映了一种共识特定领域的政策模型.
可扩展性的价值.重要的设计增强的需要是否证实或拒绝访问控制可扩展性的假设?进一步比较类似的框架,如VFS和设备驱动程序,似乎是合适的:两者都定期扩展,以适应新的需求,如分布式文件系统技术的变化或电源管理的改进。工业消费者对扩展框架和回报改进的意愿反映了我们关于可扩展性的基本经济假设:为重要源代码库管理上下游关系是一个强大的激励因素。MAC框架的广泛和持续部署似乎证实了一个更普遍的论点,即访问控制可扩展性是当代操作系统设计的一个关键方面。
系统研究强调思想在现实系统中的实际应用:只有实现一个思想,你才能完全理解它;从研究到实践的转变更是如此。致谢是由于跨越许多机构的大量演员;要查看完整列表,请参见queue.acm.org.本文的有益反馈来自Ross Anderson、Simon Cooper、Jon Crowcroft、Simon Gerraty、Matthew Grosvenor、Steve Hand、Mark Handley、Steve Kiernan、Anil Madhavapeddy、Peter G. Neumann、George Neville-Neil和Mike Silbersack。
这项工作得到DARPA/AFRL合同FA8750-10-C-0237 (CTSRD)的支持,此前还得到DARPA CBOSS和SPAWAR SEFOS合同的支持,涵盖DARPA CHATS和DARPA CRASH研究项目。本文中的观点、意见和/或发现均为作者个人观点,不应被解释为代表DARPA、美国海军、AFRL或国防部的官方观点或政策,无论是表达的还是暗示的。谷歌,Inc.也支持这项工作。
相关文章
在queue.acm.org
构建安全共享的系统
波尔-亨宁·坎普,罗伯特·沃森
ttp: / / queue.acm.org/detail.cfm ? id = 1017001
面向21世纪的可扩展编程圣世纪
格雷戈里·威尔逊诉
http://queue.acm.org/detail.cfm?id=1039534
ACM CTO企业移动设备圆桌会议
马谢Creeger
http://queue.acm.org/detail.cfm?id=2016038
1.艾布拉姆斯,埃格斯,k.w.,拉帕杜拉,L.J.和奥尔森,I.M.访问控制的广义框架:非正式描述。在十三届会议的议事录thNIST-NCSC全国计算机安全会议(1990), 135143。
2.计算机安全技术规划研究。技术报告,空军系统司令部电子系统司,1972年。
3.苹果(aapl . o:行情)。内核授权。技术说明TN2127, 2007;http://developer.apple.com/technotes/tn2005/tn2127.html.
4.獾,L.,斯特恩,D.F.,谢尔曼,D.。Walker, K.M.和Haghighat, S.A. Unix的实用域和类型实施。在1995年IEEE安全与隐私研讨会论文集(1995)。IEEE计算机协会。
5.贝尔,d。e。和l。j。拉帕杜拉。安全计算机系统:数学基础和模型。技术报告m74 - 244。Mitre公司,贝德福德,马萨诸塞州,1973年。
6.安全计算机系统的完整性考虑。技术报告tr - 3153。Mitre公司,贝德福德,马萨诸塞州,1977年。
7.Boebert, W.E.和Kain, R.Y.一个实际的替代分级诚信政策。在八人会议记录th全国计算机安全会议, 1985年。
8.Cantrill, b.m., Shapiro, M.W.和Leventhal, A.H.生产系统的动态仪器。在Usenix年度技术会议论文集(伯克利,CA, 2004)。Usenix协会。
9.Fraser, T., Badger, L.和Feldman, M.用通用软件包装器加固COTS软件。在1999年IEEE安全与隐私研讨会论文集.
10.Vnodes:在Sun Unix中用于多种文件系统类型的体系结构。在1986年夏季Usenix会议记录.
11.Loscocco, P.A.和Smalley, S.D.将安全策略的灵活支持集成到Linux操作系统中。在2001年Usenix年度技术会议论文集.Usenix协会,2942。
12.麦库斯克,m.k.,内维尔-尼尔,G.V.FreeBSD操作系统的设计与实现.培生教育,2004年。
13.Neumann, p.g., Boyer, r.s., Feiertag, r.j., Levitt, K.N.和Robinson, L.一个可证明安全的操作系统:系统,它的应用,和证明,第二版。技术报告csl - 116。计算机科学实验室,SRI国际,1980年。
14.基于规则集的Linux访问控制(RSBAC) (2010);http://www.rsbac.org/.
15.计算机系统中信息的保护。在IEEE 63论文集, 9(1975), 12781308。
16.分布式可信马赫体系结构概述。在Usenix Mach研讨会论文集(1991)。Usenix协会,2022。
17.斯宾塞,斯莫利,罗斯科科,P,希布勒,M,安德森,D.和勒普罗,J. 1999。Flask安全架构:系统支持多种安全策略。在八人会议记录thUsenix安全研讨会(1999)。Usenix协会,123139。
18.C.万斯,T. C.米勒,R.德克尔鲍姆,A.莱斯,2007。安全增强的Darwin:将SELinux移植到Mac OS X. In第三届年度安全增强Linux研讨会的会议记录(2007)。
19.利用系统调用包装器中的并发漏洞。在第一届Usenix进攻性技术研讨会论文集.Usenix协会,2007,18。
20.操作系统安全可扩展性的新方法。技术报告ucam - cl - tr - 818。剑桥大学计算机实验室,2012。
21.Watson, R.N.M, Anderson, J, Laurie, b和Kennaway, K. Capsicum: Unix的实用能力。在十九届会议记录thUsenix安全研讨会(2010)。Usenix协会。
22.Watson, R.N.M. Feldman, B. Migus, A.和Vance, C. TrustedBSD MAC框架的设计和实现。在第三届DARPA信息生存能力会议与展览论文集(2003)。IEEE。
23.C.赖特,考恩,C.莫里斯,J.斯莫利,S.克劳-哈特曼,G. 2002。Linux安全模块:对Linux内核的一般安全支持。在十一届会议记录thUsenix安全研讨会(2002)。Usenix协会。
©2013 0001 - 0782/13/02 ACM
允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org传真(212)869-0481。
数字图书馆是由计算机协会出版的。版权所有©2013 ACM, Inc.
没有发现记录