《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 關(guān)于汽車軟件安全保障改進(jìn)

關(guān)于汽車軟件安全保障改進(jìn)

2021-06-28
來源:網(wǎng)絡(luò)安全應(yīng)急技術(shù)國(guó)家工程實(shí)驗(yàn)室
關(guān)鍵詞: 汽車 軟件安全

  前言

  《Better Embedded System Software》一書的作者在其博客上發(fā)布了可致命汽車軟件缺陷列表,,該列表主要來源于NHTSA(美國(guó)高速公路安全管理局)官網(wǎng)上的召回通告,。作者在博客中表示,整理出列表的目的不是要針對(duì)任何特定的公司或軟件缺陷,現(xiàn)實(shí)是關(guān)鍵的安全性軟件缺陷在整個(gè)汽車行業(yè)中都是普遍且持久存在的,。

  本文將首先從清單中挑選出一些典型例子,然后討論SAST能對(duì)這些狀況提供的幫助,。

  汽車軟件故障示例

  原博客中列出的那些問題能被作為車輛召回的原因,也表明了那些問題確實(shí)是足夠嚴(yán)重的安全隱患,,以下是部分召回信息:

  1、由于診斷檢查問題,,ABS 和 DSC 被禁用(捷豹)/ 2021 年 3 月

微信圖片_20210628170228.jpg

2,、無線電軟件安全漏洞(克萊斯勒)/ 2015微信圖片_20210628170236.jpg

3、ESC故障(梅賽德斯)/ 2021 年 2 月微信圖片_20210628170239.jpg

4,、制動(dòng)性能降低(現(xiàn)代)/ 2020 年 12 月微信圖片_20210628170242.jpg

  5,、由于偏航傳感器軟件的缺陷,特別是診斷程序缺陷,,導(dǎo)致錯(cuò)誤干預(yù)電子穩(wěn)定程序(ESP),。在這種情況下,傳感器漂移會(huì)增加撞車的風(fēng)險(xiǎn),。

  6,、由于軟件代碼缺失以及與新引入的硬件不兼容,自動(dòng)緊急制動(dòng)可能無法啟動(dòng),。

  以上只是一些有代表性的問題,,還有非常多類似的召回案例,其中涉及到的軟件和硬件缺陷,,可能影響車輛穩(wěn)定性,、制動(dòng)和發(fā)動(dòng)機(jī)控制等關(guān)鍵方面。

  SAST在安全關(guān)鍵軟件開發(fā)中的作用

  汽車軟件的安全保障顯然是一個(gè)系統(tǒng)性問題,,需要企業(yè)文化,、管理流程和研發(fā)技術(shù)變革共同推進(jìn)。行業(yè)自認(rèn)證也存在問題,,ISO 26262等標(biāo)準(zhǔn)并沒有被普遍采用,,由于這個(gè)主題太大,以下將僅關(guān)注可以通過SAST (static application security testing,,靜態(tài)應(yīng)用程序安全測(cè)試) 和SCA (軟件組成分析) 改進(jìn)的流程和過程,。

  SAST的強(qiáng)大之處在于不依賴于測(cè)試用例來發(fā)現(xiàn)問題,也不需要重現(xiàn)錯(cuò)誤或失敗,。類似GrammaTech CodeSonar這樣的SAST工具可以在不實(shí)際運(yùn)行程序的情況下推斷出程序的運(yùn)行時(shí)行為,。此外,當(dāng)它識(shí)別出一個(gè)問題時(shí),,還能在代碼中定位到導(dǎo)致失敗的位置,。這使得調(diào)試工作變得簡(jiǎn)單。

  靜態(tài)分析并不能完全替代測(cè)試,,而是對(duì)測(cè)試的有效補(bǔ)充?,F(xiàn)實(shí)情況是,在大型的復(fù)雜軟件系統(tǒng)中,,可能的狀態(tài)非常之多,,可能的執(zhí)行路徑數(shù)量更是驚人,,所以對(duì)它們進(jìn)行詳盡的測(cè)試是不現(xiàn)實(shí)的。靜態(tài)代碼分析可以從總體上探索這些路徑和狀態(tài),,以發(fā)現(xiàn)測(cè)試中遺漏的問題,。

  通過編碼標(biāo)準(zhǔn)進(jìn)行預(yù)防:編碼標(biāo)準(zhǔn)是安全關(guān)鍵軟件開發(fā)的重要組成部分,因?yàn)樗鼈兌x了一組更安全的編程語(yǔ)言子集,。汽車軟件中最常用的標(biāo)準(zhǔn)是 MISRA C 和 MISRA C++(還有相關(guān)的AUTOSARC++標(biāo)準(zhǔn)),。執(zhí)行更嚴(yán)格的安全編碼標(biāo)準(zhǔn),可以提前消除許多軟件缺陷,,重點(diǎn)是避免使用已知的危險(xiǎn)語(yǔ)法和每種語(yǔ)言中潛在未定義行為的部分,。

  代碼覆蓋率不代表一切:許多安全標(biāo)準(zhǔn)需要高水平的代碼覆蓋率(以證明測(cè)試執(zhí)行了大部分語(yǔ)句和條件)。雖然這是非常詳盡的,,但做起來成本很高,,而且必須在開發(fā)的每個(gè)主要階段重復(fù)進(jìn)行(單元、集成和系統(tǒng)測(cè)試),。其實(shí)軟件的關(guān)鍵性決定了覆蓋率的水平,,一些不太關(guān)鍵的軟件不需要正式的測(cè)試覆蓋率。雖然測(cè)試代碼覆蓋率是評(píng)估軟件質(zhì)量的一個(gè)指標(biāo),,但在有些情況下,,它并不是絕對(duì)的。

  被基于覆蓋率測(cè)試所遺漏的漏洞和錯(cuò)誤:基于覆蓋率指標(biāo)的軟件測(cè)試本質(zhì)上是基于單元的測(cè)試(盡管覆蓋率也會(huì)在系統(tǒng)層面進(jìn)行評(píng)估),。而并發(fā)性錯(cuò)誤和安全漏洞是兩個(gè)在嚴(yán)格測(cè)試中也可能被遺漏的隱患,。并發(fā)產(chǎn)生的錯(cuò)誤(如競(jìng)爭(zhēng)條件)只有在運(yùn)行過程中出現(xiàn)一些不可預(yù)見的情況時(shí)才會(huì)被發(fā)現(xiàn)。安全漏洞是存在于代碼中的錯(cuò)誤 – 造成錯(cuò)誤的原因通常是由于在測(cè)試期間沒有考慮輸入的類型,。SAST可以及早發(fā)現(xiàn)這些錯(cuò)誤,,并防止它們?cè)陂_發(fā)周期的后期成為絆腳石,。

  及早發(fā)現(xiàn)缺陷:嚴(yán)格的測(cè)試可以發(fā)現(xiàn)軟件中的大多數(shù)缺陷,,但成本高昂且極其耗時(shí)。在編寫代碼時(shí)就發(fā)現(xiàn)和修復(fù)這些錯(cuò)誤比在開發(fā)周期后期便宜得多(隨著時(shí)間的推移,,發(fā)現(xiàn)缺陷的成本呈指數(shù)級(jí)增長(zhǎng)),。靜態(tài)分析可以在代碼編寫時(shí)檢測(cè)錯(cuò)誤——如果能作為開發(fā)人員開發(fā)環(huán)境的一部分,這將大大降低缺陷出現(xiàn)在下游時(shí)的成本,。

  分析開源和第三方代碼:在嵌入式軟件開發(fā)中,,使用第三方代碼和開源軟件是一個(gè)常見現(xiàn)象。一些安全標(biāo)準(zhǔn)認(rèn)為,,任何沒有按照特定標(biāo)準(zhǔn)開發(fā)的軟件都是血統(tǒng)不明的軟件(SOUP)--是需要仔細(xì)檢查后才能納入系統(tǒng)的,。針對(duì)這類情況,軟件組成分析工具SCA可以提供幫助,,如GrammaTech CodeSentry,,可以分析第三方二進(jìn)制文件以發(fā)現(xiàn)缺陷和安全漏洞,,并生成軟件材料清單(SBOM)。

  總結(jié)

  NHTSA對(duì)存在軟件相關(guān)缺陷車輛的召回正在增加,,這表明汽車軟件開發(fā)需要加快改進(jìn)步伐,。然而,為汽車系統(tǒng)開發(fā)嵌入式軟件,,需要遵守嚴(yán)格的方法和承諾,,以增加安全和保障,改進(jìn)需要自上而下地進(jìn)行文化和流程的改變,。與此同時(shí),,還需要自下而上的改變,采用最佳實(shí)踐,,包括流程和編碼標(biāo)準(zhǔn)以及其他經(jīng)過驗(yàn)證的方法來提高代碼質(zhì)量,。

  引入高級(jí)靜態(tài)分析工具將有助于自動(dòng)執(zhí)行編碼標(biāo)準(zhǔn),更重要的是它們能在查找被其他驗(yàn)證測(cè)試活動(dòng)遺漏的缺陷方面發(fā)揮重要作用,,并且有助于開發(fā)人員理解和糾正代碼問題,。對(duì)軟件成分分析以及審查開源和第三方軟件的已知漏洞,并創(chuàng)建軟件物料清單 (SBOM) 會(huì)對(duì)降低軟件供應(yīng)鏈風(fēng)險(xiǎn)起到關(guān)鍵作用,。




本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]