撰稿丨諾亞
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
此前,白宮曾發(fā)布報(bào)告,呼吁開(kāi)發(fā)人員放棄C和C++等易受攻擊的編程語(yǔ)言,使用內(nèi)存安全的編程語(yǔ)言。
近日,C++之父Bjarne Stroustrup針對(duì)這一呼吁給出了回應(yīng)。
“我發(fā)現(xiàn),令人驚訝的是,撰寫(xiě)這些政府文件的人似乎對(duì)現(xiàn)代C++的優(yōu)勢(shì)視而不見(jiàn),也忽視了其為提供強(qiáng)有力的安全保障所做的努力。另一方面,他們似乎也意識(shí)到了編程語(yǔ)言只是工具鏈的一部分,因此改進(jìn)工具和開(kāi)發(fā)流程至關(guān)重要。”
今年2月26日,白宮國(guó)家網(wǎng)絡(luò)總監(jiān)辦公室(ONCD)發(fā)布了一份報(bào)告,敦促開(kāi)發(fā)人員通過(guò)使用沒(méi)有內(nèi)存安全漏洞的編程語(yǔ)言來(lái)降低網(wǎng)絡(luò)攻擊的風(fēng)險(xiǎn)。
圖片
報(bào)告直接將C++和C作為具有內(nèi)存安全漏洞的兩種反面示例。
“內(nèi)存安全漏洞是一類(lèi)影響內(nèi)存如何以非預(yù)期方式訪問(wèn)、寫(xiě)入、分配或釋放的漏洞。專(zhuān)家們已經(jīng)確定了一些編程語(yǔ)言,它們既缺乏與內(nèi)存安全相關(guān)的特性,又在關(guān)鍵系統(tǒng)中高度擴(kuò)散,例如C和C++”。
圖片
這份長(zhǎng)達(dá)19頁(yè)的報(bào)告還指出:“行業(yè)分析表明,在某些情況下,盡管有嚴(yán)格的代碼審查以及其他預(yù)防和檢測(cè)控制措施,但在內(nèi)存不安全的語(yǔ)言中,高達(dá)70%的安全漏洞都是由于內(nèi)存安全問(wèn)題造成的。”
如果說(shuō)C和C++是具有內(nèi)存安全漏洞的編程語(yǔ)言的“反面案例”,那么Rust則是內(nèi)存安全的編程語(yǔ)言的典例。
白宮在一份新聞稿中表示,科技公司“可以通過(guò)采用內(nèi)存安全編程語(yǔ)言來(lái)防止整個(gè)類(lèi)別的漏洞進(jìn)入數(shù)字生態(tài)系統(tǒng)”。
所謂“內(nèi)存安全編程語(yǔ)言”,指的是免受與內(nèi)存訪問(wèn)相關(guān)的軟件錯(cuò)誤和漏洞的影響,包括緩沖區(qū)溢出、越界讀取和內(nèi)存泄漏。
值得一提的是,美國(guó)國(guó)家安全局(NSA)在2022年11月的一份網(wǎng)絡(luò)安全信息表中將C#、Go、Java、Ruby 、Swift以及 Rust視為內(nèi)存安全的編程語(yǔ)言。
此外,2023年12月,美國(guó)網(wǎng)絡(luò)安全和基礎(chǔ)設(shè)施安全局 (CISA)聯(lián)邦調(diào)查局 (FBI) 以及來(lái)自澳大利亞、加拿大、新西蘭和英國(guó)的國(guó)際網(wǎng)絡(luò)安全機(jī)構(gòu)合作,發(fā)布了聯(lián)合指南《內(nèi)存安全路線圖案例》。
五眼聯(lián)盟機(jī)構(gòu)提到,盡管投入大量資源減少內(nèi)存安全漏洞的普遍性,但該類(lèi)型漏洞仍然存在。不過(guò),使用內(nèi)存安全編程語(yǔ)言應(yīng)當(dāng)能夠消除這類(lèi)安全缺陷并降低其影響,從而使開(kāi)發(fā)人員和客戶(hù)能夠?qū)①Y源投入到其它領(lǐng)域。
關(guān)于內(nèi)存安全漏洞的討論由來(lái)已久,但作為C++的創(chuàng)造者,Stroustrup并不認(rèn)同諸多政府文件對(duì)C++的指責(zé)。他強(qiáng)調(diào),安全性提升一直是C++開(kāi)發(fā)工作的目標(biāo)。
Stroustrup指出:“從一開(kāi)始就直至其不斷演進(jìn)的過(guò)程中,提高安全性始終是C++的目標(biāo)。只需將K&R C語(yǔ)言與最早的C++進(jìn)行比較,再將早期C++與現(xiàn)代C++對(duì)比就能看出這一變化。我在CppCon 2023主題演講中概述了這一演變過(guò)程。許多高質(zhì)量的C++代碼都是基于RAII(資源獲取即初始化)、容器和資源管理指針等技術(shù)編寫(xiě)的,而不是傳統(tǒng)的、容易出錯(cuò)的C風(fēng)格指針用法。”
圖源:CppCon 2023主題演講視頻截圖
Stroustrup提到了多項(xiàng)旨在提升C++安全性的努力。“關(guān)于安全問(wèn)題有兩個(gè)相關(guān)方面。數(shù)十億行的C++代碼中,很少完全遵循現(xiàn)代指南,而且人們對(duì)于哪些安全方面重要的認(rèn)識(shí)各不相同。我和C++標(biāo)準(zhǔn)委員會(huì)正在設(shè)法解決這個(gè)問(wèn)題。”
他指出的另外一點(diǎn)在于,“‘Profiles’是一個(gè)框架,用于指定一段代碼所需的確保內(nèi)容,并允許實(shí)現(xiàn)對(duì)其進(jìn)行驗(yàn)證。委員會(huì)網(wǎng)站上有關(guān)于此的描述文檔——查找WG21的相關(guān)資料,未來(lái)還將有更多內(nèi)容發(fā)布。然而,我們中的一些人并不滿(mǎn)足于等待委員會(huì)必然緩慢的進(jìn)展。”
Stroustrup表示,“Profiles”是一個(gè)能夠讓我們逐步提升保證的框架,例如相對(duì)很快地消除大多數(shù)范圍錯(cuò)誤,并通過(guò)局部靜態(tài)分析和最小運(yùn)行時(shí)檢查將保證逐漸引入大型代碼庫(kù)中。我對(duì)于C++的長(zhǎng)期目標(biāo)一直是,也仍然是在需要的時(shí)候和地方提供類(lèi)型和資源安全性。當(dāng)前對(duì)于內(nèi)存安全的大力推動(dòng)——這是我所追求的保證之一部分——或許會(huì)對(duì)我的努力有所幫助,這種努力在C++標(biāo)準(zhǔn)委員會(huì)中得到了許多人的共鳴。
Stroustrup也不是第一次為C++辯護(hù)。2022年,美國(guó)國(guó)家安全局在一份公告中,建議組織改用內(nèi)存安全的語(yǔ)言,而非C++和C。彼時(shí),Stroustrup就曾針對(duì)性地進(jìn)行發(fā)聲。
“如果我認(rèn)為這些'安全'語(yǔ)言中的任何一種在我關(guān)心的用途范圍內(nèi)優(yōu)于C++,我不會(huì)認(rèn)為C/C++的淡出是一件壞事,但事實(shí)并非如此。”
就像他在CppCon 2023會(huì)上提到的,“人們一般提到的安全性只涉及內(nèi)存安全,但這還遠(yuǎn)遠(yuǎn)不夠”。在他看來(lái):
第一,“安全不僅僅是類(lèi)型安全”。而很多人描述的“安全”僅限于內(nèi)存安全,忽略了一門(mén)語(yǔ)言“可能(和將會(huì))被用來(lái)違反某種形式的安全和保障的其他十幾種方式。”
第二,要替換C++同樣是一大問(wèn)題。“假設(shè)我們將用大約七種不同的語(yǔ)言來(lái)取代 C++,到替換完成時(shí)(40 年后),我們可能會(huì)有 20 個(gè)不一樣的語(yǔ)言選項(xiàng),而且它們必須能夠互操作。這會(huì)是一大難題。”
第三,語(yǔ)言的演化從來(lái)都是漸進(jìn)的。“只在一頭構(gòu)建一個(gè)新系統(tǒng),而不存在任何舊系統(tǒng)問(wèn)題的想法是一種幻想。”遺憾的是,很多人都沉浸在這種幻想中。
關(guān)于美國(guó)國(guó)家安全局引用的所謂安全語(yǔ)言,Stroustrup表示,所有語(yǔ)言都容易受到未經(jīng)靜態(tài)驗(yàn)證的代碼的攻擊。此外,每個(gè)系統(tǒng)都必須使用硬件,而有效的硬件訪問(wèn)很少是安全的。
Stroustrup概述了他安全使用C++的策略:
美國(guó)國(guó)家安全局承認(rèn),即使在“內(nèi)存安全”語(yǔ)言中,內(nèi)存管理也不是完全安全的,靜態(tài)和動(dòng)態(tài)應(yīng)用程序安全測(cè)試(SAST和DAST)等機(jī)制可用于提高所謂的非內(nèi)存安全語(yǔ)言的內(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
本文鏈接:http://m.www897cc.com/showinfo-26-80869-0.htmlC++之父駁斥白宮警告:拜登政府無(wú)視了現(xiàn)代C++為安全所做的努力
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com