成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

谷歌正尋求提高 C++ 內(nèi)存安全

安全
谷歌 Chrome 安全團隊稱其一直在致力于改善 Chrome 瀏覽器的內(nèi)存安全;近期,該團隊正在研究使用 heap scanning 技術(shù)來提高 C++ 的內(nèi)存安全。

谷歌 Chrome 安全團隊稱其一直在致力于改善 Chrome 瀏覽器的內(nèi)存安全;近期,該團隊正在研究使用 heap scanning 技術(shù)來提高 C++ 的內(nèi)存安全。

雖然從內(nèi)存安全方面出發(fā),Rust 當下可能更受大眾喜愛。但 Chrome 安全團隊認為,盡管人們對比 C++ 具有更強內(nèi)存安全保證的其他語言有興趣,但在可預見的未來,像 Chromium 這樣的大型代碼庫將使用 C++。鑒于此,Chrome 工程師已經(jīng)找到了使 C++ 更安全的方法,以減少緩沖區(qū)溢出和 use-after free (UAF) 等與內(nèi)存相關(guān)的安全漏洞。數(shù)據(jù)表明,這些漏洞占所有軟件安全漏洞的 70%。

auto* foo = new Foo();
delete foo;
// The memory location pointed to by foo is not representing
// a Foo object anymore, as the object has been deleted (freed).
foo->Process();

如上示例,當應用程序使用的內(nèi)存被返回到底層系統(tǒng),但指針指向一個過期的對象時,就會出現(xiàn)一個被稱為懸空指針(dangling pointers)的情況,通過它進行的任何訪問都會導致 UAF 訪問。在最好的情況下,此類錯誤會導致 well-defined 的崩潰;在最壞的情況下,它們會造成可以被惡意行為者利用的破壞。 

在較大的代碼庫中,UAF 通常很難被發(fā)現(xiàn),因為對象的所有權(quán)是在不同組件之間轉(zhuǎn)移的。這個問題非常普遍,以至于到目前為止,工業(yè)界和學術(shù)界都在頻繁地針對其提出緩解策略。而 Chrome 中 C++ 的使用也沒有什么不同,大多數(shù)高嚴重性安全漏洞都是 UAF 問題。近期發(fā)布的 Chrome 102 中,就修復了一個關(guān)鍵的 UAF 問題,且八個高危漏洞中有?六個是 UAF。

為了解決這一問題,Chrome 方面已經(jīng)使用了各種技術(shù)手段;包括 C++ 智能指針(如 MiraclePtr?)、編譯器中的靜態(tài)分析、動態(tài)工具(如 C++ sanitizers )、代碼模糊器,以及一個名為  Oilpan 的 C++ 垃圾回收器。Oilpan、MiraclePtr 和基于智能指針的解決方案需要大量采用應用程序代碼。

此外,谷歌還探索了另一種方法:內(nèi)存隔離(memory quarantine)。基本思路是將 explicitly freed memory 放入隔離區(qū),并且僅在達到特定安全條件時才使其可用。Chrome 安全團隊在博文中總結(jié)了在 Chrome 中實驗隔離和 heap scanning 的歷程。

工作原理在于,用隔離和 heap scanning 保證 temporal safety 的主要思想是避免重用內(nèi)存,直到證明沒有更多的(懸空的)指針指向它。為了避免改變 C++ 用戶代碼或其語義,提供 new 和 delete 的內(nèi)存分配器被攔截。

在調(diào)用刪除時,內(nèi)存實際上被放入隔離區(qū),無法再用于應用程序的后續(xù)新調(diào)用?!霸谀承r候觸發(fā)了 heap scan,它掃描整個堆,就像垃圾回收器一樣,以查找對隔離內(nèi)存塊的引用。那些沒有從常規(guī)應用內(nèi)存中獲得引用的塊被轉(zhuǎn)移回分配器,在那里它們可以被重新用于后續(xù)的分配。”

根據(jù)介紹,谷歌的 heap scanning 由一套被命名為 StarScan(簡稱為 *Scan)的算法組成。他們將 *Scan 應用于渲染器進程的非托管部分,使用 Speedometer2 評估性能影響,并嘗試了不同版本的 *Scan。

測試結(jié)果表明,*Scan 的一個基礎版本造成了 8% 的內(nèi)存回歸?!八羞@些開銷從何而來?不出所料,heap scanning 極其受 memory bound 影響,因為掃描線程必須遍歷和檢查整個用戶內(nèi)存的引用”。在進行了多方面優(yōu)化之后,Speedometer2 回歸從 8% 降低到了 2%。此外,有關(guān)內(nèi)存消耗的測量結(jié)果則表明,渲染進程中的掃描使內(nèi)存消耗減少約 12%。

MTE(內(nèi)存標簽擴展,Memory Tagging Extension)是 ARM v8.5A 架構(gòu)上的一個新擴展,有助于檢測軟件內(nèi)存使用中的錯誤;這些錯誤可以是 spatial errors(如 out-of-bounds accesses),也可以是 temporal errors(use-after-free)。谷歌方面獲得了一些支持 MTE 的 actual hardware,并在渲染器過程中重新進行了實驗。結(jié)果表明,雖然 MTE 和 memory zeroing 會帶來一些成本,但 Speedometer2 中的內(nèi)存回歸約為 2%。實驗還表明,在 MTE 之上添加 *Scan 沒有可衡量的成本。 

Chrome 安全團隊最后總結(jié)稱,C++ 可以編寫出高性能應用程序,但需要付出安全性方面的代價。Hardware memory tagging 可以修復 C++ 的一些安全缺陷,同時保持高性能。“我們期待在未來看到更廣泛地采用 Hardware memory tagging,并建議在 Hardware memory tagging 之上使用 *Scan 來修復 C++ 的 temporary memory safety。使用的 MTE 硬件和 *Scan 的實現(xiàn)都是 prototypes,我們預計仍有性能優(yōu)化的空間。”

本文轉(zhuǎn)自OSCHINA

本文標題:谷歌正尋求提高 C++ 內(nèi)存安全

本文地址:https://www.oschina.net/news/198093/google-c-memory-safety

責任編輯:未麗燕 來源: OSCHINA
相關(guān)推薦

2024-02-06 13:43:16

C++內(nèi)存安全

2020-03-11 13:44:20

編程語言PythonJava

2010-01-13 18:52:20

Visual C++

2010-01-27 15:46:15

學習C++效率

2021-04-12 10:38:51

CC++谷歌

2021-02-04 09:21:37

內(nèi)存安全漏洞網(wǎng)絡安全

2021-02-20 07:20:10

谷歌Chrome 瀏覽器

2009-06-10 09:33:09

谷歌收購

2011-07-15 01:10:13

C++內(nèi)存分配

2011-04-11 09:47:50

C++內(nèi)存管理

2024-03-01 12:03:00

AI模型

2020-05-26 13:25:00

語言編譯代碼

2011-04-13 16:50:54

CC++內(nèi)存

2022-01-05 10:40:06

5G 5G網(wǎng)絡5G商用

2024-06-19 10:35:32

C++編程語言

2011-06-16 09:28:02

C++內(nèi)存泄漏

2024-08-19 00:10:00

C++內(nèi)存

2013-10-11 10:59:42

2011-06-21 11:16:24

cc++

2022-04-08 13:14:44

Android應用安全谷歌
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 嫩草影院网址 | av网站在线免费观看 | 国产二区在线播放 | 日日摸日日添日日躁av | 欧美日韩精品在线一区 | 午夜激情在线 | 成人综合视频在线观看 | 成人精品免费 | 国产综合精品一区二区三区 | 久久久久se | 99久久婷婷国产综合精品电影 | h视频在线免费观看 | 91动漫在线观看 | 久久久99精品免费观看 | 精品欧美乱码久久久久久1区2区 | 国产精品视频免费观看 | 日韩中文一区二区三区 | 国内精品久久影院 | 国产精品久久网 | 在线免费观看成人 | 亚洲一区二区三区免费 | 草久久久| 亚洲iv一区二区三区 | 久久三区 | 国产7777| 欧美激情综合 | 黄色一级在线播放 | 国产二区三区 | 欧美一级欧美三级在线观看 | 久久久久国产精品午夜一区 | 日韩精品一区二区三区中文在线 | 国产91在线观看 | 国产美女黄色片 | 久久伊人影院 | 国产一区在线免费 | wwwww在线观看 | 国产精品一区二区免费 | 亚洲欧美激情视频 | 精品综合视频 | 成人免费区一区二区三区 | 亚洲日日夜夜 |