站點隔離 (英語:site isolation )是存在於某些網路瀏覽器 中的安全功能,能夠讓跨源 網站彼此隔離。這一功能最初由查爾斯·賴斯(Charles Reis )等人提出,隨後微軟 在其Gazelle研究性瀏覽器 中實現了該功能的迭代版本。然而,由於實現過程中的問題以及效能 方面的擔憂,該功能最初未被廣泛採用。
圖示展現了站點隔離如何將不同網站分為不同行程
2017年,幽靈漏洞 和熔毁漏洞 被公開披露,次年谷歌 開始在Chrome 中開發站點隔離功能,並於2019年發布。2021年,Firefox也推出了站點隔離功能,開發過程中使用了代號「Project Fission 」。
該功能具有顯著的安全優勢,但研究人員發現了與之相關的一些安全問題,包括對瞬態執行攻擊 的保護效果不佳,以及由該功能引發的新型計時攻擊 和資源耗盡攻擊。
2017年前,主流網頁瀏覽器 的主要安全架構 採用每瀏覽實例 一行程 (process-per-browsing-instance )模型。瀏覽器有多個沙箱 行程,包括瀏覽器行程、GPU 行程、網路行程、彩現 行程。在瀏覽網頁 時,若需要特權提升 ,彩現行程會與其他特權服務互動。
這種舊模型能夠防止惡意JavaScript 訪問作業系統 ,但在有效隔離各個網站 方面仍顯不足。然而新模型在效能 和主記憶體 方面存在明顯問題,因此未被廣泛使用。
2017年披露的幽靈漏洞 和熔毁漏洞 揭示了舊模型的嚴重缺陷。在漏洞披露前,任意訪問主記憶體難度很大,需要攻陷彩現器;而通過幽靈漏洞,僅需利用JavaScript特性即可讀取彩現行程中幾乎所有的主記憶體,從而取得先前彩現的跨源 頁面中的敏感資訊。為了防止類似的問題,需要開發新的安全架構,將不同網頁的彩現完全隔離到相互獨立的行程中。
2009年,查爾斯·賴斯(Charles Reis )等人首次提出了每網站一行程(process-per-site )模型,根據頁面的來源隔離網頁。同年,Gazelle研究性瀏覽器 對此做出了改進,不僅在網站之間進行隔離,還在同一頁面中為每個來自不同域的內容元素建立獨立的行程。與此同時,OP(OP2瀏覽器的前身)、IBOS、Tahoma、SubOS瀏覽器也在進行相關工作,提出了不同方式以解決站點之間的行程分離問題。
2019年,Google Chrome 專案的賴斯等人在USENIX Security 上發表了一篇論文,詳細介紹了他們對瀏覽器安全模型所做的更改,以應對先前出現的幽靈漏洞。該論文稱,這些更改參考了他和其他人在2009年提出的模型。Chrome的站點隔離根據來源在行程層面區分「站點」。此外,Chrome團隊還實現了在行程外執行網站框架,這是Gazelle網路瀏覽器以及OP和OP2網路瀏覽器的作者建議的功能。這些改動需要重構 Chrome的行程處理代碼。為此,320名貢獻者在5年內共提交 了4000多次代碼。
Chrome使用的站點隔離功能能夠防止多種通用跨網站指令碼 (uXSS )攻擊。這種攻擊允許攻擊者破壞同源政策 ,從而獲得在其他網站上注入和載入攻擊者控制的JavaScript的無限制存取權。Chrome團隊發現,2014年至2018年間報告的94起uXSS攻擊全部因站點隔離而失效。除此之外,Chrome團隊還聲稱,站點隔離也能有效防止幽靈和熔毁漏洞的計時攻擊 變體,這些攻擊依賴於攻擊者代碼與受害者資料在同一行程的位址空間 內共存。
2021年3月,Firefox 開發團隊宣布他們也將推出實現站點功能。這一功能花費數月開發,代號為「Project Fission」,且重寫了行程處理代碼。Firefox的實現方法與Chrome相比,能夠避免在某些特定網頁上受到uXSS攻擊。[ 26]
2019年之前,站點隔離僅在研究性質的瀏覽器中實現。站點隔離啟用後,行程占用的主記憶體空間增加,因此被認為是資源密集型的。這種效能開銷在實際使用中也有所體現。Chrome使用站點隔離後,平均會多占用一到兩個處理器核心 。此外,參與站點隔離專案的工程師觀察到,使用站點隔離時主記憶體使用量增加了10%到13%。
Chrome是首個採用站點隔離作為防禦uXSS攻擊和瞬態執行攻擊 的主流網頁瀏覽器。為此,開發團隊克服了多個效能瓶頸和相容性問題,並在整個行業範圍內推動了瀏覽器安全性 的提升。然而,站點隔離針對幽靈漏洞的某些防禦措施仍顯不足,尤其是在防禦計時攻擊方面。2021年,阿尤什·阿加瓦爾(Ayush Agarwal )等人開發了名為Spook.js的攻擊,能夠突破Chrome的幽靈漏洞防禦,竊取其他來源的網頁上的資料。同年,微軟的研究人員通過精細操控站點隔離所採用的行程間通訊協定 ,實施了各類計時攻擊,最終取得跨源資訊。
2023年,波鴻魯爾大學 的研究人員發現,他們能夠利用站點隔離所需的行程架構來耗盡系統資源,並執行DNS欺騙 等進階攻擊。
Reis, Charles; Gribble, Steven D. Isolating web programs in modern browser architectures . Proceedings of the 4th ACM European conference on Computer systems. ACM. April 2009: 219–232 [2023-12-24 ] . ISBN 978-1-60558-482-9 . S2CID 8028056 . doi:10.1145/1519065.1519090 . (原始內容存檔 於2023-12-24) (英語) .
Rogowski, Roman; Morton, Micah; Li, Forrest; Monrose, Fabian; Snow, Kevin Z.; Polychronakis, Michalis. Revisiting Browser Security in the Modern Era: New Data-Only Attacks and Defenses . 2017 IEEE European Symposium on Security and Privacy (EuroS&P). 2017: 366–381 [2023-12-24 ] . ISBN 978-1-5090-5762-7 . S2CID 7325479 . doi:10.1109/EuroSP.2017.39 . (原始內容存檔 於2020-02-10) (英語) .
Röttger, Stephen; Janc, Artur. A Spectre proof-of-concept for a Spectre-proof web . Google Online Security Blog. [2023-12-24 ] . (原始內容存檔 於2023-12-24) (英語) .
Dong, Xinshu; Hu, Hong; Saxena, Prateek; Liang, Zhenkai. Crampton, Jason; Jajodia, Sushil; Mayes, Keith , 編. A Quantitative Evaluation of Privilege Separation in Web Browser Designs . Lecture Notes in Computer Science. Berlin, Heidelberg: Springer. 2013: 75–93 [2023-12-29 ] . ISBN 978-3-642-40203-6 . doi:10.1007/978-3-642-40203-6_5 . (原始內容存檔 於2023-12-29) (英語) .
Warren, Tom. Chrome now uses more RAM because of Spectre security fixes . The Verge. 2018-07-12 [2023-12-30 ] . (原始內容存檔 於2022-10-25) (英語) .
Reis, Charles; Moshchuk, Alexander; Oskov, Nasko. Site Isolation: Process Separation for Web Sites within the Browser . 2019: 1661–1678 [2023-12-24 ] . ISBN 978-1-939133-06-9 . (原始內容存檔 於2023-11-28) (英語) .
Zhu, Yongye; Wei, Shijia; Tiwari, Mohit. Revisiting Browser Performance Benchmarking From an Architectural Perspective . IEEE Computer Architecture Letters. 2022, 21 (2): 113–116 [2023-12-24 ] . S2CID 252641754 . doi:10.1109/LCA.2022.3210483 . (原始內容存檔 於2023-07-30) (英語) .
Paul, Ryan. Inside Gazelle, Microsoft Research's "browser OS" . Ars Technica. 2009-07-10 [2024-03-07 ] . (原始內容存檔 於2024-06-05) (美國英語) .
Jin, Zihao; Kong, Ziqiao; Chen, Shuo; Duan, Haixin. Timing-Based Browsing Privacy Vulnerabilities Via Site Isolation . 2022 IEEE Symposium on Security and Privacy (SP). 2022: 1525–1539 [2023-12-24 ] . ISBN 978-1-6654-1316-9 . S2CID 247570554 . doi:10.1109/SP46214.2022.9833710 . (原始內容存檔 於2022-07-28) (英語) .
Layzell, Nika. NIKA:\fission-news-1\> . mystor.github.io. 2019-02-04 [2023-12-30 ] . (原始內容存檔 於2023-12-29) (英語) .
Agarwal, Ayush; o'Connell, Sioli; Kim, Jason; Yehezkel, Shaked; Genkin, Daniel; Ronen, Eyal; Yarom, Yuval. Spook.js: Attacking Chrome Strict Site Isolation via Speculative Execution . 2022 IEEE Symposium on Security and Privacy (SP). 2022: 699–715 [2023-12-24 ] . ISBN 978-1-6654-1316-9 . S2CID 251140823 . doi:10.1109/SP46214.2022.9833711 . (原始內容存檔 於2022-10-27) (英語) .
Rokicki, Thomas; Maurice, Clémentine; Laperdrix, Pierre. SoK: In Search of Lost Time: A Review of JavaScript Timers in Browsers . 2021 IEEE European Symposium on Security and Privacy (EuroS&P) (PDF) . 2021: 472–486 [2023-12-24 ] . ISBN 978-1-6654-1491-3 . S2CID 263897590 . doi:10.1109/EuroSP51992.2021.00039 . (原始內容存檔 (PDF) 於2022-12-17) (英語) .
Wang, Helen; Grier, Chris; Moshchuk, Alexander; King, Samuel T.; Choudhury, Piali; Venter, Herman; King, Sam. The Multi-Principal OS Construction of the Gazelle Web Browser . SSYM'09: Proceedings of the 18th Conference on USENIX Security Symposium. 2009-02-19 [2023-12-29 ] . (原始內容存檔 於2023-09-04) (美國英語) .
Jia, Yaoqi; Chua, Zheng Leong; Hu, Hong; Chen, Shuo; Saxena, Prateek; Liang, Zhenkai. " The Web/Local" Boundary is Fuzzy: A Security Study of Chrome's Process-based Sandboxing . Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. CCS '16. New York, NY, USA: Association for Computing Machinery. 2016-10-24: 791–804. ISBN 978-1-4503-4139-4 . S2CID 7573477 . doi:10.1145/2976749.2978414 (英語) .
Bishop, Douglas L. Improvements of User's Security and Privacy in a Web Browser (學位論文). University of Dayton. 2021 [2023-12-24 ] . (原始內容存檔 於2023-12-24) (英語) .
Cimpanu, Catalin. Firefox to get a 'site isolation' feature, similar to Chrome . ZDNET. 2019-02-06 [2023-12-29 ] . (原始內容存檔 於2023-12-29) (英語) .
Narayan, Shravan; Disselkoen, Craig; Garfinkel, Tal; Froyd, Nathan; Rahm, Eric; Lerner, Sorin; Shacham, Hovav; Stefan, Deian. Retrofitting Fine Grain Isolation in the Firefox Renderer . 2020: 699–716 [2023-12-24 ] . ISBN 978-1-939133-17-5 . (原始內容存檔 於2023-12-24) (英語) .
Gierlings, Matthias; Brinkmann, Marcus; Schwenk, Jörg. Isolated and Exhausted: Attacking Operating Systems via Site Isolation in the Browser . 2023: 7037–7054 [2023-12-24 ] . ISBN 978-1-939133-37-3 . (原始內容存檔 於2023-12-24) (英語) .
Kokatsu, Jun. Deep Dive into Site Isolation (Part 1) . Microsoft Browser Vulnerability Research. 2020-11-10 [2023-12-24 ] . (原始內容存檔 於2023-12-24) (英語) .
Kim, Young Min; Lee, Byoungyoung. Extending a Hand to Attackers: Browser Privilege Escalation Attacks via Extensions . 2023: 7055–7071 [2023-12-24 ] . ISBN 978-1-939133-37-3 . (原始內容存檔 於2023-12-24) (英語) .
Kocher, Paul; Horn, Jann; Fogh, Anders; Genkin, Daniel; Gruss, Daniel; Haas, Werner; Hamburg, Mike; Lipp, Moritz; Mangard, Stefan; Prescher, Thomas; Schwarz, Michael; Yarom, Yuval. Spectre attacks: exploiting speculative execution . Communications of the ACM. 2020-06-18, 63 (7): 93–101. ISSN 0001-0782 . S2CID 373888 . doi:10.1145/3399742 (英語) .
Kim, Sunwoo; Kim, Young Min; Hur, Jaewon; Song, Suhwan; Lee, Gwangmu; Lee, Byoungyoung. {FuzzOrigin}: Detecting {UXSS} vulnerabilities in Browsers through Origin Fuzzing . 2022: 1008–1023. ISBN 978-1-939133-31-1 . (原始內容存檔 於2024-01-10) (英語) .