電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 52|回復(fù): 0
收起左側(cè)

C/C++ 大限將至?美政府給出最強硬要求:2026 年前關(guān)鍵軟件必須開始全面去 C

[復(fù)制鏈接]

445

主題

445

帖子

3456

積分

四級會員

Rank: 4

積分
3456
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-5 09:01:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
點擊上方“C語言與CPP編程”,選擇“關(guān)注/置頂/星標公眾號
干貨福利,第一時間送達!
最近有小伙伴說沒有收到當天的文章推送,這是因為微信更改了推送機制,導(dǎo)致沒有星標公眾號的小伙伴刷不到當天推送的文章,無法接收到一些比較實用的知識和資訊。所以建議大家加個星標??,以后就能第一時間收到推送了。

編譯 | 核子可樂、Tina  轉(zhuǎn)自 | InfoQ此次意見可謂美國政府在軟件安全方面表達的最強硬立場,消息一出很快引起軟件開發(fā)商關(guān)注:若不對編碼實踐做出修復(fù),則意味著需要承擔(dān)過失風(fēng)險。  
美聯(lián)邦政府正在加強關(guān)于危險軟件開發(fā)實踐的警告,日前美國網(wǎng)絡(luò)安全與基礎(chǔ)設(shè)施安全局(CISA)和聯(lián)邦調(diào)查局(FBI)陸續(xù)發(fā)布關(guān)于困擾關(guān)鍵基礎(chǔ)設(shè)施的基本安全問題的明確處置信號。
CISA 和 FBI 在關(guān)于產(chǎn)品安全性不良實踐的最新報告中,提醒軟件開發(fā)商應(yīng)高度關(guān)注使用非內(nèi)存安全編程語言等不良行為,而 C 和 C++ 更是在其中被列為反面典型。
報告指出,“在支持關(guān)鍵基礎(chǔ)設(shè)施或國家關(guān)鍵職能(NCF)的新產(chǎn)品線的開發(fā)過程中,使用非內(nèi)存安全語言(例如 C 或 C++)可能引發(fā)風(fēng)險,即顯著提高了國家安全、國家經(jīng)濟安全以及國家公共衛(wèi)生及安全所面臨的風(fēng)險。”
                1 規(guī)避不良實踐,遵循建議方針        這份報告還將不良實踐具體分為三大類別:
產(chǎn)品屬性,即描述軟件產(chǎn)品中肉眼可見與安全相關(guān)的質(zhì)量屬性。
安全功能,描述產(chǎn)品所支持的安全功能。
組織流程和政策,描述軟件開發(fā)商在確保安全方法的透明度等方面采取的實際行動。
[/ol]這份報告主要面向負責(zé)為關(guān)鍵基礎(chǔ)設(shè)施或者國家關(guān)鍵職能等應(yīng)用場景開發(fā)軟件產(chǎn)品及服務(wù)的各軟件開發(fā)商(包括本地軟件、云服務(wù)以及 SaaS 軟件即服務(wù))。
此外,這份報告還鼓勵全體軟件開發(fā)商避免采取這些可能影響產(chǎn)品安全性的不良實踐。報告提到,“通過遵循本指南中的建議,開發(fā)商將向客戶發(fā)出信號,表明他們高度關(guān)注向客戶交付成果的安全因素、牢牢秉持在設(shè)計之初就重視安全的基本原則!
Omdia 分析師 Brad Shimmin 表示,“這項指南是對美國政府此前關(guān)于軟件安全問題的早期聲明的延續(xù),當時的聲明可以追溯到 2022 年,意在提醒技術(shù)提供商和企業(yè)用戶盡量使用或遷移至內(nèi)存安全語言!
他解釋稱,“拋開新增代碼不談,當時的文件和美國政府表達的立場相對比較和緩,沒有立即要求從 C/C++ 遷移至 Rust。CISA 的設(shè)計文檔中也提到,軟件維護者根本不可能在短時間內(nèi)完成如此規(guī)模的代碼庫遷移!
當時的指南雖然屬于自愿性質(zhì),但也代表著 CISA 在基準安全實踐方面的最強立場,包括提醒企業(yè)注意到可能被疏忽的不良軟件開發(fā)實踐,特別是其中觸及基礎(chǔ)設(shè)施的部分。
時間正點滴流逝但時間的洪流一刻不停向前奔涌,最新報告已經(jīng)要求企業(yè)必須在 2026 年 1 月 1 日之前建立內(nèi)存安全發(fā)展路線圖。
報告指出,“對于以非內(nèi)存安全語言編寫的現(xiàn)有產(chǎn)品,到 2026 年 1 月 1 日前仍缺少明確內(nèi)存安全遷移路線圖的情況,將被視為存在風(fēng)險,即顯著提高了國家安全、國家經(jīng)濟安全以及國家公共衛(wèi)生及安全所面臨的風(fēng)險!

CISA 戰(zhàn)略合作伙伴關(guān)系及漏洞項目開發(fā)負責(zé)人 Rina Rakipi 表示,CISA 已獲得超過 230 家軟件廠商的自愿承諾。加入“安全設(shè)計”計劃,意味著這些廠商承諾在一年內(nèi)達成一系列網(wǎng)絡(luò)安全目標,包括減少產(chǎn)品中的默認密碼、增加多因素身份驗證的使用,以及消除特定類別的漏洞。
Rakipi 說:“我們非常高興有超過 230 家軟件廠商自愿參與這一承諾。展望未來,我們期待 在接下來的一年中,看到這 230 家公司取得的實質(zhì)性進展。”

截圖來源:https://www.cisa.gov/securebydesign/pledge/secure-design-pledge-signers
此外,報告還要求企業(yè)在同一日期之前移除管理員賬戶中使用的全部默認密碼。這一截止日期已經(jīng)將指南內(nèi)容從建議升級為預(yù)期標準。
報告同時指出,內(nèi)存安全路線圖應(yīng)要搞開發(fā)商在主要代碼組件(例如面向網(wǎng)絡(luò)的代碼或者處理加密操作等敏感功能的代碼)當中將要采取的首選內(nèi)存安全漏洞消除方法。
報告指出,“開發(fā)商應(yīng)當證明,其內(nèi)存安全路線圖將如何優(yōu)先緩解其所開發(fā)產(chǎn)品中內(nèi)存安全性的脆弱性,同時證明他們正做出合理努力以實施并推進其內(nèi)存安全路線圖!
Shimmin 在采訪中解釋稱,“但有兩個現(xiàn)實理由會迫使企業(yè)繼續(xù)維護由 COBOL 和 Fortran 編寫的成規(guī)模代碼——成本和風(fēng)險。首先,對數(shù)百萬行舊代碼進行遷移在財務(wù)上不具備可行性,而且任何負責(zé)任的組織都無法承擔(dān)由此帶來的業(yè)務(wù)風(fēng)險!
此外,根據(jù)報告內(nèi)容,關(guān)鍵基礎(chǔ)設(shè)施還面臨著以下“異常風(fēng)險”的困擾:
默認密碼。
直接 SQL 注入漏洞。
缺少基本注入檢測機制。
缺少多因素身份驗證機制。
開源難題對于開源軟件,該報告稱應(yīng)特別關(guān)注開源漏洞。其他建議還包括:
企業(yè)必須維護明確的軟件物料清單(SBOM)。
應(yīng)當緩存依賴項,而非直接從公共來源處提取。
需要以負責(zé)任方式為其依賴的開源項目做出貢獻。
報告提到,“軟件開發(fā)商應(yīng)當以負責(zé)任的方式使用并持續(xù)為其所依賴的開源軟件做出貢獻!
報告還敦促提高軟件開發(fā)透明度,包括:
企業(yè)必須發(fā)布漏洞披露政策。
應(yīng)當為所有關(guān)鍵漏洞發(fā)布 CVE。
必須提供關(guān)于安全問題的清晰說明文檔。
預(yù)計將安全日志維護并保存六個月。
盡管手段嚴厲,但影響無疑非常積極最后,Shimmin 總結(jié)稱,CISA 建議掌握關(guān)鍵軟件的企業(yè)在 2026 年初之前制定出明確的安全計劃無疑是件好事。因為這能讓軟件行業(yè)有更多時間探索出理想的方法,確保我們的關(guān)鍵軟件資產(chǎn)免遭威脅侵擾。
“這些方法能夠包括在硬件制造層面消除潛在的攻擊面,以及由編程語言維護者提出方案。以 Safe C++ 提案為例,其呼吁為 C++ 創(chuàng)建一個超集以解決內(nèi)存安全問題,借此避免強制進行大規(guī)模代碼重寫。”
                2 C++ 之父駁斥棄用論:安全升級需漸進改進,而非全盤更換        這并不是 CISA 對內(nèi)存安全語言的首次提倡。
在去年 9 月的一篇博文中,CISA 也曾公開敦促開發(fā)人員使用內(nèi)存安全編程語言。網(wǎng)絡(luò)與基礎(chǔ)設(shè)施安全局、聯(lián)邦調(diào)查局(FBI)、國家安全局及各盟國機構(gòu)隨后于 12 月發(fā)布了題為《內(nèi)存安全路線圖案例》(The Case for Memory Safe Roadmaps)的研究報告,其中就點名 C/C++ 存在內(nèi)存安全漏洞,軟件開發(fā)商應(yīng)放棄使用,改用 C#、Rust、Go、Java、Python 和 Swift 等內(nèi)存安全的編程語言 (MSL)。
今年 2 月底,白宮國家網(wǎng)絡(luò)主任辦公室 (ONCD) 也就此發(fā)布了一份報告,呼吁科技界主動減少網(wǎng)絡(luò)空間的攻擊面;通過改用 Rust 等內(nèi)存安全編程語言、避免使用 C++ 和 C 語言等易受攻擊的語言,以減少內(nèi)存安全漏洞的數(shù)量來提高軟件安全性。(詳情點擊:《拜登:“一切非 Rust 項目均為非法”》)
隨后,C++ 的創(chuàng)建者 Bjarne Stroustrup 針對白宮的這些言論進行了反駁。
Stroustrup 指出了 C++ 的優(yōu)勢,并提到該語言最早于 1979 年設(shè)計。“令我感到驚訝的是,這些政府文件的作者似乎忽略了現(xiàn)代 C++ 的優(yōu)勢以及在提供強大安全保障方面所做的努力,” Stroustrup 表示,“但另一方面,他們似乎認識到編程語言只是工具鏈的一部分,因此改進工具和開發(fā)流程也至關(guān)重要。”
Stroustrup 強調(diào),C++ 開發(fā)始終將安全性改進作為目標之一!白缘谝惶炱,安全性改進就是 C++ 發(fā)展的目標之一,并貫穿了整個演進過程。只要將 K&R 時代的 C 語言與最早的 C++ 比較,再將早期的 C++ 與當代 C++ 比較就可以看出這一點,”他說!霸S多高質(zhì)量的 C++ 代碼采用了基于 RAII(資源獲取即初始化)、容器和資源管理指針的技術(shù),而不是傳統(tǒng)的 C-style pointer messes。”

其實在更早之前,Stroustrup 就明確表達過自己的看法,他曾在 CppCon2023 大會上主題演講上闡述了 C++ 的演變,還花了一些時間回應(yīng)了批評。批評者說問題出在 C++ 本身,解決方案應(yīng)該是改用另一種語言。Stroustrup 在演講中向與會者詳細說明了 C++ 語言在安全性方面所需的具體措施,并介紹了一項引入全新安全工具的提案,旨在為全球數(shù)十億行 C++ 代碼提供更可靠的安全保障。
Stroustrup 反對通過更換語言來解決安全問題。他指出安全問題不僅僅是內(nèi)存安全,還包括資源泄漏、溢出、并發(fā)和計時錯誤等多種復(fù)雜的隱患。
他強調(diào),完全轉(zhuǎn)向其他語言不僅成本高昂,還缺乏關(guān)注跨語言互操作的需求——“實際上,我們在替換 C++ 時,可能需要用七種不同的語言來完成。而到 40 年后,可能會有 20 種語言需要彼此兼容。這是巨大的挑戰(zhàn)!
此外,Stroustrup 指出,許多所謂“安全”語言實際上將底層任務(wù)外包給 C 或 C++,以便訪問操作系統(tǒng)、硬件資源或其他歷史代碼庫,這些代碼往往隱藏在庫中,甚至使用完全不同的語言開發(fā)。
與 CISA 的“安全設(shè)計”計劃類似,Stroustrup 主張采用逐步改進的方案來提升 C++ 的安全性,而非推倒重來。他援引加爾定律,指出“有效的復(fù)雜系統(tǒng)總是從簡單系統(tǒng)演變而來”。
在他看來,“一邊倒地構(gòu)建一個無舊系統(tǒng)問題的新系統(tǒng)是幻想,但這種幻想確實頗具吸引力!
參考鏈接:
https://thenewstack.io/feds-critical-software-must-drop-c-c-by-2026-or-face-risk/
https://cyberscoop.com/cisa-secure-by-design-software-bad-practices/
https://www.infoq.cn/article/1wy3xq56dj6cmnwlgavi
https://www.infoworld.com/article/2336463/c-plus-plus-creator-rebuts-white-house-warning.html
——EOF——你好,我是飛宇。日常分享C/C++、計算機學(xué)習(xí)經(jīng)驗、工作體會,歡迎點擊此處查看我以前的學(xué)習(xí)筆記&經(jīng)驗&分享的資源。
我組建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起進群交流。

歡迎你添加我的微信,我拉你進技術(shù)交流群。此外,我也會經(jīng)常在微信上分享一些計算機學(xué)習(xí)經(jīng)驗以及工作體驗,還有一些內(nèi)推機會。


加個微信,打開另一扇窗
經(jīng)常遇到有讀者后臺私信想要一些編程學(xué)習(xí)資源,這里分享 1T 的編程電子書、C/C++開發(fā)手冊、Github上182K+的架構(gòu)路線圖、LeetCode算法刷題筆記等精品學(xué)習(xí)資料,點擊下方公眾號會回復(fù)"編程"即可免費領(lǐng)取~
感謝你的分享,點贊,在看三  

回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表