從本質(zhì)上講,汽車軟件很復(fù)雜。
它包含龐大的代碼庫,并跨越關(guān)鍵的機(jī)載系統(tǒng)。多年來,制造商一直依靠MISRAC/C++編碼指南來幫助軟件開發(fā)。該框架為汽車行業(yè)及其他行業(yè)帶來了實際優(yōu)勢和安全性提升。
許多創(chuàng)建汽車軟件的開發(fā)團(tuán)隊使用 MISRA 指南和應(yīng)用程序安全工具,包括靜態(tài)應(yīng)用程序安全測試 (SAST)。這使得在降低安全漏洞和關(guān)鍵安全問題風(fēng)險的過程中發(fā)現(xiàn)語法和其他編碼錯誤成為可能。該框架還有助于降低開發(fā)成本并加快上市時間。
然而,將這些指南和工具以最大效率結(jié)合使用可能具有挑戰(zhàn)性。問題出在哪里?許多應(yīng)用程序安全 (AppSec) 工具需要大量的手動干預(yù)或監(jiān)督,以便充分了解它們?nèi)绾斡绊懜鞣N流程。
破解密碼
問題的核心是一個基本事實:當(dāng)手動接近MISRA標(biāo)準(zhǔn)時,執(zhí)行MISRA標(biāo)準(zhǔn)是很困難的。許多基本的 AppSec 工具僅處理規(guī)則檢查,因此提供了一些幫助,但回避了與應(yīng)用程序安全性相關(guān)的核心問題。它們不解決關(guān)鍵任務(wù),例如錯誤檢測和安全漏洞分析。
不幸的是,遵循基本的MISRA指南并不能提供足夠的保護(hù)。雖然它可以消除一些錯誤并提高 C 或 C++ 的代碼質(zhì)量,但它并沒有針對龐大的代碼庫和日益復(fù)雜的開發(fā)實踐。錯誤和缺陷仍然是編寫代碼的不幸和不可避免的副作用。
這是所有汽車制造商都面臨的問題。研究表明,商業(yè)軟件平均每 1,000 行代碼 (KLOC) 有一個缺陷。雖然開源的表現(xiàn)要好一些,但它的測量值為0.68 / KLOC,但它仍然是一個嚴(yán)重的問題??紤]一下:今天的豪華車大約有1億行代碼。即使在最佳情況下,這也代表了大約 10,000 個影響質(zhì)量、安全和安保的潛在缺陷。
當(dāng)然,在事后修復(fù)問題和修復(fù)是昂貴且耗時的。當(dāng)召回車輛以修復(fù)軟件缺陷時,這也給消費(fèi)者帶來了壓力。不幸的是,問題的根本原因通常仍然未知,并且很難找到漏洞的實際來源。這意味著開發(fā)人員必須重現(xiàn)故障,對其進(jìn)行分析,并嘗試了解它如何影響代碼庫的其他部分。實際上,這意味著許多錯誤可能永遠(yuǎn)無法修復(fù)。
但是,當(dāng)組織以更深入和更廣泛的方式將 AppSec(包括 SAST)集成到開發(fā)過程中時,可以將安全性提升到更高級的水平。組織不再局限于代碼庫的部分快照??梢陨钊胙芯克?,獲得可見性,并更詳盡地進(jìn)行測試。借助 SAST,可以在開發(fā)過程的早期解決和修復(fù)缺陷,從而加快軟件發(fā)布并確保質(zhì)量、安全和保障。
推進(jìn)應(yīng)用安全
好消息是,高級測試解決方案支持更全面的應(yīng)用程序安全框架。他們可以發(fā)現(xiàn)通過傳統(tǒng)開發(fā)方法遺漏的缺陷。這包括識別關(guān)鍵問題,例如:
并發(fā)缺陷,通常隨機(jī)發(fā)生,只有在組織在最終硬件平臺上集成各種系統(tǒng)和代碼存儲庫后才可見。
安全漏洞,又稱軟件缺陷,可被攻擊者利用,從而干擾系統(tǒng)行為并訪問關(guān)鍵數(shù)據(jù)。
警告潛在漏洞的受污染數(shù)據(jù)分析可能格式不正確。由于這些數(shù)據(jù)通過許多系統(tǒng),因此通常很難發(fā)現(xiàn)。
難以檢測的復(fù)雜過程間缺陷,尤其是在單元和子系統(tǒng)測試中。
顯示為目標(biāo)文件、庫和可執(zhí)行文件的已編譯代碼中的錯誤檢測。這些可以掩蓋關(guān)鍵的安全問題。
雖然一些MISRA規(guī)則非常簡單,只能依賴于代碼語法檢查器,但僅依賴這種方法是錯誤的。更好的方法是更深入地擴(kuò)展分析并解決上述關(guān)鍵問題。這包括生成軟件物料清單 (SBOM) 的能力,該明細(xì)表標(biāo)識軟件的成分列表,包括第三方和開源組件。
SBOM還將附有這些已查明組件的脆弱性報告。這允許組織檢測可能影響軟件安全性和安全性的隱藏問題。更高級的框架還可以檢測困難的情況,例如當(dāng)需要查看多個連接點,檢查所有編譯單元并比較每個連接點中找到的所有此類標(biāo)識符時。這些通常會導(dǎo)致假陽性和假陰性。
雪上加霜的是:人類經(jīng)常誤解這些情況,尤其是在依賴手動工具和報告時。最后,當(dāng)組織試圖完全理解規(guī)則的超集和子集、識別安全漏洞并避免死代碼時,組織被蒙在鼓里。另一方面,最佳實踐框架可以發(fā)現(xiàn)規(guī)則指定的內(nèi)容與檢查器發(fā)現(xiàn)的內(nèi)容之間的重疊和差距。
該模型最終通過在開發(fā)的早期階段發(fā)現(xiàn)和修復(fù)缺陷和漏洞來降低風(fēng)險并節(jié)省時間。它通常自動化文檔并削減成本。這增加了文檔級別,反過來又改進(jìn)了治理框架并簡化了法規(guī)遵從性。通過將解決方案集成到安全關(guān)鍵環(huán)境中,汽車制造商和其他公司可以獲得巨大的收益。
如今,企業(yè)級開發(fā)項目需要復(fù)雜的測試框架來支持和增強(qiáng)整個軟件開發(fā)生命周期,包括與其他開發(fā)自動化工具集成。超越 MISRA 規(guī)則執(zhí)行和基本 AppSec 的能力推動了巨大的收益。它改進(jìn)了保護(hù),降低了成本,并使開發(fā)人員能夠?qū)W⒂谒麄冏钌瞄L的事情:構(gòu)建出色的軟件。
審核編輯:郭婷
-
C++
+關(guān)注
關(guān)注
22文章
2116瀏覽量
74605 -
代碼
+關(guān)注
關(guān)注
30文章
4882瀏覽量
70051
發(fā)布評論請先 登錄
CUST_DEL后如何在S32K312上安全恢復(fù)應(yīng)用程序?
BQ78412應(yīng)用程序編程接口

SSM框架的源碼解析與理解
SSM框架在Java開發(fā)中的應(yīng)用 如何使用SSM進(jìn)行web開發(fā)
TAS2521應(yīng)用程序參考指南

android手機(jī)上emulate應(yīng)用程序的方法
AWTK-WEB 快速入門(2) - JS 應(yīng)用程序

AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

使用OpenVINO? ElectronJS中創(chuàng)建桌面應(yīng)用程序

JavaWeb框架比較
PCM2912應(yīng)用程序的操作環(huán)境

使用HIC啟用外圍擴(kuò)展應(yīng)用程序應(yīng)用說明

日志框架簡介-Slf4j+Logback入門實踐

評論