電動汽車充電站管理系統(tǒng)安全分析
1、 背 景
近年來,新能源汽車數(shù)量正以極高的速度增長,截至2022年6月,我國純電車的保有量達(dá)到了八百余萬輛[2];電動車充電樁(EVCS)數(shù)量也在以極高的速度增長,根據(jù)國家能源局?jǐn)?shù)據(jù),2022年上半年全國充電樁數(shù)量增加了一百余萬臺[3]。為了便于用戶使用與供應(yīng)者的管理,大多數(shù)的充電站通過物聯(lián)網(wǎng)與充電站管理系統(tǒng)(EVCSMS)相連,并由充電站管理系統(tǒng)統(tǒng)一管理控制。暴露在互聯(lián)網(wǎng)中的充電站管理系統(tǒng)面對著巨大的威脅挑戰(zhàn),這些威脅主要來自系統(tǒng)設(shè)計過程中留下的漏洞,Tony等人主要結(jié)合網(wǎng)絡(luò)空間中存在的常見漏洞與攻擊方式對主流EVCSMS進(jìn)行分析,發(fā)現(xiàn)了可能存在的漏洞并總結(jié)了可能的攻擊。
二、分析方法
1. 充電站管理系統(tǒng)查找
Tony等人首先通過網(wǎng)絡(luò)搜索,檢索到EVCS相關(guān)制造商網(wǎng)頁、一些EVCSMS的OTA升級固件包以及一些相關(guān)開源協(xié)議項目,然后從固件、移動app以及協(xié)議三個層面對獲取到的數(shù)據(jù)包(安裝包)進(jìn)行深入的資產(chǎn)分析與安全漏洞分析,主要流程框架如圖 1所示。
圖 1 數(shù)據(jù)獲取分析框架
Tony等人主要通過關(guān)鍵詞查找,從5個廣泛部署的充電站管理系統(tǒng)(下稱EVCSMS)的官方網(wǎng)站獲取到了他們的固件和軟件更新包;這些EVCSMS的官網(wǎng)一般都提供了移動app的安裝包下載地址,為了方便分析,Tony等人只下載了他們提供的APK,最后確定并收集了3個EVCSMS移動應(yīng)用程序的信息,即ChargePoint、Go Electric和EV Connect的安裝包;最后,Tony等人通過不同搜索引擎,搜集了若干“電動汽車充電”相關(guān)的網(wǎng)頁。以上結(jié)果匯集如圖 2。
圖 2 搜集到的充電站管理系統(tǒng)信息
2. 資產(chǎn)分析
對固件的分析:從固件壓縮包中可以提取到Linux內(nèi)核鏡像、文件系統(tǒng)鏡像、BIN/ELF可執(zhí)行文件、Shell腳本等。在本地創(chuàng)建設(shè)備節(jié)點并掛載提取到的文件系統(tǒng),即可看到固件中的根目錄,從根目錄中可以提取到通用網(wǎng)關(guān)接口(CGI)程序cgi-bin,對cgi-bin進(jìn)行逆向分析,可以發(fā)現(xiàn)這個程序用于在EVCSMS上動態(tài)生成和管理web內(nèi)容,通過分析運行過程Tony等人發(fā)現(xiàn)了它存在的漏洞。
對移動APP的分析:APK文件是由Java編譯得來,所以這部分的分析相對簡單。主要是從APK文件中提取出DEX文件,使用開源軟件Dex2jar將DEX轉(zhuǎn)換成JAR文件,再通過Java反編譯工具JD GUI打開JAR文件即可看到源碼。
對Web APP的分析:由于網(wǎng)頁應(yīng)用是閉源的,所以只能進(jìn)行黑盒滲透測試它們存在的漏洞。Tony等人根據(jù)網(wǎng)頁獲取到Web根,使用爬蟲工具獲取到所有不需要身份驗證的可訪問端點。從JavaScript庫文件中獲取隱藏參數(shù),并通過嗅探工具探測HTTP請求以獲得隱藏的HTTP頭。
3. 漏洞分析
根據(jù)常見漏洞分析技術(shù)進(jìn)行深入的安全分析,比如開放式Web應(yīng)用程序安全項目(OWASP)測試指南,這部分的主要工作集中在如跨站點腳本(XSS)和結(jié)構(gòu)化查詢語言注入(SQLi)兩部分。
三、存在的漏洞
本部分總結(jié)了這些充電站管理系統(tǒng)中存在的幾個常見漏洞(圖 3),以及這些漏洞可能對充電設(shè)施、充電站的用戶等角色帶來的影響與危害。
圖 3 主流EVCSMS中存在的漏洞
1. 跨站腳本(XSS)
由于實驗對象中的大多數(shù)ECVSMS都缺少對用戶輸入的鑒別與編碼,這將給攻擊者XSS攻擊的機(jī)會。例如,在其中一款充電管理系統(tǒng)EVlink中,Tony等人在其通用網(wǎng)關(guān)接口的二進(jìn)制程序(cgi-bin)中發(fā)現(xiàn)了若干端口及其GET的請求參數(shù),這允許攻擊者將惡意的JavaScript注入到Web框架中。
XSS攻擊對充電設(shè)施將帶來難以估量的影響。攻擊者可以利用XSS將惡意JavaScript注入EVCSMS上下文,從而劫持目標(biāo)用戶的會話,進(jìn)而進(jìn)行許多非法操作。更可怕的是,當(dāng)攻擊者利用此漏洞獲取到管理員權(quán)限時,攻擊者將可以完全控制并管理EVCSMS的功能和數(shù)據(jù)。例如,Tony等人在EVlink中發(fā)現(xiàn)了一個配置初始化功能,該功能可用于CSV(一種逗號分隔值)注入,當(dāng)加載特制的CSV文件時,該功能可以用于嵌入XSS有效載荷,并將其存儲在系統(tǒng)數(shù)據(jù)庫中,甚至可以劫持管理員賬戶的會話進(jìn)而對后續(xù)操作提權(quán)。圖 4展示了Tony等人成功劫持管理員賬戶的會話。
此外,此XSS漏洞將運行攻擊者通過植入web shell,并定期從EVCSMS的遠(yuǎn)程服務(wù)器獲取和執(zhí)行JavaScript,以實現(xiàn)持久訪問。
圖 4 成功劫持管理員的會話令牌
2. SQL注入(SQLi)
SQL注入漏洞也是一個老生常談的漏洞了,導(dǎo)致此漏洞的原因有很多,但也基本都是缺少對代碼和數(shù)據(jù)的區(qū)分,且缺少身份認(rèn)證導(dǎo)致的。例如,BaSE EVMS和ICEMS上的身份驗證表單通過其POST參數(shù)都存在基于布爾和時間的盲SQLi缺陷,可以將其用作注入點,系統(tǒng)地執(zhí)行任意SQL查詢并轉(zhuǎn)儲存儲的EVCSMS數(shù)據(jù)庫表。圖 5展示了Tony等人轉(zhuǎn)儲到的數(shù)據(jù)庫信息,其中包含了用戶賬戶詳細(xì)信息“sys_user”和計費信息“invoice_record”的數(shù)據(jù)庫。
圖 5 ICEMS中的部分?jǐn)?shù)據(jù)庫
SQL注入攻擊帶來的影響也是很可怕的,包括對系統(tǒng)固件的影響與對平臺、用戶數(shù)據(jù)等的影響。大部分的充電設(shè)施都會用到OTA對固件升級,固件文件的校驗碼一般都存在于數(shù)據(jù)庫中。攻擊者可能會通過其他漏洞可以將合法固件更換成惡意固件,并利用SQL注入,將存在數(shù)據(jù)庫中正確固件校驗碼更換成惡意固件的校驗碼,導(dǎo)致充電設(shè)施下載到惡意固件后無法鑒別其真實性而安裝了惡意固件。這些惡意固件中可能被植入Rootkit(一種惡意軟件),以獲得持久和特權(quán)功能,進(jìn)而實現(xiàn)下一步攻擊。
借助SQL注入攻擊,攻擊者甚至可以更改平臺中的計費信息,比如修改圖 5中的“bluesky”數(shù)據(jù)庫中“sys_bill”和“sys_refund”表的內(nèi)容,它們分別包含計費和退款信息,這將給一些試圖逃費的惡意用戶利用的機(jī)會,給平臺帶來難以估量的經(jīng)濟(jì)損失。攻擊者還可以從數(shù)據(jù)庫中查詢到用戶的賬戶信息,其中不乏一些用戶的敏感信息,比如用戶的密碼、登錄活動、郵箱地址等。借助這些信息,攻擊者可以對用戶進(jìn)行針對性的進(jìn)一步攻擊,如黑郵件、騷擾和身份盜竊等。
3. 缺少身份認(rèn)證
例如,Tony等人在EVlink上發(fā)現(xiàn)了一個維護(hù)端點,它沒有強(qiáng)制執(zhí)行足夠的授權(quán),因此可能導(dǎo)致強(qiáng)制瀏覽攻擊(Forced Browsing Attacks)。事實上,攻擊者可以通過直接訪問此端點來繞過身份驗證,這可以授予攻擊者訪問和修改能源管理設(shè)置面板的權(quán)限,他們將能夠在其中查看用戶信息和充電過程詳細(xì)信息以及有關(guān)內(nèi)部系統(tǒng)的其他敏感信息(例如固件版本)。類似的,其他EVCSMS(如Keba、Ensto CSI和Garo CSI)也因其多個端點的身份驗證缺失而遭受信息泄露漏洞。例如,這可以使未經(jīng)身份驗證的對手了解有關(guān)底層EVCS狀態(tài)的信息,如圖 6所示。
圖 6 Ensto CSI上未經(jīng)認(rèn)證的EVCS狀態(tài)信息泄露
4. 硬編碼密鑰
Tony等人在三個基于移動APP的EVCSMS(即ChargePoint、Go和EV Connect)的Java源代碼中發(fā)現(xiàn)了硬編碼安全密鑰(例如,密碼密鑰)。這些密鑰用于通過一些對數(shù)據(jù)/通信進(jìn)行加密的操作,例如創(chuàng)建/注冊、身份驗證和信息更新。因此,通過獲取這些操作的源代碼,攻擊者可以編寫一些規(guī)避加密方案的算法,這些加密往往是針對用戶通信和數(shù)據(jù)的。攻擊者成功規(guī)避加密方案后就可以推斷出用戶的個人信息以及其他敏感數(shù)據(jù)(例如,帳戶憑據(jù)等)。
5. 其他
除以上列舉的幾個常見的、嚴(yán)重的,可能會對用戶和平臺帶來損失的漏洞外,Tony等人還闡述了其他幾種可能會對平臺或者電網(wǎng)帶來嚴(yán)重影響的安全漏洞,比如攻擊者可能購置/獲取大量的損壞的EVCS來構(gòu)建僵尸網(wǎng)絡(luò),用以發(fā)各種網(wǎng)絡(luò)攻擊,如DoS或網(wǎng)絡(luò)嗅探/偵察活動;又或者利用服務(wù)器端請求偽造(SSRF)漏洞,進(jìn)而發(fā)現(xiàn)EVCSMS網(wǎng)站內(nèi)網(wǎng)中的其他關(guān)鍵站點,或者利用SSRF漏洞從EVCSMS中提取信息,從而讀取存儲在EVCS文件系統(tǒng)上的任意文件和記錄日志等。
四、防御建議
本節(jié)Tony等人討論了系統(tǒng)開發(fā)人員/設(shè)計師可以實施的實際對策,以加強(qiáng)部署的EVCSMS,并減輕針對EVCS、其用戶和連接電網(wǎng)的進(jìn)一步網(wǎng)絡(luò)攻擊。針對圖 3中列舉的漏洞,Tony等人做出了相應(yīng)的防御措施,如圖 7所示。
圖 7 針對以上漏洞提出的防御建議
對于可篡改的HTTP參數(shù),開發(fā)者應(yīng)該盡可能地根據(jù)預(yù)編譯的有效值表過濾用戶輸入的參數(shù),并且對這些輸入進(jìn)行適當(dāng)?shù)牟眉?、編碼,以避免XSS攻擊。
為了緩解SQL注入攻擊,開發(fā)者應(yīng)該防止攻擊者通過在EVCSMS身份驗證表單中的易受攻擊參數(shù)上濫用字符串鏈接來執(zhí)行SQL查詢,比如使用參數(shù)化查詢來區(qū)分代碼和數(shù)據(jù)。
開發(fā)者應(yīng)該在所有端點上強(qiáng)制進(jìn)行身份驗證,防止攻擊者通過側(cè)端點上的直接或錯誤請求誘使EVCSMS無意泄漏敏感信息。
在固件或者移動APP中,開發(fā)者應(yīng)避免使用固定的密鑰(嵌入式密鑰),應(yīng)動態(tài)地為每個客戶端創(chuàng)建臨時密鑰,并使用安全的連接(如TLS)給客戶端傳輸,從而避免因固件、APP被攻擊者逆向而泄露。
五、總 結(jié)
在電動汽車蓬勃發(fā)展的今天,充電設(shè)施的廣泛部署給人們帶來了巨大的便利,在充電設(shè)施的部署和生產(chǎn)設(shè)計過程中,網(wǎng)絡(luò)安全是不可忽視的一環(huán)。本文中,Tony等人闡述了他們收集EVCS固件、移動、Web APP的過程,并通過分析這類EVCSMS,發(fā)現(xiàn)了它們存在著嚴(yán)重的漏洞,從而使整個層級處于網(wǎng)絡(luò)攻擊的高風(fēng)險之中。隨后,Tony等人闡明了利用已識別漏洞進(jìn)行網(wǎng)絡(luò)攻擊的可行性,并提出了一系列切實可行的對策,幫助確保現(xiàn)有系統(tǒng)的安全,并對新系統(tǒng)的設(shè)計和實施提出了建議,同時為開發(fā)人員、最終用戶和電網(wǎng)運營商提供安全指南和最佳實踐。
參考文獻(xiàn)
[1] Nasr T, Torabi S, Bou-Harb E, et al. Power jacking your station: In-depth security analysis of electric vehicle charging station management systems[J]. Computers & Security, 2022, 112: 102511.
[2] 任沁沁, 陳宇軒, 范小林. 新能源汽車“上量”發(fā)展勢頭強(qiáng)勁[N]. 經(jīng)濟(jì)參考報, 2022-07-08(007).
[3] 高偉. 充電樁市場規(guī)??焖偬嵘?上市公司加碼布局[N]. 經(jīng)濟(jì)參考報, 2022-08-05(003).
聲 明
本文總結(jié)自Tony等的論文《Power jacking your station: In-depth security analysis of electric vehicle charging station management systems》,部分觀點翻譯自原文章,可能與原文有些許出入,請以原文為準(zhǔn)。