• <pre id="1csle"><strong id="1csle"><xmp id="1csle"></xmp></strong></pre>
  • <td id="1csle"><strike id="1csle"></strike></td>
  • <acronym id="1csle"><label id="1csle"></label></acronym>
  • <td id="1csle"></td>

    美國政府呼吁拋棄 C 和 C++

    2024-02-29 11:56:24 EETOP

    很多觀點認為C 或 C++永遠不可被其它語言取代。但是美國政府卻呼吁放棄繼續使用這兩種語言。

    在一份新報告中,美國白宮國家網絡主任辦公室 (ONCD) 呼吁開發人員使用“內存安全編程語言”。該建議是美國總統拜登網絡安全戰略的一部分,是“確保網絡空間基石安全”的舉措。

    image.png

    內存安全是指防止處理內存訪問的錯誤和漏洞。緩沖區溢出和懸空指針就是這樣的例子。Java 由于其運行時錯誤檢測檢查而被認為是內存安全的語言。然而,C 和 C++ 都允許使用直接內存地址進行任意指針運算,并且不進行邊界檢查。

    2019 年,微軟安全工程師報告稱,約 70% 的安全漏洞是由內存安全問題引起的。谷歌在 2020 年也報告了同樣的數字,這次是針對 Chromium 瀏覽器中發現的漏洞。

    報告中寫道:"專家們發現,有幾種編程語言既缺乏與內存安全相關的特征,又在關鍵系統中大量使用,如 C 和 C++,按照網絡安全和基礎設施安全局(CISA)開放源代碼軟件安全路線圖的建議,從一開始就選擇使用內存安全的編程語言,就是以安全設計方式開發軟件的一個例子。"

    這份長達 19 頁的報告的目標是確保網絡安全的責任不僅僅落在個人和小企業手中。相反,責任在于更大的組織、科技公司,最終是政府。

    該報告詳細介紹了它認為“不安全”的編程語言,即C和c++。我們不是在這里討論編程語言的利弊,但有趣的是,報告并沒有建議一種特定的語言來代替它們。我們被告知有“幾十種內存安全的編程語言可以——而且應該——被使用?!?/span>

    ONCD 要求公司和工程師采用軟件開發的最佳實踐并采用內存安全的硬件,以減少惡意行為者可以攻擊的攻擊面。該報告本身沒有詳細說明什么是內存安全編程語言。然而,2022 年 11 月,美國國家安全局 (NSA) 發布了一份網絡安全信息表,詳細介紹了它認為內存安全的編程語言。

    NSA 建議的內存安全編程語言:

    • Rust

    • Go

    • C#

    • Java

    • Swift

    • JavaScript

    • Ruby

    建議的編程語言有多受歡迎?檢查編程語言流行度指標TIOBE 指數,我們發現 Python 排名第一。在 NSA 的首選選項中,C# 排名第五,Java 排名第四,JavaScript 排名第六,Go 排名第八。排在最后的是 Swift(第 16 位)、Rust(第 18 位)和 Ruby(第 20 位)。因此,NSA 選擇的語言位于前 20 名,但七種語言中只有四種受到開發人員“歡迎”。

    該報告還呼吁更好地衡量軟件安全性。ONCD 相信,更好的衡量標準使技術提供商能夠在漏洞成為問題之前更好地計劃、預測和緩解漏洞。

    在第二部分(第 8 頁),報告回顧了阿波羅 13 號任務,NASA 將這次任務歸類為 "成功的失敗"。這次任務發生了災難性的故障,三名宇航員進行了臨時修復,緩解了一系列問題,最終安全返回家園。對內存安全代碼的需求也對太空計劃產生了影響,報告詳細指出,應使用內存安全語言,一種盡可能接近內核的語言,以免將來發生事故。

    這份報告是美國政府采取的一系列措施中的最新一份。2023 年 3 月,拜登總統簽署了一項網絡安全行政命令,啟動了保護軟件和硬件的流程,同時也在科技行業建立了關系。

    隨著世界上越來越多的地方變得數字化,對更好的編碼的需求變得更加重要。錯誤的代碼會被惡意利用,造成漏洞。報告重點介紹了 2021 年 12 月的 Log4j 漏洞,在該漏洞中,一個名為 Log4Shell 的零日漏洞利用了開源 Java 日志庫 Log4j。


    關鍵詞: 內存安全編程語言

    • EETOP 官方微信

    • 創芯大講堂 在線教育

    • 創芯老字號 半導體快訊

    全部評論

    国产白丝喷水娇喘视频|狠狠综合久久综合88亚洲|首发推荐国产AV巨作保洁员|欧美伊人色综合久久天天|精品国产免费第一区

  • <pre id="1csle"><strong id="1csle"><xmp id="1csle"></xmp></strong></pre>
  • <td id="1csle"><strike id="1csle"></strike></td>
  • <acronym id="1csle"><label id="1csle"></label></acronym>
  • <td id="1csle"></td>