-
-
[翻译]加固微软Edge 沙盒
-
发表于: 2017-5-2 21:52 4050
-
在一个近期的贴子中,我们简要的描述了微软Edge安且小组使用的一个分层策略,用来保护你的可能使你的设备或者个人数据陷入危险的弱点。特别是我们展示了微软Edge如何利用像代码完整性保护(CIG)和任意代码保护(ACG)来打败利用漏洞来获得远程代码执行的时黑客所依赖的一些技术。这就是攻击者在浏览器中寻找从web代码中逃走的地方(JS和HTML)来执行攻击者选择的原生CPU执令。这使攻击者破坏所有浏览器对于web所设的的规则,例如同源策略,所以尽最大努力来阻止RCE攻击对于web使用者来说非常重要。
然而,尽管我们做好了最好的努力,有些时候攻击都还是执行了RCE,在这个帖子中,我们将研究一些我们在Windows10 Creators Update中的重大改进来加固我们下一道防线:微软Edge沙盒。
微软Edge沙盒的历史
因为RCE能够发生,在过去也经常发生,浏览器制造商们寻求将浏览器置入沙盒中来保护其余用户的个人电脑免受攻击。在2007年,IE7引入了Protected Mode,每一个web浏览器沙盒。Windows8向操作系统中加入了app container ,主要用来支持新的Windows商店应用程序模型和支持confidence promise 使应用程序可以被安全使用。IE10和IE11使用了app containe来创建EPM (加强的受保护模式)一个更强壮的浏览器沙盒。然而,EPM沙盒限制与在app container之前的较老的ActiveX控件不兼容,所以EPM是作为一个安全加强选项来提供给用户的。
微软Edge不支持ActiveX,所以它不能够在所有的时间里在app container沙盒中一直保持完整的运行。因为开始的时候,微软Edge使用了一些app containers。最开始有一个对于Manager来说有一个parent app container,它创建了一小部分额外的app containers来容纳来自从intranet内容中分离出来的internet的内容。Windows 10 Anniversary Update 将FLsh加入到它自身当中单分出来一个app container。如今的微软Edge app container模型看起来是这样的:
Manager提供了浏览器特——如URL条,返回按钮,标签,和你的收藏列表。其余的app container是:
Internet AC: 容纳来自internet的内容。.
Intranet AC:容纳来自Intranet的内容。对于企业用户来说,那是企业网丫。对于消费者来说,那是“网站”,即你家庭网络中设备的控制接口,比如说你的Wi-Fi路由器,或者IoT设备。将这个RAC与internet分离,比如将你的家庭WiFi路由器与Internet上的攻击者分离开。
· Extensions AC: 为微软Edge新的扩展。
· Flash AC: 容纳Adobe Flash player,将它与主要的内容进程分离。
· Service UI AC: 容纳特殊的网页,比如about:标记和默认主页。
The Internet AC是行动的场所。它的工作是来自任合地方的网页,包含网页提供的JS代码,图像和多媒体。容纳网页是相当复杂的,因为当今网页的丰富性。这是Internet的平台,开发者要能够创建任何程序并在这个环境中运行它。因为它很复杂,并要容纳来自任何地方的网页,所以这是网络安全攻击开始的地方。一个恶意网站展示内容启图利用内容容纳系统中的漏洞,接管内容处理控制权。
如果一个攻击者了一个Internet AC的进程,他们需要找到一些方法来实现他们的目的。如果他们的目标涉及到危害用户的设备或是储存设备上的个人数据,然后他们将会首先想要逃出沙盒。
在复杂的程序中,消除漏洞最有效的方法之一是减少一个攻击者能够在其中尝试寻找漏洞的代码量。这常被指为减少攻击表面并且它是我们整个策略安全中的一个关键策略。在这一点上,微软Edge在Windows10的Creators Update中已经通过配置app container进一步降低它的特权来大幅减少沙盒的攻击表面。
为了我们如何调整微软Edge AC,首先需要知道app container本身是如何工作的。一个app container 进程对于任意受安全对象是默认拒绝的,除非对象安全描述符有一个允许访问控制入口 (ACE) ,该入口将会允许 app container具有访问权限。共有3种SIDs 在这样的ACEs可以使用:
· Capabilities:如果一个Capability SID基于允许 ACE在安全描述符中,并且请求AC在它的token具有那个Capability SID,那么它获得了访问权限。比如:Web-Cam相关的设备对于具有WEBCAM Capability SID的进程来说是可以访问的,比如说微软Edge。
· AppID SIDs:如果一个具体的AppID SID基于allow ACE在安全描述符中,并且请求AC是那个具体的AppID,然后它就获得了访问权,其主要用途是每个app存储,存储在安全描述符中使用那个app的AppID,确保它的存储对于那个app是私有的。
· “ALL APPLICATION PACKAGES” (“AC” SID):这是AC外卡,允许所有的app containers访问资源。“AC” SID存在,所以Windows能够提供一个对于开发者很有用的app平台,允许丰富的UWPs在Windows商店里。比如,大部分的WinRT API surface 对 “AC” SID是开放的,所以所有的UWPapp都能访问 WinRT APIs。
微软Edge AC只在一种方式中变得不同了:the “AC” SID 不足以使一个请求进程访问一个资源,为了获得访问权限,AC必须要么拥有一个对应的Capability SID,要么就是安全调试符中的一个已命名的AppIDs 。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!