文:岡 健五,譯:??W(wǎng)
針對(duì)車載網(wǎng)絡(luò)安全,傳統(tǒng)車載系統(tǒng)的開發(fā)流程需要做一些變更。而且要針對(duì)該車載系統(tǒng)的安全等級(jí)有一個(gè)測評(píng)的機(jī)制。
美國自動(dòng)機(jī)協(xié)會(huì)(SAE)正在對(duì)網(wǎng)絡(luò)安全相關(guān)的規(guī)程《J3061:信息物理汽車系統(tǒng)網(wǎng)絡(luò)安全指南(Cybersecurity Guidebook for Cyber-Physical Vehicle Systems)》進(jìn)行研究,已于2016年1月發(fā)布該指南。規(guī)程最小化限制了車載系統(tǒng)被惡意利用的可能性,并提供了執(zhí)行需求功能的復(fù)雜系統(tǒng)設(shè)計(jì)方法。
另外,在美國召開的車載網(wǎng)絡(luò)安全會(huì)議(escar USA 2015)上Robert Bosch發(fā)布了Bosch SEP(Security Engineering Process)車載網(wǎng)絡(luò)安全工程流程。BoschSEP中定義了三個(gè)階段。簡單的說,第一階段是在產(chǎn)品的概念、系統(tǒng)架構(gòu)設(shè)計(jì)時(shí)定義網(wǎng)絡(luò)安全目標(biāo)。第二階段是分析攻擊的風(fēng)險(xiǎn)、漏洞,以及已知的攻擊或威脅的場景,最后對(duì)結(jié)果和風(fēng)險(xiǎn)進(jìn)行評(píng)價(jià)審查。第三階段是以安全需求為核心,定義可接受的風(fēng)險(xiǎn)標(biāo)準(zhǔn)以及網(wǎng)絡(luò)安全需求,并以此需求為核心作成客戶需求規(guī)范。
目前已經(jīng)知道造成網(wǎng)絡(luò)安全問題的原因中50%以上是實(shí)施缺陷。典型的例子包括緩存溢出,索引/整數(shù)溢出、錯(cuò)誤處理不當(dāng)?shù)取R虼税踩幋a非常重要。
實(shí)施缺陷的原因多數(shù)是開發(fā)者安全培訓(xùn)不足,對(duì)復(fù)雜規(guī)范和標(biāo)準(zhǔn)(包括Safety和Security標(biāo)準(zhǔn))的正確理解不足。因此,需要safe-secure的編碼規(guī)范。Bosch-SEP還討論了滲透測試和fuzz測試等安全測試方法。這些后面會(huì)稍作詳細(xì)說明。
最近引起關(guān)注的是嵌入式安全評(píng)估(Embedded Security Evaluations).比如針對(duì)ECU這樣的車載系統(tǒng),在開發(fā)初期就做大量的安全評(píng)審,從而改善安全漏洞,防止攻擊者利用這些漏洞帶來經(jīng)濟(jì)上的損失和安全性方面的破壞。基本的安全性評(píng)價(jià)包括理論和應(yīng)用兩類。
理論安全分析(TheoreticalSecurity Analysis)在車輛整個(gè)開發(fā)周期內(nèi)都能夠并應(yīng)該執(zhí)行。原則上,理論分析在開發(fā)階段中越早開始越好。實(shí)際安全安全性測試(Practical Security Testing)只有在系統(tǒng)實(shí)施(比如試驗(yàn)品)之后才可以執(zhí)行。
理論安全分析的實(shí)例包括設(shè)計(jì)分析、威脅和風(fēng)險(xiǎn)分析。設(shè)計(jì)分析是基于車載系統(tǒng)的概述進(jìn)行的概要分析。設(shè)計(jì)分析的最終目的是在系統(tǒng)開發(fā)周期的早期確定系統(tǒng)級(jí)的缺陷。例如,找到脆弱的加密算法,標(biāo)準(zhǔn)協(xié)議之間的脆弱處理等易受攻擊的地方。
車載系統(tǒng)的詳細(xì)描述文檔存在的話,可以對(duì)威脅和風(fēng)險(xiǎn)進(jìn)行深入的分析。在系統(tǒng)開發(fā)最開始就能夠進(jìn)行徹底的分析,確定出設(shè)想的潛在攻擊。每種潛在攻擊的時(shí)間、攻擊者的專業(yè)知識(shí)、需要的設(shè)備、目標(biāo)系統(tǒng)的侵入方法等都可以評(píng)價(jià)。
更進(jìn)一步,各個(gè)攻擊可能造成的潛在損失,可以基于經(jīng)濟(jì)損失,使用損失,安全損失做出評(píng)價(jià)。在考慮每種攻擊的潛在攻擊和破壞潛力基礎(chǔ)上,每可以計(jì)算出種攻擊的風(fēng)險(xiǎn)值。高風(fēng)險(xiǎn)值的安全漏洞,必須在任何情況下優(yōu)先解決。
但是理論安全分析不能發(fā)現(xiàn)實(shí)施缺陷,找不到規(guī)范和實(shí)施之間的差異。為了降低實(shí)施上的風(fēng)險(xiǎn),要采用安全軟件開發(fā)流程。
當(dāng)然,即使采用了最好的開發(fā)方法,實(shí)施的時(shí)候可能也會(huì)有漏洞。通過安全性測試使進(jìn)行攻擊測試可以發(fā)現(xiàn)這些漏洞。安全性測試越深入,越能發(fā)現(xiàn)未定義的功能或者與規(guī)范不一致的點(diǎn)。安全性測試可以發(fā)現(xiàn)目標(biāo)系統(tǒng)實(shí)際使用中被攻擊的難度有多大。
図3 實(shí)際安全性測試的分類典型的安全性測試由4個(gè)步驟組成。第一步是通過功能安全測試,重點(diǎn)驗(yàn)證目標(biāo)系統(tǒng)所有的安全相關(guān)功能的穩(wěn)定且正常工作。這一步可以發(fā)現(xiàn)和安全漏洞關(guān)聯(lián)的實(shí)施錯(cuò)誤、規(guī)范不一致、未定義功能等。
第二步叫做漏洞掃描。針對(duì)目標(biāo)系統(tǒng),進(jìn)行已知的常規(guī)漏洞檢查。例如已知的安全漏洞,不正常設(shè)置等。
第三步是深入挖掘,重點(diǎn)找出未知的安全漏洞。這一步也叫作fuzzing,向目標(biāo)系統(tǒng)發(fā)送異?;蛘吲c規(guī)范不一致的輸入,并對(duì)系統(tǒng)進(jìn)行監(jiān)測。然后確認(rèn)是否有異常。使用CAN的fuzzing,檢車目標(biāo)ECU的動(dòng)作非常困難。因?yàn)槎鄶?shù)情況下發(fā)送的CAN消息不要求ECU回復(fù)??墒?,其使用監(jiān)測功能,提出了改良CAN的fuzzing的方法。比如通過執(zhí)行內(nèi)存檢查確認(rèn)重要的值有沒有被覆蓋,設(shè)置一個(gè)新的斷點(diǎn)確認(rèn)執(zhí)行了代碼的哪個(gè)部分。
第四步是侵入目標(biāo)系統(tǒng)的軟件和硬件,重點(diǎn)對(duì)系統(tǒng)的整體進(jìn)行測試。實(shí)驗(yàn)者模擬優(yōu)秀的攻擊者,測試全部已知的安全漏洞。試驗(yàn)者根據(jù)多年積累的經(jīng)驗(yàn),采用逆向工程、重要數(shù)據(jù)抽取、軟硬件結(jié)合法等進(jìn)行更加復(fù)雜的攻擊。比如,利用硬件調(diào)試接口的漏洞讀取內(nèi)存的一部分信息,再結(jié)合軟件攻擊獲取秘鑰或其他重要數(shù)據(jù)等。
但是,必須注意,安全性測試,尤其是fuzzing侵入測試,想要窮盡所有可能的攻擊是非常難的。在無法覆蓋全的情況下,必須決定測試時(shí)間、資源和費(fèi)用花在哪些測試范圍。當(dāng)然,很有可能這些測試還是漏掉了重大的系統(tǒng)缺陷。安全性測試不能取代理論安全分析,要實(shí)現(xiàn)完全的安全測試,應(yīng)該通過理論安全分析來覆蓋。
如之前所述,有必要在早期,改善整個(gè)軟件開發(fā)流程,以使攻擊范圍最小化。而且還要在開發(fā)周期的每一個(gè)階段添加網(wǎng)絡(luò)安全。
聯(lián)系客服