電動(dòng)汽車(chē)充電站管理系統(tǒng)安全分析
1、 背 景
近年來(lái),新能源汽車(chē)數(shù)量正以極高的速度增長(zhǎng),截至2022年6月,我國(guó)純電車(chē)的保有量達(dá)到了八百余萬(wàn)輛[2];電動(dòng)車(chē)充電樁(EVCS)數(shù)量也在以極高的速度增長(zhǎng),根據(jù)國(guó)家能源局?jǐn)?shù)據(jù),2022年上半年全國(guó)充電樁數(shù)量增加了一百余萬(wàn)臺(tái)[3]。為了便于用戶(hù)使用與供應(yīng)者的管理,大多數(shù)的充電站通過(guò)物聯(lián)網(wǎng)與充電站管理系統(tǒng)(EVCSMS)相連,并由充電站管理系統(tǒng)統(tǒng)一管理控制。暴露在互聯(lián)網(wǎng)中的充電站管理系統(tǒng)面對(duì)著巨大的威脅挑戰(zhàn),這些威脅主要來(lái)自系統(tǒng)設(shè)計(jì)過(guò)程中留下的漏洞,Tony等人主要結(jié)合網(wǎng)絡(luò)空間中存在的常見(jiàn)漏洞與攻擊方式對(duì)主流EVCSMS進(jìn)行分析,發(fā)現(xiàn)了可能存在的漏洞并總結(jié)了可能的攻擊。
二、分析方法
1. 充電站管理系統(tǒng)查找
Tony等人首先通過(guò)網(wǎng)絡(luò)搜索,檢索到EVCS相關(guān)制造商網(wǎng)頁(yè)、一些EVCSMS的OTA升級(jí)固件包以及一些相關(guān)開(kāi)源協(xié)議項(xiàng)目,然后從固件、移動(dòng)app以及協(xié)議三個(gè)層面對(duì)獲取到的數(shù)據(jù)包(安裝包)進(jìn)行深入的資產(chǎn)分析與安全漏洞分析,主要流程框架如圖 1所示。

圖 1 數(shù)據(jù)獲取分析框架
Tony等人主要通過(guò)關(guān)鍵詞查找,從5個(gè)廣泛部署的充電站管理系統(tǒng)(下稱(chēng)EVCSMS)的官方網(wǎng)站獲取到了他們的固件和軟件更新包;這些EVCSMS的官網(wǎng)一般都提供了移動(dòng)app的安裝包下載地址,為了方便分析,Tony等人只下載了他們提供的APK,最后確定并收集了3個(gè)EVCSMS移動(dòng)應(yīng)用程序的信息,即ChargePoint、Go Electric和EV Connect的安裝包;最后,Tony等人通過(guò)不同搜索引擎,搜集了若干“電動(dòng)汽車(chē)充電”相關(guān)的網(wǎng)頁(yè)。以上結(jié)果匯集如圖 2。

圖 2 搜集到的充電站管理系統(tǒng)信息
2. 資產(chǎn)分析
對(duì)固件的分析:從固件壓縮包中可以提取到Linux內(nèi)核鏡像、文件系統(tǒng)鏡像、BIN/ELF可執(zhí)行文件、Shell腳本等。在本地創(chuàng)建設(shè)備節(jié)點(diǎn)并掛載提取到的文件系統(tǒng),即可看到固件中的根目錄,從根目錄中可以提取到通用網(wǎng)關(guān)接口(CGI)程序cgi-bin,對(duì)cgi-bin進(jìn)行逆向分析,可以發(fā)現(xiàn)這個(gè)程序用于在EVCSMS上動(dòng)態(tài)生成和管理web內(nèi)容,通過(guò)分析運(yùn)行過(guò)程Tony等人發(fā)現(xiàn)了它存在的漏洞。
對(duì)移動(dòng)APP的分析:APK文件是由Java編譯得來(lái),所以這部分的分析相對(duì)簡(jiǎn)單。主要是從APK文件中提取出DEX文件,使用開(kāi)源軟件Dex2jar將DEX轉(zhuǎn)換成JAR文件,再通過(guò)Java反編譯工具JD GUI打開(kāi)JAR文件即可看到源碼。
對(duì)Web APP的分析:由于網(wǎng)頁(yè)應(yīng)用是閉源的,所以只能進(jìn)行黑盒滲透測(cè)試它們存在的漏洞。Tony等人根據(jù)網(wǎng)頁(yè)獲取到Web根,使用爬蟲(chóng)工具獲取到所有不需要身份驗(yàn)證的可訪(fǎng)問(wèn)端點(diǎn)。從JavaScript庫(kù)文件中獲取隱藏參數(shù),并通過(guò)嗅探工具探測(cè)HTTP請(qǐng)求以獲得隱藏的HTTP頭。
3. 漏洞分析
根據(jù)常見(jiàn)漏洞分析技術(shù)進(jìn)行深入的安全分析,比如開(kāi)放式Web應(yīng)用程序安全項(xiàng)目(OWASP)測(cè)試指南,這部分的主要工作集中在如跨站點(diǎn)腳本(XSS)和結(jié)構(gòu)化查詢(xún)語(yǔ)言注入(SQLi)兩部分。
三、存在的漏洞
本部分總結(jié)了這些充電站管理系統(tǒng)中存在的幾個(gè)常見(jiàn)漏洞(圖 3),以及這些漏洞可能對(duì)充電設(shè)施、充電站的用戶(hù)等角色帶來(lái)的影響與危害。

圖 3 主流EVCSMS中存在的漏洞
1. 跨站腳本(XSS)
由于實(shí)驗(yàn)對(duì)象中的大多數(shù)ECVSMS都缺少對(duì)用戶(hù)輸入的鑒別與編碼,這將給攻擊者XSS攻擊的機(jī)會(huì)。例如,在其中一款充電管理系統(tǒng)EVlink中,Tony等人在其通用網(wǎng)關(guān)接口的二進(jìn)制程序(cgi-bin)中發(fā)現(xiàn)了若干端口及其GET的請(qǐng)求參數(shù),這允許攻擊者將惡意的JavaScript注入到Web框架中。
XSS攻擊對(duì)充電設(shè)施將帶來(lái)難以估量的影響。攻擊者可以利用XSS將惡意JavaScript注入EVCSMS上下文,從而劫持目標(biāo)用戶(hù)的會(huì)話(huà),進(jìn)而進(jìn)行許多非法操作。更可怕的是,當(dāng)攻擊者利用此漏洞獲取到管理員權(quán)限時(shí),攻擊者將可以完全控制并管理EVCSMS的功能和數(shù)據(jù)。例如,Tony等人在EVlink中發(fā)現(xiàn)了一個(gè)配置初始化功能,該功能可用于CSV(一種逗號(hào)分隔值)注入,當(dāng)加載特制的CSV文件時(shí),該功能可以用于嵌入XSS有效載荷,并將其存儲(chǔ)在系統(tǒng)數(shù)據(jù)庫(kù)中,甚至可以劫持管理員賬戶(hù)的會(huì)話(huà)進(jìn)而對(duì)后續(xù)操作提權(quán)。圖 4展示了Tony等人成功劫持管理員賬戶(hù)的會(huì)話(huà)。
此外,此XSS漏洞將運(yùn)行攻擊者通過(guò)植入web shell,并定期從EVCSMS的遠(yuǎn)程服務(wù)器獲取和執(zhí)行JavaScript,以實(shí)現(xiàn)持久訪(fǎng)問(wèn)。

圖 4 成功劫持管理員的會(huì)話(huà)令牌
2. SQL注入(SQLi)
SQL注入漏洞也是一個(gè)老生常談的漏洞了,導(dǎo)致此漏洞的原因有很多,但也基本都是缺少對(duì)代碼和數(shù)據(jù)的區(qū)分,且缺少身份認(rèn)證導(dǎo)致的。例如,BaSE EVMS和ICEMS上的身份驗(yàn)證表單通過(guò)其POST參數(shù)都存在基于布爾和時(shí)間的盲SQLi缺陷,可以將其用作注入點(diǎn),系統(tǒng)地執(zhí)行任意SQL查詢(xún)并轉(zhuǎn)儲(chǔ)存儲(chǔ)的EVCSMS數(shù)據(jù)庫(kù)表。圖 5展示了Tony等人轉(zhuǎn)儲(chǔ)到的數(shù)據(jù)庫(kù)信息,其中包含了用戶(hù)賬戶(hù)詳細(xì)信息“sys_user”和計(jì)費(fèi)信息“invoice_record”的數(shù)據(jù)庫(kù)。

圖 5 ICEMS中的部分?jǐn)?shù)據(jù)庫(kù)
SQL注入攻擊帶來(lái)的影響也是很可怕的,包括對(duì)系統(tǒng)固件的影響與對(duì)平臺(tái)、用戶(hù)數(shù)據(jù)等的影響。大部分的充電設(shè)施都會(huì)用到OTA對(duì)固件升級(jí),固件文件的校驗(yàn)碼一般都存在于數(shù)據(jù)庫(kù)中。攻擊者可能會(huì)通過(guò)其他漏洞可以將合法固件更換成惡意固件,并利用SQL注入,將存在數(shù)據(jù)庫(kù)中正確固件校驗(yàn)碼更換成惡意固件的校驗(yàn)碼,導(dǎo)致充電設(shè)施下載到惡意固件后無(wú)法鑒別其真實(shí)性而安裝了惡意固件。這些惡意固件中可能被植入Rootkit(一種惡意軟件),以獲得持久和特權(quán)功能,進(jìn)而實(shí)現(xiàn)下一步攻擊。
借助SQL注入攻擊,攻擊者甚至可以更改平臺(tái)中的計(jì)費(fèi)信息,比如修改圖 5中的“bluesky”數(shù)據(jù)庫(kù)中“sys_bill”和“sys_refund”表的內(nèi)容,它們分別包含計(jì)費(fèi)和退款信息,這將給一些試圖逃費(fèi)的惡意用戶(hù)利用的機(jī)會(huì),給平臺(tái)帶來(lái)難以估量的經(jīng)濟(jì)損失。攻擊者還可以從數(shù)據(jù)庫(kù)中查詢(xún)到用戶(hù)的賬戶(hù)信息,其中不乏一些用戶(hù)的敏感信息,比如用戶(hù)的密碼、登錄活動(dòng)、郵箱地址等。借助這些信息,攻擊者可以對(duì)用戶(hù)進(jìn)行針對(duì)性的進(jìn)一步攻擊,如黑郵件、騷擾和身份盜竊等。
3. 缺少身份認(rèn)證
例如,Tony等人在EVlink上發(fā)現(xiàn)了一個(gè)維護(hù)端點(diǎn),它沒(méi)有強(qiáng)制執(zhí)行足夠的授權(quán),因此可能導(dǎo)致強(qiáng)制瀏覽攻擊(Forced Browsing Attacks)。事實(shí)上,攻擊者可以通過(guò)直接訪(fǎng)問(wèn)此端點(diǎn)來(lái)繞過(guò)身份驗(yàn)證,這可以授予攻擊者訪(fǎng)問(wèn)和修改能源管理設(shè)置面板的權(quán)限,他們將能夠在其中查看用戶(hù)信息和充電過(guò)程詳細(xì)信息以及有關(guān)內(nèi)部系統(tǒng)的其他敏感信息(例如固件版本)。類(lèi)似的,其他EVCSMS(如Keba、Ensto CSI和Garo CSI)也因其多個(gè)端點(diǎn)的身份驗(yàn)證缺失而遭受信息泄露漏洞。例如,這可以使未經(jīng)身份驗(yàn)證的對(duì)手了解有關(guān)底層EVCS狀態(tài)的信息,如圖 6所示。

圖 6 Ensto CSI上未經(jīng)認(rèn)證的EVCS狀態(tài)信息泄露
4. 硬編碼密鑰
Tony等人在三個(gè)基于移動(dòng)APP的EVCSMS(即ChargePoint、Go和EV Connect)的Java源代碼中發(fā)現(xiàn)了硬編碼安全密鑰(例如,密碼密鑰)。這些密鑰用于通過(guò)一些對(duì)數(shù)據(jù)/通信進(jìn)行加密的操作,例如創(chuàng)建/注冊(cè)、身份驗(yàn)證和信息更新。因此,通過(guò)獲取這些操作的源代碼,攻擊者可以編寫(xiě)一些規(guī)避加密方案的算法,這些加密往往是針對(duì)用戶(hù)通信和數(shù)據(jù)的。攻擊者成功規(guī)避加密方案后就可以推斷出用戶(hù)的個(gè)人信息以及其他敏感數(shù)據(jù)(例如,帳戶(hù)憑據(jù)等)。
5. 其他
除以上列舉的幾個(gè)常見(jiàn)的、嚴(yán)重的,可能會(huì)對(duì)用戶(hù)和平臺(tái)帶來(lái)?yè)p失的漏洞外,Tony等人還闡述了其他幾種可能會(huì)對(duì)平臺(tái)或者電網(wǎng)帶來(lái)嚴(yán)重影響的安全漏洞,比如攻擊者可能購(gòu)置/獲取大量的損壞的EVCS來(lái)構(gòu)建僵尸網(wǎng)絡(luò),用以發(fā)各種網(wǎng)絡(luò)攻擊,如DoS或網(wǎng)絡(luò)嗅探/偵察活動(dòng);又或者利用服務(wù)器端請(qǐng)求偽造(SSRF)漏洞,進(jìn)而發(fā)現(xiàn)EVCSMS網(wǎng)站內(nèi)網(wǎng)中的其他關(guān)鍵站點(diǎn),或者利用SSRF漏洞從EVCSMS中提取信息,從而讀取存儲(chǔ)在EVCS文件系統(tǒng)上的任意文件和記錄日志等。
四、防御建議
本節(jié)Tony等人討論了系統(tǒng)開(kāi)發(fā)人員/設(shè)計(jì)師可以實(shí)施的實(shí)際對(duì)策,以加強(qiáng)部署的EVCSMS,并減輕針對(duì)EVCS、其用戶(hù)和連接電網(wǎng)的進(jìn)一步網(wǎng)絡(luò)攻擊。針對(duì)圖 3中列舉的漏洞,Tony等人做出了相應(yīng)的防御措施,如圖 7所示。

圖 7 針對(duì)以上漏洞提出的防御建議
對(duì)于可篡改的HTTP參數(shù),開(kāi)發(fā)者應(yīng)該盡可能地根據(jù)預(yù)編譯的有效值表過(guò)濾用戶(hù)輸入的參數(shù),并且對(duì)這些輸入進(jìn)行適當(dāng)?shù)牟眉簟⒕幋a,以避免XSS攻擊。
為了緩解SQL注入攻擊,開(kāi)發(fā)者應(yīng)該防止攻擊者通過(guò)在EVCSMS身份驗(yàn)證表單中的易受攻擊參數(shù)上濫用字符串鏈接來(lái)執(zhí)行SQL查詢(xún),比如使用參數(shù)化查詢(xún)來(lái)區(qū)分代碼和數(shù)據(jù)。
開(kāi)發(fā)者應(yīng)該在所有端點(diǎn)上強(qiáng)制進(jìn)行身份驗(yàn)證,防止攻擊者通過(guò)側(cè)端點(diǎn)上的直接或錯(cuò)誤請(qǐng)求誘使EVCSMS無(wú)意泄漏敏感信息。
在固件或者移動(dòng)APP中,開(kāi)發(fā)者應(yīng)避免使用固定的密鑰(嵌入式密鑰),應(yīng)動(dòng)態(tài)地為每個(gè)客戶(hù)端創(chuàng)建臨時(shí)密鑰,并使用安全的連接(如TLS)給客戶(hù)端傳輸,從而避免因固件、APP被攻擊者逆向而泄露。
五、總 結(jié)
在電動(dòng)汽車(chē)蓬勃發(fā)展的今天,充電設(shè)施的廣泛部署給人們帶來(lái)了巨大的便利,在充電設(shè)施的部署和生產(chǎn)設(shè)計(jì)過(guò)程中,網(wǎng)絡(luò)安全是不可忽視的一環(huán)。本文中,Tony等人闡述了他們收集EVCS固件、移動(dòng)、Web APP的過(guò)程,并通過(guò)分析這類(lèi)EVCSMS,發(fā)現(xiàn)了它們存在著嚴(yán)重的漏洞,從而使整個(gè)層級(jí)處于網(wǎng)絡(luò)攻擊的高風(fēng)險(xiǎn)之中。隨后,Tony等人闡明了利用已識(shí)別漏洞進(jìn)行網(wǎng)絡(luò)攻擊的可行性,并提出了一系列切實(shí)可行的對(duì)策,幫助確保現(xiàn)有系統(tǒng)的安全,并對(duì)新系統(tǒng)的設(shè)計(jì)和實(shí)施提出了建議,同時(shí)為開(kāi)發(fā)人員、最終用戶(hù)和電網(wǎng)運(yùn)營(yíng)商提供安全指南和最佳實(shí)踐。
參考文獻(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] 任沁沁, 陳宇軒, 范小林. 新能源汽車(chē)“上量”發(fā)展勢(shì)頭強(qiáng)勁[N]. 經(jīng)濟(jì)參考報(bào), 2022-07-08(007).
[3] 高偉. 充電樁市場(chǎng)規(guī)模快速提升 上市公司加碼布局[N]. 經(jīng)濟(jì)參考報(bào), 2022-08-05(003).
聲 明
本文總結(jié)自Tony等的論文《Power jacking your station: In-depth security analysis of electric vehicle charging station management systems》,部分觀(guān)點(diǎn)翻譯自原文章,可能與原文有些許出入,請(qǐng)以原文為準(zhǔn)。






























