在3月的荷蘭大選即將到來(lái)之際,安全專(zhuān)家Sijmen Ruwhof通過(guò)Youtube上有關(guān)荷蘭大選使用的計(jì)票軟件介紹視頻,對(duì)荷蘭大選中使用的投票計(jì)票軟件OSV programma進(jìn)行了全面的安全分析和風(fēng)險(xiǎn)識(shí)別。最終,荷蘭國(guó)家選舉委員會(huì)通過(guò)Sijmen Ruwhof發(fā)表的分析文章,確認(rèn)這套軟件系統(tǒng)存在安全隱患,并對(duì)外宣布,在接下來(lái)的總統(tǒng)大選中,將不會(huì)使用任何電子投票計(jì)票系統(tǒng),改用原始的手工計(jì)票。以下為Sijmen Ruwhof對(duì)OSV programma計(jì)票軟件的詳細(xì)安全分析。
正如大家所聽(tīng)聞到的那樣,去年的美國(guó)總統(tǒng)大選,卷入了大多黑客暗影,從始至終的一系列網(wǎng)絡(luò)攻擊對(duì)政治進(jìn)程造成的影響,意義深遠(yuǎn)。這或許將成為載入史冊(cè)的經(jīng)典案例,也將開(kāi)啟網(wǎng)絡(luò)攻擊的新篇章。
對(duì)OSV programma的分析原由
1月中旬,荷蘭RTL電視臺(tái)記者曾聯(lián)系我,想就快要開(kāi)始的荷蘭大選是否會(huì)面臨黑客攻擊作一些采訪。而據(jù)他們透露,當(dāng)前荷蘭選舉計(jì)票系統(tǒng)軟件使用了不安全的SHA1機(jī)制,甚至還存在弱口令。對(duì)此,我表示驚訝和感慨,我們竟然還敢使用電腦計(jì)票系統(tǒng)?
荷蘭官方早在2009年就禁止使用電子投票和計(jì)票系統(tǒng)
2009年6月,出于網(wǎng)絡(luò)安全原因,荷蘭政府宣布禁用電子投票系統(tǒng)進(jìn)行選舉,之后改用規(guī)定的紅色鉛筆和白紙投票。RTL電視臺(tái)記者告訴我,雖然選民使用鉛筆和紙質(zhì)選票手工投票,但在后臺(tái)計(jì)票過(guò)程中,為了方便高效,負(fù)責(zé)選舉的官員卻把選票輸入電腦程序進(jìn)行計(jì)票。
2009年后電子計(jì)票系統(tǒng)一直被在選舉后臺(tái)使用
該電腦計(jì)票程序運(yùn)行后會(huì)按不同區(qū)域生成合計(jì)的投票計(jì)數(shù),并存儲(chǔ)在一個(gè)USB載體中,通過(guò)向上級(jí)區(qū)域?qū)訉訁R總,最終形成的電子數(shù)據(jù)將交由中央選舉委員會(huì)進(jìn)行合計(jì)。
使用電子計(jì)票系統(tǒng)面臨的嚴(yán)重風(fēng)險(xiǎn)
如果沒(méi)人質(zhì)疑最終選票的電子合計(jì)結(jié)果,也將不會(huì)對(duì)紙質(zhì)選票進(jìn)行復(fù)審核實(shí),如果沒(méi)有紙質(zhì)選票復(fù)審過(guò)程,也就意味著,這種紙筆方式投票對(duì)電子投票系統(tǒng)本身而言就是一種安全風(fēng)險(xiǎn)(風(fēng)險(xiǎn)1:嚴(yán)重),因?yàn)?,紙質(zhì)選票產(chǎn)生的結(jié)果最后一樣是通過(guò)電子計(jì)票程序完成,沒(méi)有任何人工核實(shí)。對(duì)于這個(gè)事實(shí),我既驚訝又害怕。
其實(shí)在這些關(guān)鍵應(yīng)用方面,任何有點(diǎn)IT技能的人都清楚,電腦程序并不總是可信。因?yàn)闊o(wú)論采取什么加固措施,總會(huì)存在被黑風(fēng)險(xiǎn),更別提面對(duì)的是那些經(jīng)驗(yàn)老道技術(shù)高明的國(guó)家支持黑客,直接點(diǎn)說(shuō),在他們面前,我們都將束手無(wú)策。
選舉委員會(huì)對(duì)當(dāng)前的網(wǎng)絡(luò)威脅毫無(wú)意識(shí)
現(xiàn)在的情況是,荷蘭國(guó)家選舉委員會(huì)對(duì)當(dāng)前的網(wǎng)絡(luò)威脅形勢(shì)毫無(wú)認(rèn)知,竟然還認(rèn)為他們使用的選舉計(jì)票軟件非??煽浚淮嬖谌魏伟踩L(fēng)險(xiǎn)。
我對(duì)這套2009年以來(lái)一直在用的,決定著國(guó)家元首的計(jì)票軟件系統(tǒng)非常好奇,因此,我決定仔細(xì)研究研究。
對(duì)OSV programma的詳細(xì)安全分析和風(fēng)險(xiǎn)識(shí)別
關(guān)于該計(jì)票軟件,荷蘭國(guó)家選舉委員會(huì)制作了幾個(gè)操作演示視頻投放到Y(jié)outube上。在視頻中,選舉委員會(huì)講師講解如何用該軟件進(jìn)行選舉計(jì)票:
視頻泄露了其內(nèi)部網(wǎng)絡(luò)共享信息
視頻剛開(kāi)始很無(wú)聊,但在01:19之后就變得有點(diǎn)意思了,該講師無(wú)意間打開(kāi)了Windows的資源管理器,從畫(huà)面上可以看到,系統(tǒng)中存在8個(gè)內(nèi)部網(wǎng)絡(luò)共享位置,其中一個(gè)清楚地標(biāo)記為“阿姆斯特丹”(Amsterdam)。內(nèi)部網(wǎng)絡(luò)設(shè)置對(duì)于投票系統(tǒng)來(lái)說(shuō),算是比較保密的技術(shù)信息了,可惜,該講師卻通過(guò)這種方式無(wú)意間泄露了!(風(fēng)險(xiǎn)2:低)
計(jì)票軟件使用了不安全的網(wǎng)頁(yè)服務(wù)
在視頻介紹中,我注意到在計(jì)票軟件的初始部署時(shí),需要在使用者電腦中安裝一個(gè)web服務(wù)模塊,之后請(qǐng)求該web服務(wù)器并打開(kāi)一個(gè)瀏覽器頁(yè)面才能正常進(jìn)行計(jì)票操作。從安全角度來(lái)說(shuō),桌面應(yīng)用程序使用基于瀏覽器的服務(wù),可能會(huì)存在以下安全風(fēng)險(xiǎn)(風(fēng)險(xiǎn)3:中):
為黑客增加攻擊面
由于web服務(wù)的存在,所以攻擊者沒(méi)有必要通過(guò)特定的TCP端口連接計(jì)票軟件
如果主機(jī)防火墻策略設(shè)置不當(dāng),網(wǎng)絡(luò)內(nèi)其它主機(jī)可以無(wú)限制訪問(wèn)到web服務(wù)
如果網(wǎng)絡(luò)內(nèi)路由器開(kāi)啟了UPnP功能,web服務(wù)可能會(huì)直接暴露在互聯(lián)網(wǎng)上
計(jì)票軟件可以安裝在任何電腦上
視頻介紹,該計(jì)票軟件可以安裝到任何電腦中,而荷蘭國(guó)家選舉委員會(huì)竟然未對(duì)軟件的安裝環(huán)境作出任何安全性限制(風(fēng)險(xiǎn)4:高),這將會(huì)面臨以下風(fēng)險(xiǎn):
一些缺乏更新或未安裝殺毒軟件的老舊電腦同樣適配
未對(duì)個(gè)人攜帶電腦作出安裝限制
計(jì)票軟件支持存在很多漏洞隱患的XP系統(tǒng),另外,未對(duì)一些不安全的瀏覽器版本作出限制
對(duì)于一些關(guān)鍵系統(tǒng)應(yīng)用,為了從理論上保證絕對(duì)的安全,應(yīng)該禁用互聯(lián)網(wǎng)連接,或采用其它方式實(shí)現(xiàn)某種意義上的物理隔絕。雖然該計(jì)票軟件安裝文檔上注明,安裝系統(tǒng)應(yīng)該禁用WIFI,但卻未對(duì)互聯(lián)網(wǎng)網(wǎng)絡(luò)連接作出限制,這種疏忽讓我吃驚。
計(jì)票軟件使用了不安全的HTTP連接
在對(duì)本地本地web服務(wù)的訪問(wèn)中,計(jì)票軟件使用了不安全的HTTP瀏覽器連接(風(fēng)險(xiǎn)5:中),雖然這種本地瀏覽器流量不會(huì)形成直接威脅,但也存在其它安全風(fēng)險(xiǎn):
如果投票系統(tǒng)或區(qū)域內(nèi)置其它外連鏈接,將會(huì)泄露HTTP的referrer頭信息
在瀏覽器和web服務(wù)之間形成了攻擊面,攻擊者可能會(huì)在電腦中安裝惡意軟件,對(duì)計(jì)票軟件的發(fā)起流量進(jìn)行監(jiān)聽(tīng)
如果安裝系統(tǒng)內(nèi)使用了其它HTTPS連接,就又會(huì)激活瀏覽器啟用其它安全性設(shè)置,如網(wǎng)頁(yè)緩存設(shè)置等,對(duì)計(jì)票軟件的正常使用造成干擾
所以,對(duì)于這類(lèi)關(guān)鍵系統(tǒng)應(yīng)用,即使使用了本地的HTTP服務(wù),最好請(qǐng)使用HTTPS方式。
計(jì)票軟件未針對(duì)哈希校驗(yàn)和密碼口令的使用作出強(qiáng)制說(shuō)明
在視頻介紹的02:41時(shí)刻,可以看到以下畫(huà)面
視頻里,雖然軟件介紹者的操作速度很快,但在其中一個(gè)瞬間,一幅重要畫(huà)面閃現(xiàn)而出,計(jì)票軟件需要用戶(hù)手工輸入一串40個(gè)字符的HASH值判斷投票結(jié)果是否被篡改,但是,介紹者卻對(duì)此項(xiàng)重要安全設(shè)置只字未提,完全忽視(風(fēng)險(xiǎn)6:高);更糟糕的是,計(jì)票軟件卻沒(méi)有強(qiáng)制用戶(hù)輸入校驗(yàn)HASH碼(風(fēng)險(xiǎn)7:高);而且,讓人覺(jué)得意外的是,這些HASH碼使用的竟是不安全的SHA1加密方式(風(fēng)險(xiǎn)8:高),而SHA1只適用于一些小型文件和服務(wù)的校驗(yàn)。
哈希值文件和選票數(shù)據(jù)文檔生成在同一文件夾內(nèi)
在視頻的02:52時(shí)刻,可以看到以下畫(huà)面:
畫(huà)面中,生成的XML文檔內(nèi)包含了選票計(jì)數(shù),而為了保證每個(gè)XML文檔的完整性,將利用不同SHA1哈希值對(duì)每個(gè)XML文檔進(jìn)行校驗(yàn),如果XML文檔被更改,將會(huì)產(chǎn)生不一樣的SHA1值。而生成的PDF文檔內(nèi)就包含了對(duì)XML文檔進(jìn)行校驗(yàn)的SHA1哈希值。
PDF和XML文檔的創(chuàng)建過(guò)程
當(dāng)計(jì)票軟件生成包含選票計(jì)數(shù)的XML文檔時(shí),同時(shí)也會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的,包含由計(jì)票軟件生成SHA1哈希校驗(yàn)值的PDF文檔,該文檔為打印之用,而哈希值理論上不會(huì)被黑客遠(yuǎn)程更改。
計(jì)票軟件生成的這些XML和PDF文檔隨后將存儲(chǔ)到一個(gè)USB載體中,這個(gè)USB載體將被通過(guò)物理轉(zhuǎn)移方式遞交到上一級(jí)選區(qū),上一級(jí)選區(qū)通過(guò)匯總所轄管地區(qū)的所有XML文檔,并把其輸入到計(jì)票軟件中進(jìn)行電腦程序計(jì)票。
未加密保護(hù)的XML文檔
計(jì)票軟件生成的,包含選票計(jì)數(shù)的XML文檔沒(méi)有任何加密保護(hù)設(shè)置,在USB載體的物理轉(zhuǎn)移中,任何人都可以對(duì)其內(nèi)容進(jìn)行篡改(風(fēng)險(xiǎn)9:高)
生成的PDF文檔在打印之后應(yīng)該刪除
包含哈希校驗(yàn)值的PDF文檔在打印之后,應(yīng)該立即刪除,然而視頻講解者卻沒(méi)意識(shí)到這個(gè)問(wèn)題,坦然地把其和XML文檔保存在同一個(gè)文件夾中(風(fēng)險(xiǎn)10:中),計(jì)票軟件系統(tǒng)也未就此發(fā)出任何強(qiáng)制刪除PDF文檔的安全提示(風(fēng)險(xiǎn)11:中)。打印PDF文檔是可選步驟,當(dāng)然,有了電子數(shù)據(jù)誰(shuí)還會(huì)想著去處理紙質(zhì)文檔呢?
另外,針對(duì)SHA1哈希值的校驗(yàn),視頻講解者展示了如何在PDF閱讀器中對(duì)SHA1值進(jìn)行驗(yàn)證:
我猜想該計(jì)票軟件設(shè)計(jì)者的初衷是希望用戶(hù)能打印PDF文檔,用紙質(zhì)方式進(jìn)行文檔的完整性校驗(yàn),而視頻講解者并沒(méi)有真正了解這種意圖,同時(shí),軟件設(shè)計(jì)者也沒(méi)有認(rèn)真檢查過(guò)軟件的生成文檔(風(fēng)險(xiǎn)12:中)。
而且,由于存儲(chǔ)XML文檔的USB載體無(wú)任何加密措施保護(hù),在把數(shù)據(jù)轉(zhuǎn)移到另外一臺(tái)計(jì)票電腦的過(guò)程中,可能會(huì)產(chǎn)生安全風(fēng)險(xiǎn)(風(fēng)險(xiǎn)13:高)。
事實(shí)上,計(jì)票系統(tǒng)開(kāi)啟USB接入方式,本來(lái)就是一種非常危險(xiǎn)的安全短板,因?yàn)椴豢杀苊鈺?huì)被插入一些未知的不安全的USB載體,使計(jì)票電腦系統(tǒng)面臨被黑風(fēng)險(xiǎn)。主要隱患如下:
攻擊者使用程序自啟動(dòng)技術(shù),在USB載體上放置可以自動(dòng)運(yùn)行的惡意軟件
攻擊者使用類(lèi)似BadUSB形式的攻擊
即使設(shè)置了很好的加密或簽名認(rèn)證機(jī)制,利用USB的惡意接入,一樣可以繞過(guò)這些安全設(shè)置(風(fēng)險(xiǎn)14:高),而且針對(duì)數(shù)百公里外的上一級(jí)選區(qū)數(shù)據(jù)文檔轉(zhuǎn)移,USB載體方式很容易出現(xiàn)安全問(wèn)題。
視頻講解者使用了短密碼并開(kāi)啟了密碼自動(dòng)保存功能
在03:07時(shí)刻,計(jì)票軟件的登錄界面顯示以下畫(huà)面:
講解者使用了名為“OSV”的用戶(hù)名,點(diǎn)擊TAB鍵后,發(fā)現(xiàn)系統(tǒng)已經(jīng)自動(dòng)保存了對(duì)應(yīng)的登錄密碼(風(fēng)險(xiǎn)點(diǎn)15:中),但講解者又重新手動(dòng)輸入了長(zhǎng)度為3位數(shù)的密碼進(jìn)行登錄,有點(diǎn)搞笑,我猜想她的密碼可能也是“OSV”。
顯然,開(kāi)啟密碼保存設(shè)置后,計(jì)票軟件可能存在他人未授權(quán)訪問(wèn)的情況(風(fēng)險(xiǎn)17:低),同時(shí),計(jì)票軟件允許設(shè)置弱口令的做法也極不安全(風(fēng)險(xiǎn)18:中)。
安全標(biāo)記Sessionid顯示在地址欄
登錄進(jìn)入后,在管理界面瀏覽器地址欄可以看到如下圖所示的鏈接信息:
仔細(xì)觀察可以發(fā)現(xiàn)session標(biāo)識(shí)jsessionid為可見(jiàn)狀態(tài)(風(fēng)險(xiǎn)19:低),為了安全起見(jiàn),應(yīng)該對(duì)cookie機(jī)制進(jìn)行安全設(shè)置,如httponly、secure、sameSite等以保護(hù)session不被劫持。主要存在的隱患如下:
黑客可能利用該標(biāo)識(shí)繞過(guò)登錄驗(yàn)證
在不安全的HTTP連接下,該標(biāo)識(shí)符可能被泄露到其它網(wǎng)站
該標(biāo)識(shí)還會(huì)被自動(dòng)保存在瀏覽器歷史記錄中
使用了系統(tǒng)高權(quán)限運(yùn)行軟件
在03:44時(shí)刻可以看到以下畫(huà)面:
計(jì)票軟件把用戶(hù)文件寫(xiě)入到其安裝路徑:C:Program Files (x86)OSV,一般來(lái)說(shuō),只有具備系統(tǒng)高權(quán)限的用戶(hù)才能操作該路徑文件,而給一些日常性任務(wù)賦予高權(quán)限本來(lái)說(shuō)是一種安全風(fēng)險(xiǎn)(風(fēng)險(xiǎn)20:中)。而該軟件編寫(xiě)者似乎對(duì)用戶(hù)隔離和安全加固了解不夠,所以才會(huì)把用戶(hù)文件默認(rèn)存儲(chǔ)到系統(tǒng)限制區(qū)域C:/Program Files/ 下(風(fēng)險(xiǎn)21:中)。
惡意軟件可以輕易篡改選票
視頻在04:08時(shí),畫(huà)面中顯示了包含投票計(jì)數(shù)生成的XML文檔,而講解者需要通過(guò)用戶(hù)接口導(dǎo)入這些文件讓軟件進(jìn)行統(tǒng)計(jì)分析:
雖然這些文件是在同一個(gè)電腦上生成的,但是在這個(gè)步驟卻沒(méi)有進(jìn)行SHA1校驗(yàn)(風(fēng)險(xiǎn)22:高)。
而且,這些運(yùn)行有計(jì)票軟件的電腦很容易通過(guò)日常瀏覽或郵件方式感染惡意軟件,而一旦感染上了那些針對(duì)選舉的惡意軟件,它們只需更改存儲(chǔ)在C:Program Files (x86)OSV 目錄下的XML文檔,因?yàn)檫@些文檔沒(méi)有經(jīng)過(guò)任何加密保護(hù)和校驗(yàn),這對(duì)黑客來(lái)說(shuō)輕而易舉。
包含計(jì)票數(shù)據(jù)的XML文檔竟然可以通過(guò)電子郵件方式寄出
在視頻的04:45時(shí)刻,計(jì)票軟件竟然提示用戶(hù)可以通過(guò)電郵方式把XML文檔寄到中央選舉委員會(huì):
電子郵件方式傳送類(lèi)似重要數(shù)據(jù)非常不安全(風(fēng)險(xiǎn)23:高),對(duì)于那些想達(dá)目的的黑客來(lái)說(shuō),竊取或更改電子郵件信息非常簡(jiǎn)單容易,這些軟件開(kāi)發(fā)者難道是腦子進(jìn)水了嗎?!
沒(méi)有任何PDF文檔打印提示
視頻在生成文檔格式介紹中,雖然提到了如何生成PDF和XML文檔,以及這些文檔將會(huì)存儲(chǔ)在一個(gè)USB載體中被轉(zhuǎn)移到另外一臺(tái)電腦中,但是沒(méi)有提及任何打印PDF的提示。
軟件加密校驗(yàn)機(jī)制越來(lái)越糟
從視頻講解中可知,該軟件是由德國(guó)軟件公司開(kāi)發(fā)的,而進(jìn)行哈希校驗(yàn)的做法也是這家德國(guó)軟件公司的想法。正常來(lái)說(shuō),導(dǎo)入XML文檔時(shí),必須與USB載體中PDF文檔的哈希值進(jìn)行比較,才可選擇下一步導(dǎo)入動(dòng)作,但一些用戶(hù)會(huì)選擇忽略此步驟。因此,為了實(shí)現(xiàn)”額外強(qiáng)制性校驗(yàn)“措施,該軟件公司想出了以下這招:
必須輸入哈希編碼的前4個(gè)字符進(jìn)行校驗(yàn),才能執(zhí)行下一步動(dòng)作。由于只要求輸入4個(gè)字符,對(duì)SHA1編碼來(lái)說(shuō),即2^16(65,536)種組合,在強(qiáng)力破解工具面前,這種密碼強(qiáng)度算是非常脆弱的了(風(fēng)險(xiǎn)24:高),而正常的SHA1是2^160種組合。所以,從這個(gè)角度上來(lái)說(shuō),目前該計(jì)票軟件的所謂的“額外安全機(jī)制”完全起到了相反的作用,沒(méi)有任何安全可言!
其它風(fēng)險(xiǎn)漏洞情況
我還進(jìn)行了其它漏洞識(shí)別和檢測(cè),由于比較繁雜,就不一一贅述:
計(jì)票軟件系統(tǒng)直接接入互聯(lián)網(wǎng)
在部署計(jì)票軟件時(shí)沒(méi)有IT專(zhuān)家進(jìn)行指導(dǎo)
計(jì)票軟件存在部分開(kāi)源代碼
我發(fā)現(xiàn)了某處XSS漏洞
沒(méi)有部署任何日志存儲(chǔ)服務(wù),文件信息很容易被篡改
未部署任何入侵檢測(cè)服務(wù)
軟件未經(jīng)任何第三方安全機(jī)構(gòu)或個(gè)人進(jìn)行過(guò)安全檢測(cè)
軟件不具備任何可信的安全檢測(cè)報(bào)告
軟件信息的完整性很難保證
……
看來(lái)選舉委員會(huì)和其聘請(qǐng)的軟件公司完全沒(méi)有考慮到黑客威脅,這簡(jiǎn)直難以置信,但是請(qǐng)注意,從以上分析研究可以看出,黑客能以多種方式,實(shí)現(xiàn)操縱大選結(jié)果的目的,而這些安全隱患,自2009年就一直存在。真心希望從此刻起,荷蘭政府能重視選舉相關(guān)的信息安全,因?yàn)檫@種現(xiàn)狀非常糟糕,不可接受!
后記
2017年1月30日,在我發(fā)表了這篇文章之后,荷蘭RTL電視臺(tái)邀請(qǐng)我和其它安全專(zhuān)家就我提及的選舉系統(tǒng)安全問(wèn)題進(jìn)行了驗(yàn)證討論,節(jié)目作了直播;
2017年1月31日,荷蘭NOS電視臺(tái)報(bào)道了我的該篇分析文章,并就此采訪了負(fù)責(zé)大選的當(dāng)值官員;
2017年1月31日,媒體報(bào)道,早在6年前,Radboud大學(xué)學(xué)生MaartenEngberts曾發(fā)現(xiàn)了該計(jì)票軟件的多個(gè)漏洞,并發(fā)表在其碩士論文中,但荷蘭選舉委員會(huì)一直忽視這些安全漏洞;
2017年2月1日,在多家媒體對(duì)該文進(jìn)行轉(zhuǎn)載報(bào)道后,荷蘭內(nèi)政部長(zhǎng)Ronald Plasterk發(fā)表聲明,確認(rèn)荷蘭選舉信息系統(tǒng)可能存在一些潛在的安全威脅,并宣布在3月即將到來(lái)的荷蘭大選中不會(huì)使用電子計(jì)票軟件,將會(huì)徹底使用手工計(jì)票。
2017年2月3日,《今日美國(guó)》節(jié)目就此文作了報(bào)道。
*參考來(lái)源:sijmen.ruwhof,F(xiàn)B小編clouds編譯,轉(zhuǎn)載請(qǐng)注明來(lái)自FreeBuf.COM