自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++之父駁斥白宮警告:拜登政府無視了現(xiàn)代C++為安全所做的努力

原創(chuàng) 精選
開發(fā) 前端 應(yīng)用安全
“內(nèi)存安全漏洞是一類影響內(nèi)存如何以非預(yù)期方式訪問、寫入、分配或釋放的漏洞。專家們已經(jīng)確定了一些編程語言,它們既缺乏與內(nèi)存安全相關(guān)的特性,又在關(guān)鍵系統(tǒng)中高度擴散,例如C和C++”。

撰稿丨諾亞

出品 | 51CTO技術(shù)棧(微信號:blog51cto)

此前,白宮曾發(fā)布報告,呼吁開發(fā)人員放棄C和C++等易受攻擊的編程語言,使用內(nèi)存安全的編程語言。

近日,C++之父Bjarne Stroustrup針對這一呼吁給出了回應(yīng)。

“我發(fā)現(xiàn),令人驚訝的是,撰寫這些政府文件的人似乎對現(xiàn)代C++的優(yōu)勢視而不見,也忽視了其為提供強有力的安全保障所做的努力。另一方面,他們似乎也意識到了編程語言只是工具鏈的一部分,因此改進工具和開發(fā)流程至關(guān)重要?!?/p>

1、由來已久的矛盾:內(nèi)存安全隱患

今年2月26日,白宮國家網(wǎng)絡(luò)總監(jiān)辦公室(ONCD)發(fā)布了一份報告,敦促開發(fā)人員通過使用沒有內(nèi)存安全漏洞的編程語言來降低網(wǎng)絡(luò)攻擊的風(fēng)險。

圖片圖片

報告直接將C++和C作為具有內(nèi)存安全漏洞的兩種反面示例。

“內(nèi)存安全漏洞是一類影響內(nèi)存如何以非預(yù)期方式訪問、寫入、分配或釋放的漏洞。專家們已經(jīng)確定了一些編程語言,它們既缺乏與內(nèi)存安全相關(guān)的特性,又在關(guān)鍵系統(tǒng)中高度擴散,例如C和C++”。

圖片圖片

這份長達19頁的報告還指出:“行業(yè)分析表明,在某些情況下,盡管有嚴格的代碼審查以及其他預(yù)防和檢測控制措施,但在內(nèi)存不安全的語言中,高達70%的安全漏洞都是由于內(nèi)存安全問題造成的?!?/p>

如果說C和C++是具有內(nèi)存安全漏洞的編程語言的“反面案例”,那么Rust則是內(nèi)存安全的編程語言的典例。

白宮在一份新聞稿中表示,科技公司“可以通過采用內(nèi)存安全編程語言來防止整個類別的漏洞進入數(shù)字生態(tài)系統(tǒng)”。

所謂“內(nèi)存安全編程語言”,指的是免受與內(nèi)存訪問相關(guān)的軟件錯誤和漏洞的影響,包括緩沖區(qū)溢出、越界讀取和內(nèi)存泄漏。

值得一提的是,美國國家安全局(NSA)在2022年11月的一份網(wǎng)絡(luò)安全信息表中將C#、Go、Java、Ruby 、Swift以及 Rust視為內(nèi)存安全的編程語言。

此外,2023年12月,美國網(wǎng)絡(luò)安全和基礎(chǔ)設(shè)施安全局 (CISA)聯(lián)邦調(diào)查局 (FBI) 以及來自澳大利亞、加拿大、新西蘭和英國的國際網(wǎng)絡(luò)安全機構(gòu)合作,發(fā)布了聯(lián)合指南《內(nèi)存安全路線圖案例》。

五眼聯(lián)盟機構(gòu)提到,盡管投入大量資源減少內(nèi)存安全漏洞的普遍性,但該類型漏洞仍然存在。不過,使用內(nèi)存安全編程語言應(yīng)當(dāng)能夠消除這類安全缺陷并降低其影響,從而使開發(fā)人員和客戶能夠?qū)①Y源投入到其它領(lǐng)域。

二、自1979年開始:C++的努力

關(guān)于內(nèi)存安全漏洞的討論由來已久,但作為C++的創(chuàng)造者,Stroustrup并不認同諸多政府文件對C++的指責(zé)。他強調(diào),安全性提升一直是C++開發(fā)工作的目標。

Stroustrup指出:“從一開始就直至其不斷演進的過程中,提高安全性始終是C++的目標。只需將K&R C語言與最早的C++進行比較,再將早期C++與現(xiàn)代C++對比就能看出這一變化。我在CppCon 2023主題演講中概述了這一演變過程。許多高質(zhì)量的C++代碼都是基于RAII(資源獲取即初始化)、容器和資源管理指針等技術(shù)編寫的,而不是傳統(tǒng)的、容易出錯的C風(fēng)格指針用法?!? 

圖源:CppCon 2023主題演講視頻截圖圖源:CppCon 2023主題演講視頻截圖

Stroustrup提到了多項旨在提升C++安全性的努力?!瓣P(guān)于安全問題有兩個相關(guān)方面。數(shù)十億行的C++代碼中,很少完全遵循現(xiàn)代指南,而且人們對于哪些安全方面重要的認識各不相同。我和C++標準委員會正在設(shè)法解決這個問題?!?/p>

他指出的另外一點在于,“‘Profiles’是一個框架,用于指定一段代碼所需的確保內(nèi)容,并允許實現(xiàn)對其進行驗證。委員會網(wǎng)站上有關(guān)于此的描述文檔——查找WG21的相關(guān)資料,未來還將有更多內(nèi)容發(fā)布。然而,我們中的一些人并不滿足于等待委員會必然緩慢的進展。”

Stroustrup表示,“Profiles”是一個能夠讓我們逐步提升保證的框架,例如相對很快地消除大多數(shù)范圍錯誤,并通過局部靜態(tài)分析和最小運行時檢查將保證逐漸引入大型代碼庫中。我對于C++的長期目標一直是,也仍然是在需要的時候和地方提供類型和資源安全性。當(dāng)前對于內(nèi)存安全的大力推動——這是我所追求的保證之一部分——或許會對我的努力有所幫助,這種努力在C++標準委員會中得到了許多人的共鳴。

三、所謂“內(nèi)存安全”的語言,也從來不意味著高枕無憂

Stroustrup也不是第一次為C++辯護。2022年,美國國家安全局在一份公告中,建議組織改用內(nèi)存安全的語言,而非C++和C。彼時,Stroustrup就曾針對性地進行發(fā)聲。

“如果我認為這些'安全'語言中的任何一種在我關(guān)心的用途范圍內(nèi)優(yōu)于C++,我不會認為C/C++的淡出是一件壞事,但事實并非如此?!?/p>

就像他在CppCon 2023會上提到的,“人們一般提到的安全性只涉及內(nèi)存安全,但這還遠遠不夠”。在他看來:   

第一,“安全不僅僅是類型安全”。而很多人描述的“安全”僅限于內(nèi)存安全,忽略了一門語言“可能(和將會)被用來違反某種形式的安全和保障的其他十幾種方式?!?/p>

第二,要替換C++同樣是一大問題?!凹僭O(shè)我們將用大約七種不同的語言來取代 C++,到替換完成時(40 年后),我們可能會有 20 個不一樣的語言選項,而且它們必須能夠互操作。這會是一大難題?!?/p>

第三,語言的演化從來都是漸進的。“只在一頭構(gòu)建一個新系統(tǒng),而不存在任何舊系統(tǒng)問題的想法是一種幻想?!边z憾的是,很多人都沉浸在這種幻想中。

關(guān)于美國國家安全局引用的所謂安全語言,Stroustrup表示,所有語言都容易受到未經(jīng)靜態(tài)驗證的代碼的攻擊。此外,每個系統(tǒng)都必須使用硬件,而有效的硬件訪問很少是安全的。

Stroustrup概述了他安全使用C++的策略:

  • 靜態(tài)分析以驗證沒有執(zhí)行不安全的代碼。
  • 編碼規(guī)則簡化代碼,使工業(yè)規(guī)模的靜態(tài)分析可行。
  • 庫使這種簡化的代碼相當(dāng)容易編寫,并確保在需要時進行運行時檢查。

美國國家安全局承認,即使在“內(nèi)存安全”語言中,內(nèi)存管理也不是完全安全的,靜態(tài)和動態(tài)應(yīng)用程序安全測試(SAST和DAST)等機制可用于提高所謂的非內(nèi)存安全語言的內(nèi)存安全性。但NSA表示,SAST和DAST都不能使非內(nèi)存安全代碼完全安全。

參考鏈接:

https://www.infoworld.com/article/3714401/c-plus-plus-creator-rebuts-white-house-warning.html

https://www.youtube.com/watch?v=I8UvQKvOSSw

https://www.infoworld.com/article/3686517/c-plus-plus-creator-bjarne-stroustrup-defends-its-safety.html

https://www.whitehouse.gov/wp-content/uploads/2024/02/Final-ONCD-Technical-Report.pdf

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2021-02-04 10:36:14

安全戰(zhàn)略漏洞拜登

2023-02-08 07:05:44

2016-10-20 16:07:11

C++Modern C++異步

2023-10-31 17:57:52

C++編程語言

2024-03-01 12:03:00

AI模型

2009-12-22 01:54:50

C++之父Bjarne Stro

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2010-01-26 15:51:06

C++變量

2010-01-28 13:45:06

C++數(shù)組

2010-01-21 14:07:14

CC++聲明

2009-10-22 09:17:16

C++ CLR

2023-11-21 20:28:02

C++Pythonweb開發(fā)

2010-02-06 09:46:46

C++單向鏈表

2010-01-20 10:19:55

C++數(shù)組

2010-01-21 13:33:44

C++基類

2010-01-25 10:25:19

C++變量

2010-01-28 16:31:54

C++類型

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2020-08-21 13:20:36

C++If ElseLinux
點贊
收藏

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