C和C ++是“不安全的”語言:導致Chrome和微軟產品所有安全性錯誤中70%記憶體安全性問題 | ZDNet

banq發表於2020-05-27

Google工程師本週表示,Chrome程式碼庫中所有嚴重的安全漏洞中,大約70%是記憶體管理和安全漏洞。
該數字與Microsoft共享的統計資訊相同。在2019年2月的安全會議上,微軟工程師表示,在過去的12年中,微軟產品的所有安全更新中約70%解決了記憶體安全漏洞。

兩家公司基本上都在處理相同的問題,即它們的程式碼庫中的兩種主要程式語言C和C ++是“不安全的”語言。它們是數十年前建立的舊程式設計工具,當時安全利用和網路攻擊不是相關的威脅模型,並且與大多數早期軟體開發人員無關。結果,C和C ++都使程式設計師能夠完全控制他們如何管理應用程式的記憶體指標(地址),並且沒有限制或警告來阻止或警告開發人員在犯基本記憶體管理錯誤時。
這些早期的編碼錯誤導致在應用程式中引入記憶體管理漏洞。這包括漏洞,如釋放後使用,緩衝區溢位,競爭條件,雙重釋放,通配指標等。這些記憶體管理漏洞是攻擊者試圖查詢和利用的最搶手的錯誤,因為它們可以授予他們將程式碼植入裝置記憶體中並由受害應用程式(瀏覽器,伺服器,作業系統等)執行的能力。 )。
在年初發布的排名中,管理美國政府漏洞資料庫的組織MITER Corporation 將緩衝區溢位列為最危險的漏洞,另外兩個與記憶體管理相關的問題也排名前十

谷歌研究解決CHROME的記憶體錯誤
記憶體管理錯誤的問題在Google一直是個大問題,以至於Chrome工程師現在必須遵循"The Rule of 2."
根據此規則,每當工程師編寫新的Chrome功能時,其程式碼不得破壞以下兩個以上的條件:

  • 該程式碼處理不可信的輸入
  • 程式碼在沒有沙箱的情況下執行
  • 程式碼使用不安全的程式語言(C / C ++)編寫

儘管軟體公司之前曾嘗試解決C和C ++的記憶體管理問題,但Mozilla一直是透過在Firefox中贊助,推廣和大量採用Rust程式語言而取得突破的人。今天,Rust被認為是最安全的程式語言之一,並且是Mozilla早期的努力,是C和C ++的理想替代品。



 

相關文章