軟件開發(fā)人員用谷歌搜索突破現(xiàn)代汽車安全防線
一位開發(fā)人員近日表示,在發(fā)現(xiàn)這款汽車的制造商使用不僅公之于眾,還從編程示例照搬的密鑰來保護系統(tǒng)后,他能夠在其汽車信息娛樂硬件上運行自己編寫的軟件。
明尼蘇達州明尼阿波利斯市的軟件工程師Daniel Feldman想改動其2021年款現(xiàn)代艾尼氪(Ioniq)SEL上的車載信息娛樂(IVI)系統(tǒng)。為此,他必須弄清楚如何連接到該系統(tǒng),并繞過安全防線。
Feldman設法弄清楚了如何定制 IVI的D-Audio2系統(tǒng)(由現(xiàn)代汽車公司的移動平臺子公司現(xiàn)代摩比斯制造)的固件更新版,并讓IVI接受定制的更新版,隨后找到了一個讓人意料不到的法子:通過谷歌搜索。
IVI接受受密碼保護的ZIP存檔這種形式的固件更新版。Feldman從現(xiàn)代官網(wǎng)下載了更新ZIP,繞過了該存檔文件的簡單密碼保護機制,訪問其內(nèi)容,內(nèi)容包括IVI各個部分的加密固件映像。
隨后,他的目標變成了創(chuàng)建自己的固件映像,并在ZIP內(nèi)以汽車會接受、安裝和運行的方式對其加密,從而使他能夠通過自己提供的代碼控制硬件。
幸運的是,F(xiàn)eldman在摩比斯的官網(wǎng)上找到了Linux安裝腳本,該腳本創(chuàng)建了一個合適的ZIP文件,用于執(zhí)行系統(tǒng)更新。
該腳本包含系統(tǒng)更新存檔文件必不可少的ZIP密碼,以及AES對稱密碼塊鏈(CBC)加密密鑰(單個密鑰,而不是RSA非對稱公鑰/私鑰對)和用來加密固件映像的IV(初始化向量)值。
該信息還可以用于解密映像。
這意味著他可以使用AES密鑰來解密固件映像,修改它們,然后使用腳本用AES密鑰重新加密映像,并將其全部打包到受密碼保護的ZIP中,供現(xiàn)代IVI更新系統(tǒng)獲取。
但這不會那么容易:至少,所提供數(shù)據(jù)的一些部分需要用RSA私鑰進行加密簽名,而Feldman沒有RSA私鑰。更新程序?qū)⑹褂盟借€對應的RSA公鑰來檢查數(shù)據(jù)是否使用正確的秘密私鑰來簽名。
因此,他需要找到RSA私鑰才能執(zhí)行下一步。
Feldman在早在5月份的一篇博文中解釋道:“該腳本暗示使用的是RSA簽名,但遺憾的是,用于簽名的密鑰不在源代碼中。”
他補充道:“后來發(fā)現(xiàn),該腳本中的[AES]加密密鑰居然就是NIST文檔SP800-38A(https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf)中列出的第一個AES 128位CBC示例密鑰。”
順便插一句,加密界的共識似乎是CBC很難正確使用,而是建議使用其他方法。微軟去年警告,使用填充加密(padding)的AES CBC可能并不安全。
微軟聲稱:“微軟認為,在不先確保密文完整性就采用可驗證填充的情況下,解密使用對稱加密的密碼塊鏈(CBC)模式加密的數(shù)據(jù)不再安全,除了非常特殊的情況外。這一判斷基于目前已知的密碼學研究?!?/p>
但是現(xiàn)代公司犯的錯不在于錯誤實現(xiàn)AES CBC,而在于它使用網(wǎng)上發(fā)布的另一個密鑰作為機密信息。
有了這個對稱密鑰,F(xiàn)eldman 就能從更新 ZIP內(nèi)的其中一個加密固件映像文件提取內(nèi)容。
他在提取的文件中找到了處理IVI更新的軟件,一個名為updateAgent的二進制文件。換句話說,F(xiàn)eldman現(xiàn)正在查看他需要操控的代碼,即其車內(nèi)IVI中的更新工具,這給了他操控代碼的大好機會。
Feldman解釋道:“由于我已經(jīng)有了zip密碼和加密密鑰,于是決定尋找簽名密鑰。幸運的是,他們不僅留下了公鑰,還留下了私鑰。”
可以說,F(xiàn)eldman好運連連。他在固件映像中找到了更新程序使用的RSA公鑰,于是上網(wǎng)搜索該密鑰的一部分。搜索結(jié)果指向了一個常見的公鑰,該公鑰出現(xiàn)在了《C使用OpenSSL進行RSA加密和解密示例》(http://hayageek.com/rsa-encryption-decryption-openssl-c/)之類的教程中。
該教程及其他實現(xiàn)OpenSSL的項目在源代碼中附有這個公鑰和相應的RSA私鑰。
這意味著現(xiàn)代公司使用了教程中的公私密鑰對,并將公鑰放入其代碼中,F(xiàn)eldman因而得以從網(wǎng)上查到該私鑰。 因此,他能夠簽名現(xiàn)代公司的文件,并讓更新程序接受這些文件。
至此,F(xiàn)eldman就有機會為其汽車的IVI編寫自定義固件,他在隨后發(fā)在網(wǎng)上的兩篇文章中作了描述。他還為其他現(xiàn)代車主總結(jié)了其方法(https://programmingwithstyle.com/posts/howihackedmycarguidescreatingcustomfirmware/)。
現(xiàn)代公司尚未回應置評請求。
參考及來源:https://www.theregister.com/2022/08/17/software_developer_cracks_hyundai_encryption/如若轉(zhuǎn)載,請注明原文地址。