亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

軟件安全的一場“極左”革命:安全編程語言

今天,無論是大型企業的IT系統還是個人的智能手機,都面臨無休止的補丁更新,因為這些系統中的軟件每天都會暴露不同的缺陷和安全漏洞。

人們似乎已經被迫接受了這樣兩個簡單的“宿命”:

  • 是人就會犯錯,所以代碼漏洞不可避免;
  • 軟件開發的安全性、效率和成本三者不可兼得。

但是,一種名為Rust的安全編程語言正在快速崛起,逆轉軟件安全的宿命。

在程序員中最流行的計算機編程語言榜單上,Python、Java、C++、C、JavaScript和C#常年霸榜,但是Rust已經成為增長最快的編程語言:

在軟件安全的“左移”運動中,編程語言位于軟件開發生命周期的最左側,我們不妨稱之為軟件安全的“極左革命”。用Rust開發代碼不僅能避免很多常見的安全漏洞類型,而且最終會對全球網絡安全基線產生重大影響。

“自帶安全屬性”成為引爆點

編程語言就像時尚秀場,你方唱罷我登場,很多紅極一時的語言最終只落得曇花一現。但12歲的Rust卻表現出越來越強大的生命力,已經從Mozilla研究人員的副項目成長為一個強大的生態系統。

Rust的流行并非偶然,其承上啟下,兼具現代性和工程友好的特性,以及性能與安全兼得的優點,都讓Rust有了不可估量的前景。Rust的“自帶安全屬性”正獲得越來越多的開發者甚至硅谷巨頭的青睞,如今已經到了一個“引爆點”,對于軟件工程和軟件安全來說都意味著一場革命。

自2019年以來,微軟、谷歌和亞馬遜網絡服務一直在使用Rust,這三家公司于2020年與Mozilla和華為成立了非營利性Rust基金會,以支持和發展該語言。經過數年的不懈努力,Linux內核上個月取得重大突破:實現了對Rust的支持。

“Rust正在快速流行,”Android(安卓系統)安全和隱私工程副總裁Dave Kleidermacher透露:“我們一直在Android和整個Google產品線上投資Rust,很多工程師都在考慮如何上車。隨著Rust首次登陸Linux并成為官方認可語言,不僅僅是Android,現在任何基于Linux的系統都可以開始集成Rust組件。”

Rust最大的亮點之一是“自帶安全屬性”,屬于一種“內存安全”語言,其原生安全設計能夠防止程序意外地從計算機內存中提取數據。當程序員使用沒有此安全屬性的主流語言(包括C和C++)時,必須仔細檢查程序將請求哪些數據,以及如何請求的參數。即使是經驗最豐富的開發人員也會偶爾疏忽犯錯。而如果使用Rust開發軟件,即便是菜鳥程序員也不用擔心會在代碼中引入任何內存安全錯誤。

程序調用的內存中包含其所有功能和庫所使用的共享資源。例如,當你打開一個非內存安全語言開發的日歷程序,然后查詢2022年11月2日的日程信息,程序會從分配給存儲該日期數據的計算機內存區域中獲取所有信息,這一步沒什么問題,但是當你請求2022年11月42日的數據時,如果程序設計沒有正確約束,不但不會報錯,反而會盡職盡責地從內存中存儲其他數據的地方返回一些意想不到的信息,例如你為日歷設置的密碼,或者在日歷高級功能中存檔的信用卡號。同樣,如果你添加一個11月42日的生日派對日程,程序不會告訴你無法完成任務,而是可能會覆蓋內存中不相關的數據。這類錯誤被稱為“越界”讀寫錯誤,顯然,這種錯誤可被攻擊者被利用非法訪問數據,甚至擴大系統控制權限。

另一種常見的內存安全錯誤類型是“釋放后使用”,即當程序釋放部分內存后(例如你刪除了2022年10月的所有日歷條目)但錯誤地保留訪問權限(指針并未刪除)。當你稍后請求10月17日的數據時,該程序可能仍然能夠抓取到(10月份的)數據。軟件代碼中此類內存安全漏洞可被黑客利用制作惡意日歷邀請,其中包含精心挑選的日期或一組事件的詳細信息,旨在操縱內存以授予攻擊者遠程訪問權。

安全研究和審計反復證明,大多數軟件漏洞屬于內存安全類漏洞。因此,雖然在Rust中編程時開發者仍然可能會犯錯誤并產生安全漏洞,但有很大機會杜絕內存安全漏洞。

“內存安全問題占所有報告漏洞的很大一部分,尤其是操作系統,手機和基礎設施等關鍵應用程序,”軟件供應鏈安全公司Chainguard的首席執行官Dan Lorenc指出:“幾十年來,人們一直在用內存不安全的語言編寫代碼,我們試圖改進和開發更好的工具,并教人們如何避免這些錯誤,但僅僅靠鞭策來加強安全性是不夠的。我們需要一種新技術,從根本上消滅漏洞,這就是Rust最終帶來的(希望)。”

Rust面臨的挑戰與機遇

Rust并不缺乏懷疑者和批評者。過去兩年在Linux中實現Rust的努力一直存在爭議,部分原因是添加對任何其他語言的支持本身會增加系統的復雜性,還有一些是關于如何使Rust在Linux中正常工作的爭論。但支持者強調Rust滿足了幾個重要條件:不會導致性能損失,與其他語言編寫的軟件具有良好的互操作性,而且它滿足了迫切的需求。

“與其說這是正確的選擇,不如說我們別無選擇,”資深開源貢獻者和研究員Lorenc說道:“除非什么都不做,否則Rust就是唯一選擇。未來十年繼續使用內存不安全的代碼將給科技行業,國家安全和數字經濟的每個角落都留下重大隱患。”

然而,過渡到Rust的最大挑戰之一恰恰是開發人員已經花費了幾十年的時間,用內存不安全語言開發的重要代碼。用Rust編寫的新軟件短時間還無法撼動海量的現存軟件代碼。例如,Rust在Linux內核的實現是從外設——基于Rust的驅動程序開始的,這些驅動程序負責在操作系統和打印機等硬件之間進行協調。

“當你做操作系統時,速度和性能總是頭等大事,過去,當你用C++或C而不是用Java或其他內存安全語言運行的部分,是出于性能方面的考慮,”谷歌的Kleidermacher說:“但Rust能提供相同的性能,同時又獲得內存安全性,這真的很酷。但這需要一個過程。你不能在一夜之間重寫5000萬行代碼,所以我們正在仔細挑選安全關鍵組件,隨著時間的推移,我們會改造其他東西。”

Kleidermacher指出:在Android中,已經有許多加密密鑰管理功能都是用Rust編寫的,包括HTTPS上的私有互聯網通信功能DNS,超寬帶芯片堆棧的新版本,以及Google定制Tensor G2芯片中使用的新Android虛擬化框架。Android團隊越來越多地將藍牙和Wi-Fi等連接堆棧遷移到Rust,因為它們基于復雜的行業標準,并且往往包含大量漏洞。簡而言之,Google采取一種漸進式安全策略,首先將最重要和暴露最多的軟件組件轉換到Rust,然后“內卷”到其他代碼,逐步獲得增量安全收益。

“是的,這需要大量工作,但科技行業的價值數以萬億美元計,擁有數不清的優秀程序員,有足夠的資源推動此事。”互聯網安全研究小組執行董事Josh Aas說道。該組織負責內存安全倡議Prossimo以及免費證書頒發機構Let”s Encrypt。

隨著Rust進入主流應用,很多困擾業界多年的內存安全問題都有望得到解決。例如上周讓全球安全人士焦慮的OpenSSL漏洞,如果OpenSSL是用內存安全語言編寫的,那么其中至少一個高危漏洞就可避免。與2014年臭名昭著的OpenSSL漏洞Heartbleed(心臟滴血)不同,上周修復的漏洞潛伏了兩年之久,導致網站受到數據攔截攻擊。雖然OpenSSL一直在努力減少內存安全漏洞,但在幾個月前,這個新漏洞還是被引入了OpenSSL3.0.x新版本中。

參考鏈接:

https://www.wired.com/story/rust-secure-programming-language-memory-safe/

來源:GoUpSec

上一篇:關注!2022年度賽可達優秀產品獎評選正式啟動

下一篇:Fortinet 2022 Q3財報發布!穩步前行,增速遠超行業!