現代Ioniq車載系統固件更新機制被曝使用了易被破解的示例密鑰
近日,一位網名叫“greenluigi1”的開發者發現,現代汽車從公開的示例編程項目中藉用了密鑰來保護其係統,以在車載信息娛樂硬件上運行自家的軟件。起初他只是為了自行修改2021 款現代Ioniq SEL 車型的車載信息娛樂(IVI)系統,所以設法深入了解如何連接到設備、並繞過其安全防護措施。
讓人沒想到的是,這位開發者竟然只使用了Google 搜索引擎,就找到了現代旗下Hyundai Mobis 製造的D-Audio2 系統定制固件的一個重大漏洞。
The Register指出,由於車載信息娛樂系統(IVI)接受基於密碼保護的ZIP 壓縮包的固件更新文件。
因此人們能夠繞過這套簡單的存檔防護措施來訪問相關內容,包括IVI 各個組件的加密固件鏡像。
接著開發者設法創建了自己的固件鏡像,以車載系統能夠接受、安裝和運行的ZIP 文件格式對其進行加密,從而允許通過黑客提供的代碼來控制硬件。
截圖(來自:Programming With Style)
期間最幸運的,就是“greenluigi1”在Mobis 網站上找到了一個Linux 安裝腳本—— 該腳本旨在創建一個合適的ZIP 文件來執行系統更新。
該腳本包括了系統檔案所需的ZIP 密碼、AES 對稱密碼塊鏈(CBC)的加密密鑰—— 單個密鑰、而不是RSA 非對稱公鑰/ 私鑰對)—— 以及初始化向量(IV 值)來加密固件鏡像。
與此同時,該信息還可用於解密鏡像,意味著greenluigi1 能夠借助AES 密鑰來解包、修改,然後通過官方腳本來重新打包加密為ZIP 格式的壓縮包、並用於現代IVI 的系統更新。
當然,實際操作還是沒有看起來這麼簡單。至少提供數據的某些部分,仍需使用RSA 私鑰進行加密簽名。
此外更新程序需要使用私鑰對應的RSA 公鑰,來檢查數據是否使用了正確的私鑰簽名——這意味著greenluigi1 需要找到RSA 私鑰才能進一步深入。
在五月的一篇博客文章中,他解釋稱—— 腳本暗示其正在使用RSA 簽名,遺憾的是該密鑰不包含在源碼中。
然而更大的烏龍是,原腳本中的AES 加密密鑰,竟指向了NIST 文檔SP800-38A【PDF】中列出的首個AES 128 位CBC 示例密鑰。
儘管加密社區普遍意識到CBC 很難被妥善部署,因此建議換用其它方法,但這家車企竟然還是這麼做了。
此外微軟去年警告稱:基於已知的密碼學研究,在應用可驗證填充、而沒有首先確保密文完整性的情況下,如非極其特殊的情況、CBC 模式加密的數據已不再安全。
由於現代錯誤地使用了AES CBC 方案和另一個在線發布的密鑰作為私鑰,greenluigi1 得以使用該對稱密鑰,提取更新ZIP 包中的一個加密固件映像文件的內容。
在提取的文件中,他找到了處理IVI 更新的軟件(一個名為updateAgent 的二進製文件)。
加密的zip 壓縮包
在擁有zip 密碼和加密密鑰的基礎上,他決定繼續尋找簽名密鑰。幸運的是,該公司不僅留下了公鑰、甚至還把私鑰都晾出來了。
在一連串的好運加持下,greenluigi1 在固件映像中找到了更新程序使用的RSA 公鑰,並在線搜索了該密鑰的一部分。
文件列表
搜索結果指向一個常見的公鑰,且它出現在《RSA Encryption & Decryption Example with OpenSSL in C》之類的線上教程中”。
這意味著現代“實習生”直接套用了教程中的公鑰密鑰對,並將公鑰塞進了源碼中。
從而使得greenluigi1 追溯到配對的私鑰,最終簽署可讓IVI 接納的自定義固件的更新程序。
對於此事,截止發稿時,現代汽車方面尚未回應外媒的置評請求。