發布日期:2022-04-17 點擊率:113
之前關注了許多功能安全內容,這次我們來聊聊信息安全(Cyber Security)。
信息安全也叫網絡安全,國際標準化組織(ISO)的定義是“為數據處理系統建立和采取技術、管理的安全保護,保護計算機硬件、軟件、數據不因偶然的或惡意的原因而受到破壞、更改、泄露”。
它與功能安全(Function Safety)有什么區別和關聯呢?
信息安全與功能安全
下圖直觀的展示了兩者的區別,功能安全問題側重系統本身發生故障導致對環境(包括人身)產生的危害;信息安全問題側重系統存在漏洞導致對外界攻擊的防御能力下降。對于高完整性系統而言,功能安全往往會首要考慮,再依據與外界交互的特點引入信息安全考量。
信息安全中所謂的漏洞具體是怎么樣的?讓我們通過回顧著名的心血漏洞(HeartBleed)事件來加以說明。
心血漏洞事件還原
心血漏洞于2014年4月首次向公眾披露,號稱本世紀最嚴重的安全漏洞事件,涉及全球三分之二的網站。事情的起因在于被各大網站廣泛使用的開源網絡通信加密協議 OpenSSL,
其原理是當使用基于 OpenSSL 通信的雙方建立安全連接后,客戶端需要不斷的發送心跳信息(如固定長度的字符串)到服務器,服務器接收后返回該固定長度的字符串, 從而確認服務器是可用的。
客戶端向服務器發送的心跳信息包含了數據長度和待傳輸數據信息,理論上服務器端 OpenSSL 應該回傳與該數據長度一致的信息。然而由于 OpenSSL 代碼的缺陷(漏洞),客戶端可以從服務器獲取遠超其權限內容的數據信息,其中有可能就包含如信用卡賬號和密碼等敏感信息。
我們用一段簡化程序(注1)來模擬這個過程,在以下程序中代碼 1 處構建了客戶端發送的心跳信息,但是數據長度信息(100)大于實際有效數據(4,即‘data’),代碼 2 處和 OpenSSL 協議類似使用 memcpy 函數將與數據長度信息一致的數據寫入回傳數據包中。
程序運行結果如下,我們看到回傳的數據包含了心跳包數據之外的信息,成為安全漏洞的來源。
類似信息安全問題如何預防呢?我們可以用代碼驗證工具 Polyspace 對源代碼事先進行一下分析,結果如下:
Polyspace 指出了 memcpy 函數使用的問題,即源數據段長度與指定數據長度不一致,并在幫助文檔中列出了其與信息安全漏洞庫 CWE(Common Weakness Enumeration)對應的 ID。程序中的另一個缺陷,動態內存未被釋放造成內存泄露問題也在程序末尾指出。
修復這個漏洞很簡單,在 memcpy 之前加上對有效數據長度(payload)的檢測即可。
發現問題即解決了問題的大部分,好的流程和工具是應對信息安全的有力保證。心血漏洞事件主要波及互聯網領域,嵌入式系統是否也有信息安全的隱憂呢?
嵌入式系統與信息安全
以汽車行業為例,傳統的汽車電子電器架構相對封閉,與外界的通信主要是 OBD 診斷接口,隨著智能網聯技術的發展,汽車逐漸成為萬物互聯的節點,信息安全的重要性不斷提升。
2015 年某車型的信息安全漏洞召回事件使該年被稱為成為汽車信息安全元年。兩名白帽黑客通過無線通訊連入該車的車聯網系統,繼而破解了與車聯網系統相連的 CAN 總線網絡,獲取了向其發送指令的權限得以對發動機、變速箱、制動、轉向等系統進行控制。該入侵因沒有通過 OBD 等物理接口連入而使得汽車信息安全受到廣泛關注。
結語
面對越來越開放互聯的世界,助力高可靠安全的嵌入式系統開發始終是我們的目標,不知道您否已經把信息安全的考量提上了日程?更多關于嵌入式信息安全和代碼靜態分析的內容可以點擊“閱讀原文”參見 Polyspace 產品主頁。
下一篇: PLC、DCS、FCS三大控
上一篇: 中國自主可免費使用的