偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

安卓系統(tǒng)支持rust語(yǔ)言,以預(yù)防內(nèi)存安全漏洞

安全 黑客攻防
4月6日,谷歌宣布安卓操作系統(tǒng)開(kāi)源版本將支持Rust編程語(yǔ)言以預(yù)防內(nèi)存安全相關(guān)的漏洞。

4月6日,谷歌宣布安卓操作系統(tǒng)開(kāi)源版本將支持Rust編程語(yǔ)言以預(yù)防內(nèi)存安全相關(guān)的漏洞。內(nèi)存安全漏洞是安卓系統(tǒng)穩(wěn)定性問(wèn)題的主要元兇,大約70%的安卓高危安全漏洞都與內(nèi)存安全相關(guān)。而C和C++中的內(nèi)存安全漏洞是最難解決的問(wèn)題。Java 和Kotlin 語(yǔ)言是安卓應(yīng)用開(kāi)發(fā)最好的選擇,這些語(yǔ)言容易使用、安全、輕便。Android Runtime (ART) 會(huì)以開(kāi)發(fā)者的身份去管理內(nèi)存。安卓操作系統(tǒng)廣泛使用Java 來(lái)保護(hù)安卓平臺(tái)免受內(nèi)存漏洞的影響。但是,對(duì)于底層操作系統(tǒng)的開(kāi)發(fā),Java 和Kotlin 語(yǔ)言并不理想。

操作系統(tǒng)底層需要像C、C++、Rust這樣的編程語(yǔ)言,這些語(yǔ)言的控制性和預(yù)測(cè)性比較好,可以提供對(duì)底層系統(tǒng)資源和硬件的訪問(wèn)控制,而且在提供相同的可預(yù)測(cè)的性能特征的基礎(chǔ)上需要的資源很少。

對(duì)C和C++,開(kāi)發(fā)者要負(fù)責(zé)管理內(nèi)存的全生命周期,因此很容易出現(xiàn)錯(cuò)誤,尤其是在復(fù)雜和多線程的代碼庫(kù)中。Rust語(yǔ)言通過(guò)使用編譯時(shí)檢查和運(yùn)行時(shí)檢查來(lái)確保內(nèi)存的安全。編譯時(shí)檢查來(lái)進(jìn)行對(duì)象生命周期和所有權(quán)的檢查,通過(guò)運(yùn)行時(shí)檢查來(lái)確保內(nèi)存訪問(wèn)是有效的。而且性能不差于C和C++。

C和C++語(yǔ)言并不提供安全保證,需要進(jìn)行隔離。所有的安卓進(jìn)程都是沙箱的,并遵循Rule of 2規(guī)則,即給定3個(gè)選項(xiàng),開(kāi)發(fā)者智能從中選擇2個(gè)。

對(duì)安卓來(lái)說(shuō),這意味著如果代碼是用C或C++寫(xiě)的,在分析不可靠的輸入時(shí)就會(huì)有非常嚴(yán)格的限制和沒(méi)有特權(quán)的沙箱。由于遵循Rule of 2規(guī)則會(huì)帶來(lái)很多的限制,因此會(huì)降低安全漏洞的嚴(yán)重性和危險(xiǎn)性。但是沙箱并不是輕量級(jí)的,由于IPC和其他的內(nèi)存使用帶來(lái)額外的消耗和延遲。沙箱并不能完全消除代碼中的漏洞,攻擊者可以鏈接其他漏洞來(lái)發(fā)起攻擊。

Rust這類內(nèi)存安全的語(yǔ)言可以幫助解決這些問(wèn)題:

  •  可以降低代碼中漏洞的密度,提高當(dāng)前沙箱的有效性;
  •  通過(guò)引入安全和輕量級(jí)的新特征來(lái)減少對(duì)沙箱的需求。

Rust融合了許多其他語(yǔ)言的特征,可以改善代碼的正確性:

  • 內(nèi)存安全性:通過(guò)編譯時(shí)檢查和運(yùn)行時(shí)檢查來(lái)確保內(nèi)存安全;
  •  數(shù)據(jù)并發(fā):防止數(shù)據(jù)競(jìng)爭(zhēng)條件,用戶可以用Rust編寫(xiě)高效的、線程安全的代碼;
  •  更具表現(xiàn)力的系統(tǒng):幫助預(yù)防邏輯編程漏洞,如新型封裝、枚舉變種等;
  •  引用和變量默認(rèn)是不可變的:幫助開(kāi)發(fā)人員遵循最小特權(quán)安全原則。雖然C++有const,但是往往很少使用,而且不一致。相比之下,Rust 編譯器· 可以通過(guò)為從未變異的可變值提供警告,避免誤變注釋。
  •  標(biāo)準(zhǔn)庫(kù)中更好的安全處理:在結(jié)果中封裝可能失敗的調(diào)用,引發(fā)編譯器要求用戶檢查沒(méi)有返回所需值的函數(shù)的錯(cuò)誤。這可以預(yù)防Rage Against the Cage這樣的漏洞。
  •  初始化:要求所有的變量在使用前都進(jìn)行初始化。未初始化的內(nèi)存漏洞是安卓系統(tǒng)中3~5%的安全漏洞的根本原因。Rust要求所有的變量在使用前初始化為其類型的合法成員,避免初始化為不安全值的情況。
  •  更安全的整數(shù)處理:Rust 默認(rèn)啟用了溢出處理,避免溢出相關(guān)的漏洞產(chǎn)生。此外,所有的整數(shù)類型轉(zhuǎn)化都是顯式轉(zhuǎn)化,開(kāi)發(fā)者不能在分配變量或進(jìn)行其他類型的算數(shù)運(yùn)算時(shí)的函數(shù)調(diào)用中進(jìn)行轉(zhuǎn)化。

本文翻譯自:https://security.googleblog.com/2021/04/rust-in-android-platform.html如若轉(zhuǎn)載,請(qǐng)注明原文地址。

 

責(zé)任編輯:姜華 來(lái)源: 嘶吼網(wǎng)
相關(guān)推薦

2014-06-03 09:23:41

2024-09-26 13:06:39

2014-06-03 11:36:18

2022-12-05 09:55:01

漏洞AndroidRust

2020-12-08 12:18:09

安卓應(yīng)用漏洞

2019-01-03 11:14:50

谷歌Android系統(tǒng)

2015-01-29 11:15:35

2014-01-03 10:00:55

2021-02-04 09:21:37

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

2010-07-26 15:37:12

telnet安全漏洞

2024-01-23 18:50:28

UbuntuRust語(yǔ)言

2024-11-05 14:48:57

2024-10-10 12:34:44

2024-02-27 16:39:08

2017-06-14 08:15:58

2020-10-09 09:52:00

漏洞分析

2021-05-12 10:46:23

漏洞BINDDNS服務(wù)器

2011-12-26 11:22:48

2009-03-07 09:59:16

2019-08-26 10:19:39

點(diǎn)贊
收藏

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