開發一款安全性良好的軟件是困難的,它需要專業知識的積累以及對常見編程缺陷和規則的了解,例如檢查輸入范圍、管理內存分配和回收、尋址字符串格式、避免懸空指針等等。通常情況下,編寫安全代碼與開發人員編寫“流暢”代碼的自然愿望形成了對比,開發人員更希望將編寫代碼的精力集中在正確的業務邏輯上,而非集中于保證編寫的每一行代碼是否安全上。
在日常實踐中,大多數軟件的漏洞源于一小部分編碼錯誤,經過多年的開發實踐均能得到改善。平均來看,每1000行代碼中仍然存在40-70個錯誤,這些錯誤中的一部分將導致可利用的安全問題,而這也是行業中普遍存在的問題。但是對于部署了數千萬行代碼的產品而言,這可能很快就會導致系統安全性受損。
漏洞通常被定義為 “一個可以被不法分子利用的缺陷”。如果把漏洞透明化的概念引入軟件世界就很容易受到啟發,比如在汽車產品本身安全的情況下,產品被部署到在設計上就不安全的環境中使用會發生什么情況呢?這將導致產品安全難以得到保證。作為制造商,你無法控制你的產品在哪里被使用、如何被使用、它們將與哪些系統連接、誰在使用它們、或者誰可能獲得對它們的訪問,無論是有意還是惡意的。在這種環境下,管理代碼中的漏洞這一任務就變得至關重要。
那么汽車行業的安全挑戰都有哪些呢?
· 開發慣例
汽車軟件開發大約已有50年的歷史,汽車的生命周期至少是12年,汽車平臺每5-7年就會更換一次,但大部分遺留的硬件和軟件都是從一個平臺轉移到另一個平臺。汽車開發人員主要使用C和C++作為開發語言,雖然這兩種語言靈活性很高,但是它們從設計上就不安全,也沒有提供任何可以防止將安全漏洞引入系統的保護措施。盡管通過引入編碼標準(如MISRA-C)已經做了一些工作來確保編碼的安全性,但這些指導方針很難強制執行,并且在一些富操作系統中遵守這些指導方針是不現實的。
· 供應鏈
汽車行業的分布式開發實踐是獨特的,它有多層的供應商,每個供應商都為更高層次的系統集成提供軟件集成。一輛汽車可能有50-150個不同的計算單元,由10-20個不同的供應商提供。而供應商提供的這50-150個不同的計算單元中,每個組件可能又有多個CPU、幾十個外圍硬件組件和大量的軟件包。有了這么多第三方代碼,且考慮到OEM實際上只負責實際編碼的一小部分,這也就使得軟件的不透明性成為常態,令制造商很難評估其安全性。
· 開源軟件(OSS)
面對日益增長的客戶需求,更快、更靈活的開發模式驅動成為眾望所歸,原始設備制造商和供應商越來越多地引入開源軟件,并整合了大量的開源庫。這種對開源軟件的依賴導致了另一個安全問題的惡化。
那么面對這些問題,如何監管才有效呢?
近幾年來,汽車行業內相繼發布了多項標準,ISO/SAE21434是SAE J3061的延伸、聯合國歐洲經濟委員會(UNECE)、WP.29車輛法規協調工作小組也制定了法規以滿足OEM和制造商的需求:當涉及到汽車網絡安全時,OEM和制造商必須滿足法規要求后才能頒發汽車型號認證,否則汽車就不能出售。ISO標準和WP.29的工作都包括一項指令,即在汽車生命周期中持續管理和監測漏洞。
擁有一個明確和規范的流程是推動車輛安全狀況改善的一大步。但僅有流程是不夠的,仍需要汽車行業自身進行安全數字化轉型。在軟件日益復雜的現實中,規模化管理漏洞帶來了多種挑戰。
· 可見性
按照傳統來講,汽車工業是根據功能部件的概念來進行組織的。因此,原始設備制造商已經優化了內部資產管理系統來管理供應商的零件,但這些零件的內部軟件組成卻很少可見。這些系統在管理硬件組件(以及機械部件)級別的復雜供應鏈分配方面非常出色,但在軟件級別的問題上卻收效甚微。通常情況下,產品安全團隊面臨的最大挑戰是需要深入了解系統上的漏洞和威脅,而它們很少有內部可見性。
· 相關性
另一個挑戰是 "去除噪音"。NVD是軟件漏洞的主要來源,每年有超過16,000個CVE,其中90%以上在汽車行業沒有應用。但如果沒有先進的軟件將數據與實際的車輛聯系起來,安全團隊就會花費相當多的時間來處理成千上萬的漏洞,最終很有可能面對的是大部分漏洞和當前產品不相關的窘境。
· 可追溯性
在一個組件或開發程序中發現的漏洞很可能與其他組件或開發程序有關,但由于團隊可能是在孤軍奮戰,無法在多個項目之間協調程序,對于安全同事而言很難了解其整個開發范圍。
· 可操作性
安全團隊的一項關鍵任務是管理開發工作,以消除漏洞并不斷改進系統的狀態。對于不同的個人和完全不同的組織結構,如果不以有組織和可擴展的方式進行管理,管理難度會很大。
以上談到的所有挑戰都強調了汽車行業安全數字化轉型的必要性。從業者們逐漸認識到“人+機器”的方法對于保持安全所需的規模的重要性,同時也認識到了引入自動化技術實施標準和法規要求的信息安全活動對于推動行業安全數字化發展的利害。
經緯恒潤針對ISO/SAE 21434、WP.29 R155等法規進行了深入研究,結合多年功能安全、信息安全經驗,可以為客戶提供信息安全全流程解決方案。依托自動化工具和咨詢服務,助力客戶建立完備的信息安全流程體系,在信息安全設計、軟件開發、硬件設計、漏洞掃描、測試驗證方面為客戶賦能,保證軟件源碼級、部件級以及整車層面的安全。