站点隔离

站点隔离()是存在於某些網路瀏覽器中的安全功能,能够让跨源网站彼此隔离。这一功能最初由查尔斯·赖斯()等人提出,随后微软在其中实现了该功能的迭代版本。然而,由于实现过程中的问题以及性能方面的担忧,该功能最初未被广泛采用。

2017年,幽灵漏洞和熔断漏洞被公开披露,次年谷歌开始在Chrome中开发站点隔离功能,并于2019年发布。2021年,Firefox也推出了站点隔离功能,开发过程中使用了代号「Project Fission」。

该功能具有显著的安全优势,但研究人员发现了与之相关的一些安全问题,包括对的保护效果不佳,以及由该功能引发的新型和资源耗尽攻击。

背景
2017年前,主流网页浏览器的主要安全架构采用每浏览实例一进程()模型。浏览器有多个沙箱进程,包括浏览器进程、GPU进程、网络进程、渲染进程。在浏览网页时,若需要特权提升,渲染进程会与其他特权服务交互。

这种旧模型能够防止恶意JavaScript访问操作系统,但在有效隔离各个网站方面仍显不足。然而新模型在性能和内存方面存在明显问题,因此未被广泛使用。

2017年披露的幽灵漏洞和熔断漏洞揭示了旧模型的严重缺陷。在漏洞披露前,任意访问内存难度很大,需要攻陷渲染器;而通过幽灵漏洞,仅需利用JavaScript特性即可读取渲染进程中几乎所有的内存,从而获取先前渲染的跨源页面中的敏感信息。为了防止类似的问题,需要开发新的安全架构,将不同网页的渲染完全隔离到相互独立的进程中。

历史
2009年,查尔斯·赖斯()等人首次提出了每网站一进程()模型,根据页面的来源隔离网页,将不同网站运行在不同渲染进程中。同年,对此做出了改进,不仅在网站之间进行隔离,还在同一页面中为每个来自不同域的内容元素创建独立的进程。与此同时,OP(OP2浏览器的前身)、IBOS、Tahoma、SubOS浏览器也在进行相关工作,提出了不同方式以解决站点之间的进程分离问题。

实现
2013年5月,Google Chrome的站点隔离团队中一位成员在chromium-dev邮件列表上宣布,他们将开始提交用于实现跨进程()的代码。2015年1月于BlinkOn举行的「站点隔离峰会」()上,官方介绍了由八位工程师组成的团队,并详细说明了这一项目的动机、目标、架构、预期时间表以及所-{zh-hans:取得; zh-hant:取得}-的进展。该峰会上还演示了Chrome上早期站点隔离的原型。

2019年,Google Chrome项目的赖斯等人在USENIX Security上发表了一篇论文,详细介绍了他们对浏览器安全模型所做的更改,以应对先前出现的幽灵漏洞。该论文称,这些更改参考了他和其他人在2009年提出的模型。Chrome的站点隔离根据来源在进程层面区分「站点」。此外,Chrome团队还实现了在进程外执行网站框架,这是Gazelle网络浏览器以及OP和OP2网络浏览器的作者建议的功能。这些改动需要重构Chrome的进程处理代码。为此,320名贡献者在5年内共提交了4000多次代码,共修改或增加了45万行。

Chrome使用的站点隔离功能能够防止多种通用跨網站指令碼}-()攻击。这种攻击允许攻击者破坏同源政策}-,从而获得在其他网站上注入和加载攻击者控制的JavaScript的无限制访问权。Chrome团队发现,2014年至2018年间报告的94起uXSS攻击全部因站点隔离而失效。除此之外,Chrome团队还声称,站点隔离也能有效防止幽灵和熔断漏洞的变体,这些攻击依赖于攻击者代码与受害者数据在同一进程的地址空间内共存。

2021年3月,Firefox开发团队宣布他们也将推出实现站点功能。这一功能花费数月开发,代号为「Project Fission」,且重写了进程处理代码。Firefox的实现方法与Chrome相比,能够避免在某些特定网页上受到uXSS攻击。

缺陷
2019年之前,站点隔离仅在研究性质的浏览器中实现。站点隔离启用后,进程占用的内存空间增加,因此被认为是资源密集型的。这种性能开销在实际使用中也有所体现。Chrome使用站点隔离后,平均会多占用一到两个处理器核心。此外,参与站点隔离项目的工程师观察到,使用站点隔离时内存使用量增加了10%到13%。

Chrome是首个采用站点隔离作为防御uXSS攻击和的主流网页浏览器。为此,开发团队克服了多个性能瓶颈和兼容性问题,并在整个行业范围内推动了的提升。然而,站点隔离针对幽灵漏洞的某些防御措施仍显不足,尤其是在防御计时攻击方面。2021年,阿尤什·阿加瓦尔()等人开发了名为Spook.js的攻击,能够突破Chrome的幽灵漏洞防御,窃取其他来源的网页上的数据。同年,微软的研究人员通过精细操控站点隔离所采用的进程间通信协议,实施了各类计时攻击,最终获取跨源信息。

2023年,波鸿鲁尔大学的研究人员发现,他们能够利用站点隔离所需的进程架构來耗尽系统资源,并执行DNS欺骗等高级攻击。

脚注
来源
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

  • {{Cite book |url=https://www.usenix.org/conference/usenixsecurity22/presentation/kim |title={FuzzOrigin}: Detecting {UXSS} vulnerabilities in Browsers through Origin Fuzzing |last=Kim |first=Sunwoo |last2=Kim |first2=Young Min |last3=Hur |first3=Jaewon |last4=Song |first4=Suhwan |last5=Lee |first5=Gwangmu |last6=Lee |first6=Byoungyoung |date=2022 |isbn=978-1-939133-31-1 |pages=1008–1023 |language=en |archiveurl=https://web.archive.org/web/20240110202146/https://www.usenix.org/conference/usenixsecurity22/presentation/kim |url-status=live |ref=harv |archive-date=2024-01-10}}

*
*
*
*
*
*

评论 (0)

  • 还没有评论,来抢沙发吧。