-
-
[翻译] “隔离”与“缓解” - Chrome、Edge 在浏览器防护上的终极对决!
-
发表于:
2017-3-10 16:30
5323
-
[翻译] “隔离”与“缓解” - Chrome、Edge 在浏览器防护上的终极对决!
“隔离”与“缓解” - Chrome、Edge 在浏览器防护上的终极对决!
昨天微软发布了一篇关于“新旧隔离机制”的文章[*译者注*:隔离任意 native 代码的执行] ,我个人非常赞同他们给 Edge 整上这个机制,但外面有些个反应简直夸张的不真实。来看看 Dan Guido 的 Twitter (对不住了 Dan ~):
> 毫无争议, Edge 一跃超过 Chrome 成为了最安全的浏览器!https://twitter.com/dguido/status/834846901191204864
在这件事上,我认为对比 Chrome 来反观微软这次的动作,弄清楚浏览器的世界里发生了什么更为重要。当然,作为 Chrome 安全的工程指导我可能会偏心。但是,我的工作要求我客观的评价各种安全机制从而指导我的团队的努力方向,所以理论上我要作出的结论还是挺“清白”的。
缓解远程代码执行(RCE)
对于前端的远程代码执行,微软可是下了大功夫。它试图通过防止攻击者获得可靠的代码而打破漏洞利用的第一环,如果成功的话就可以完全阻止攻击者。但最后仍然会演变成猫捉老鼠的游戏,缓解虽然可以消耗攻击者更多精力,却不能从根本上阻止漏洞利用。
个人来说,我认为微软此次的着眼点仅仅是放在了 IE 和 Edge 最常受到的攻击类型上,“让数据说话”也的确不失为一种合逻辑的策略。这样的话就有一大堆新的 RCE 缓解技术,连同着其与 chrome 类似技术的对比,我在下面列了写值得注意的几项:
- 内存回收
通过回收 DOM 对象、在 free 操作时作缓解,内存回收降低了可利用的 use-after-free 漏洞出现的可能性。与 Chrome 的 [use of Oilpan] 类似,通过回收 DOM 对象、分块分配内存,采用不同的缓解措施,在 use-after-free 利用过程中进行对抗。总的来说,内存回收只是 Chrome 在这块儿的一个小特点,相对来说 Chrome 没有那么多可利用的漏洞,这局打平。
- 执行流保护(CFG)
CFG 提供完整的执行流表,在“预防直接执行非法路径”上作了增强,Edge 在内部代码和系统库都用了 CFG。而Chrome 只在系统 DLL 用了 CFG, 另一方面不是在 Chrome 内部而是用在了 Clang/LLVM 工具链上,使得我们可以使用 Clang 的 CFI 检查,非常好地契合了 Chrome 的需求。CFI/CFG 是未经过实际检验的技术,未来可能出现重大的弱点和设计缺陷,总的来说是 Edge 占了上风。
- JavaScript JIT 加强
微软在“防止漏洞利用时利用 JIT ”方面做了很多工作,其中最创新的莫过于将 JIT 移出进程,不让处在沙盒中的进程直接创建可执行页面。攻击者必须完整编译 RCE 成 ROP 链,这可要费大工夫。无可否认,虽然 v8 要推出 JavaScript 解释器(ignition)和 JIT 的替代品(turbofan),Chrome 的性能会大幅提升,但是 Chrome 当前的 JIT 缓解措施还是比微软弱。这方面 Edge 遥遥领先了 Chrome。
安全隔离机制
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课