本文,我們來探討一下用打補(bǔ)丁的方法為SCADA和ICS系統(tǒng)提供安全保障的好處、弊端及其不為人知的內(nèi)幕。首先,我們假設(shè)不需要關(guān)閉進(jìn)程也可以安裝補(bǔ)丁(比如說,為冗余控制器分階段打補(bǔ)丁)。
SCADA和ICS系統(tǒng)關(guān)系工控安全
為SCADA和ICS安全而打補(bǔ)丁的影響
在一篇針對OS軟件發(fā)布后公開披露的漏洞補(bǔ)丁的重要研究中,Yin等指出所有補(bǔ)丁中有14.8%到24.4%是錯(cuò)誤的并會(huì)直接危害到最終用戶。更糟糕的情況是,這些錯(cuò)誤的“解決方案”中有43%會(huì)導(dǎo)致系統(tǒng)崩潰,癱瘓,資料損壞或其他安全問題。
此外,補(bǔ)丁并不總能依照其所設(shè)計(jì)的那樣解決對應(yīng)的安全問題。如工業(yè)控制系統(tǒng)-計(jì)算機(jī)應(yīng)急響應(yīng)小組(ICS-CERT)成員KevinHemsley所言,在2011年ICS-CERT發(fā)現(xiàn),通過打補(bǔ)丁來修復(fù)發(fā)布的控制系統(tǒng)產(chǎn)品漏洞出現(xiàn)了60%的失敗率。
SCADA系統(tǒng)
即使是好的信息安全補(bǔ)丁也可能引起問題
大多數(shù)的補(bǔ)丁需要關(guān)閉或重啟正在運(yùn)行的操作。有些可能也會(huì)中斷或解除掉之前依靠控制系統(tǒng)運(yùn)行的功能。例如,Stuxnet蠕蟲病毒攻擊的其中一個(gè)漏洞是西門子WinCC系統(tǒng)SQL數(shù)據(jù)庫的硬編碼密碼。
與此同時(shí),西門子也因未能及時(shí)發(fā)布解除密碼的補(bǔ)丁而廣受指責(zé)。而那些通過自己人為修改密碼的客戶則很快就會(huì)發(fā)現(xiàn),許多關(guān)鍵的控制功能都需要這個(gè)密碼才能進(jìn)入。在這種情況下,所用的“解決方案”要比原來的“疾病”后果更加嚴(yán)重。
打補(bǔ)丁需要有專門技能的人在場
打補(bǔ)丁通常需要專家在場
關(guān)于打補(bǔ)丁還需要警惕的一點(diǎn)是打補(bǔ)丁的過程需要那些有專門技能的人在場。
舉例來說,2003年1月Slammer病毒攻擊的漏洞其實(shí)原本有一個(gè)在2002年發(fā)布的補(bǔ)丁(MS02-039)。不幸的是,這并沒有幫助一家在墨西哥海灣擁有大量采油平臺(tái)的公司逃過一劫。這家公司在2002年夏天開始打了補(bǔ)丁運(yùn)行,但服務(wù)器還是重新出現(xiàn)了問題,需要windows專家在場打補(bǔ)丁。由于這些專家中只有極少人具有進(jìn)入采油平臺(tái)的安全認(rèn)證,因而在六個(gè)月后受到Slammer病毒攻擊時(shí)還有許多平臺(tái)尚未打補(bǔ)丁。
并非所有漏洞都有對應(yīng)的補(bǔ)丁
若沒有補(bǔ)丁會(huì)怎樣
當(dāng)然,你只有在供應(yīng)商提供補(bǔ)丁時(shí)才能使用補(bǔ)丁修復(fù)漏洞。但不幸的是,并非所有漏洞都有對應(yīng)的補(bǔ)丁。在2012年1月的SCADA信息安全技術(shù)研討會(huì)(S4)上,SeanMcBride表示在ICS-CERT記錄的364個(gè)公開漏洞中只有不到一半在當(dāng)時(shí)有可用補(bǔ)丁。
有些人指責(zé)供應(yīng)商無動(dòng)于衷和懶惰,但其實(shí)有很多因素阻礙了補(bǔ)丁的及時(shí)發(fā)布。
2010年,ICS的一家重要供應(yīng)商告訴我在產(chǎn)品的關(guān)鍵任務(wù)內(nèi)部測試中已經(jīng)發(fā)現(xiàn)了安全隱患。但不幸的是,這些漏洞是嵌入在由第三方提供的OS軟件中?,F(xiàn)在OS提供商拒絕解決這些漏洞問題,因此ICS供應(yīng)商(及其客戶)就將面臨無可用補(bǔ)丁的情況。
2011年的案例涉及另一家ICS供應(yīng)商,一名獨(dú)立的信息安全研究人員發(fā)現(xiàn)了PLC中的漏洞,并公開披露了他們。該供應(yīng)商開發(fā)了補(bǔ)丁準(zhǔn)備撤除這些后門),但隨即他們發(fā)現(xiàn)這些后門被那些為用戶提供檢修服務(wù)的團(tuán)隊(duì)所廣泛使用。而讓這個(gè)問題更加棘手的是,這家公司產(chǎn)品變更的質(zhì)量保證(QA)程序需要4個(gè)月才能完成。這意味著即使用戶愿意為信息安全而放棄檢修服務(wù),他們?nèi)孕枰邮芩膫€(gè)月開放的空窗期等待正規(guī)的補(bǔ)丁測試流程結(jié)束。
事實(shí)上,當(dāng)用打補(bǔ)丁解決SCADA和ICS系統(tǒng)信息安全時(shí),“解藥”可能會(huì)比疾病本身后果更嚴(yán)重。
系統(tǒng)定期檢修
許多SCADA/ICS使用者選擇不打補(bǔ)丁
我的上一個(gè)例子突出了為保障關(guān)鍵系統(tǒng)安全而打補(bǔ)丁一個(gè)重要問題。那就是許多用戶不想承擔(dān)降低服務(wù)質(zhì)量和增加停機(jī)故障的風(fēng)險(xiǎn)。而上上個(gè)例子提到的供應(yīng)商私底下向我反映他們發(fā)布的漏洞只有10%的下載率。
我自己關(guān)于ICS安全產(chǎn)品的經(jīng)驗(yàn)也證實(shí)了補(bǔ)丁在這個(gè)領(lǐng)域的接受程度較低。
按計(jì)劃發(fā)布的補(bǔ)丁是有效補(bǔ)丁,應(yīng)對性的補(bǔ)丁是無效補(bǔ)丁,緊急發(fā)布的補(bǔ)丁是危險(xiǎn)補(bǔ)丁
我們明確一點(diǎn),對任何控制系統(tǒng)而言,修補(bǔ)漏洞都是一項(xiàng)重要的進(jìn)程。而且對良好的信息安全而言修補(bǔ)漏洞很關(guān)鍵。但是從IT應(yīng)對策略角度來說,每個(gè)月或每個(gè)周不間斷地打補(bǔ)丁對SCADA和ICS系統(tǒng)來說并不可行。匆忙地打補(bǔ)丁更加危險(xiǎn)。
SCADA/ICS供應(yīng)商在嘗試開發(fā)“緊急”補(bǔ)丁時(shí)會(huì)面臨多個(gè)問題——他們需要考慮安全因素和質(zhì)保(QA)要求,這通常會(huì)延遲補(bǔ)丁的發(fā)布。還在有些情況下,一個(gè)合理且安全的補(bǔ)丁也不起作用。
專業(yè)人員才能做到安全安裝
SCADA/ICS的用戶有類似的顧慮。而且很坦白地講,誰能因?yàn)樗麄儾幌朐黾酉到y(tǒng)故障或不想讓他們的關(guān)鍵控制器或服務(wù)器系統(tǒng)面臨安全威脅而責(zé)怪他們呢?
對合法產(chǎn)品的補(bǔ)丁支持也有問題——許多人希望一個(gè)控制產(chǎn)品能夠運(yùn)行20年,把它運(yùn)行的比典型的IT支持窗口還好。最后,正如我們在Slammer病毒攻擊例子中提到的,打補(bǔ)丁可能需要重要的人員幫助才能做到安全安裝。
所以開始制定一個(gè)對你的運(yùn)行環(huán)境有效的補(bǔ)丁計(jì)劃吧。確保它包含恰當(dāng)檢測和變更管理控制的流程。
不要指望補(bǔ)丁能夠迅速解決你的控制系統(tǒng)安全問題。如果你的確是這樣想的,你會(huì)發(fā)現(xiàn)新出現(xiàn)的問題將比修補(bǔ)的漏洞更糟糕。
其實(shí),我一點(diǎn)兒也不反對打補(bǔ)丁的。實(shí)際上,我認(rèn)為應(yīng)用補(bǔ)丁是一個(gè)完整的安全系統(tǒng)的關(guān)鍵部分。據(jù)US-CERT(美國計(jì)算機(jī)應(yīng)急響應(yīng)小組)統(tǒng)計(jì),大約95%的網(wǎng)絡(luò)入侵可以通過為系統(tǒng)更新適當(dāng)?shù)难a(bǔ)丁來避免。而如果你從來不打補(bǔ)丁,你將讓你的系統(tǒng)完全暴露在幾十年的惡意軟件前。
大部分網(wǎng)絡(luò)入侵可以通過為系統(tǒng)更新適當(dāng)?shù)难a(bǔ)丁來避免
我所反對的是將打補(bǔ)丁當(dāng)成一個(gè)對安全漏洞不由自主的迅速反應(yīng)。你認(rèn)為你若無法控制打補(bǔ)丁的過程,便無法期望控制系統(tǒng)可靠地運(yùn)行。
引用陶氏化學(xué)的Richard Brown所言:
“補(bǔ)丁管理就是對變動(dòng)的風(fēng)險(xiǎn)管理”。
補(bǔ)丁是對你的系統(tǒng)的改變。而對系統(tǒng)的這些改變都需要管理。一個(gè)人不能盲目地對進(jìn)程控制環(huán)境配置新的補(bǔ)丁而不面臨操作紊亂的風(fēng)險(xiǎn)。因此就需要精心的用政策措施和實(shí)踐經(jīng)驗(yàn)來平衡我們對系統(tǒng)的可靠性和安全性兩方面的需求。
一個(gè)成功的補(bǔ)丁策略可以平衡系統(tǒng)可靠性與安全性。
優(yōu)先化你的安全補(bǔ)丁
在補(bǔ)丁管理方面有很多推薦措施,其中我個(gè)人比較看好的一個(gè)來自于愛迪生電器協(xié)會(huì)(EEI)。他們的建議是按優(yōu)先次序?yàn)闄C(jī)器更新補(bǔ)丁程序。而優(yōu)先次序的判斷基于兩個(gè)因素:被修補(bǔ)的系統(tǒng)的危急程度和補(bǔ)丁本身的危急程度。
為機(jī)器更新補(bǔ)丁程序
愛迪生電器協(xié)會(huì)(EEI)的程序需要啟動(dòng)兩個(gè)子系統(tǒng)。第一個(gè)子系統(tǒng)包含一個(gè)列示了所有優(yōu)先化機(jī)器的詳單,并分組界定了他們打補(bǔ)丁的時(shí)間和方法。
有些機(jī)器屬于“及早采納型”,他們一有可用的補(bǔ)丁就安裝,就好像他們是測試機(jī)或是有質(zhì)量保證的機(jī)器。通常而言,都是針對實(shí)驗(yàn)或培訓(xùn)用的計(jì)算機(jī)。“關(guān)鍵業(yè)務(wù)型”機(jī)器就是那種在及早采納型機(jī)器穩(wěn)定操作一段時(shí)間后會(huì)自動(dòng)打補(bǔ)丁(根據(jù)補(bǔ)丁的危急程度),并且認(rèn)可那些從控制系統(tǒng)供應(yīng)商處獲得的補(bǔ)丁的機(jī)器。這種機(jī)器后來升級成為“禁止接觸型”機(jī)器,這類機(jī)器使用時(shí)就需要在應(yīng)用補(bǔ)丁之前人工干預(yù)并且/或者詳細(xì)咨詢供應(yīng)商。
第二個(gè)子系統(tǒng)是記錄了新發(fā)布的補(bǔ)丁及其對進(jìn)程操作的重要性水平的程序。當(dāng)公布一個(gè)新漏洞和/或者一個(gè)可用的補(bǔ)丁方案,此程序就可以追蹤記錄它的潛在影響——對公司的控制系統(tǒng)是好還是壞。然后該補(bǔ)丁就會(huì)被評估,其風(fēng)險(xiǎn)評估的結(jié)果將被用于確定補(bǔ)丁被采納的優(yōu)先級。
例如,風(fēng)險(xiǎn)評估可以追蹤一系列問題的處理進(jìn)程以判定補(bǔ)丁的緊迫性和需要進(jìn)行測試的級別。這些問題可能包括以下關(guān)注點(diǎn),如“補(bǔ)丁還處于研發(fā)期嗎?”或者“供應(yīng)商所指定的安全級別是什么?”或者“它是否受到過供應(yīng)商的測試?”
此風(fēng)險(xiǎn)評估可以確定整個(gè)的補(bǔ)丁實(shí)施層次。做這個(gè)評估的重要指導(dǎo)可以從供應(yīng)商網(wǎng)站處獲得,如霍尼韋爾的微軟安全修補(bǔ)資格矩陣(需要登錄許可才能訪問),它就報(bào)告了新近發(fā)布的補(bǔ)丁的測試狀態(tài)。
任何補(bǔ)丁計(jì)劃的制定都需要與所有軟件和系統(tǒng)供應(yīng)商的密切合作
執(zhí)行補(bǔ)丁應(yīng)對計(jì)劃
補(bǔ)丁實(shí)施層次是預(yù)先與應(yīng)對計(jì)劃綁定在一起的。下面的表格列舉了幾種不同的應(yīng)對計(jì)劃。這些計(jì)劃是依照不使用補(bǔ)丁的風(fēng)險(xiǎn)高低而區(qū)分的。
比如,如果一個(gè)給定的補(bǔ)丁所針對的漏洞風(fēng)險(xiǎn)低,那么其采納和測試循環(huán)的工作都可以暫緩。若風(fēng)險(xiǎn)高,那么該補(bǔ)丁就需要盡快配置。若需要比下面列示的三種更多(更少)的應(yīng)對計(jì)劃,也可按需創(chuàng)建。
任何補(bǔ)丁計(jì)劃的制定都需要與所有軟件和系統(tǒng)供應(yīng)商的密切合作。許多供應(yīng)商已經(jīng)有一個(gè)系統(tǒng),用于優(yōu)先化補(bǔ)丁并批準(zhǔn)其應(yīng)用程序與內(nèi)部補(bǔ)丁管理系統(tǒng)綁定。如前所述,霍尼韋爾有一個(gè)補(bǔ)丁批準(zhǔn)程序,用于在微軟補(bǔ)丁發(fā)布的5天內(nèi)為他們的新版軟件批準(zhǔn)可用補(bǔ)丁——且對這些重要補(bǔ)丁的批準(zhǔn)通常幾小時(shí)內(nèi)就可完成。
為系統(tǒng)打補(bǔ)丁的計(jì)劃一經(jīng)決定,用安全的手段分置補(bǔ)丁就非常關(guān)鍵。直接從業(yè)務(wù)系統(tǒng)分置不是一個(gè)好辦法。如霍尼韋爾安全指南所述:
“直接從業(yè)務(wù)系統(tǒng)將微軟修補(bǔ)程序、補(bǔ)丁和病毒定義文件更新分置到過程控制網(wǎng)絡(luò)的節(jié)點(diǎn)不是最優(yōu)的操作辦法,因?yàn)樗c‘最小化這些網(wǎng)絡(luò)節(jié)點(diǎn)間的直接通訊’的目標(biāo)相悖。”
大多數(shù)供應(yīng)商建議在控制系統(tǒng)和IT網(wǎng)絡(luò)間的緩沖區(qū)(DMZ)安置一個(gè)專用的補(bǔ)丁管理器和反病毒服務(wù)器。這樣單一服務(wù)器便可一身多職了。
最后,有許多自動(dòng)操作的工具和服務(wù)能夠幫助公司完成補(bǔ)丁管理的工作。通常包括清點(diǎn)計(jì)算機(jī),識別相關(guān)補(bǔ)丁和工作區(qū),測試補(bǔ)丁,以及向各級管理層報(bào)告網(wǎng)絡(luò)狀態(tài)信息等功能。
用這種類型的工具可以極大地提高配置關(guān)鍵補(bǔ)丁時(shí)的響應(yīng)時(shí)間,同時(shí)減少負(fù)責(zé)過程控制和安全防護(hù)的員工的工作量。比如,一家食品加工類的大公司報(bào)道稱一旦公司配置了一個(gè)補(bǔ)丁管理工具,那么只一名員工就可以成功地在超過6家大公司網(wǎng)站管理所有的PCN補(bǔ)丁工作。
計(jì)劃性地打補(bǔ)丁是正確的,應(yīng)對性地打補(bǔ)丁是錯(cuò)誤的
別誤解我的意思,我不是說不要打補(bǔ)丁!恰恰相反——給漏洞打補(bǔ)丁對良好的安全性非常重要。然而,正如我在上一篇博客提到的,像IT策略那樣定期迅速地、應(yīng)對性地、不間斷地打補(bǔ)丁并不適用于SCADA和ICS系統(tǒng)。
若要一個(gè)補(bǔ)丁策略成功,必須要適當(dāng)?shù)挠?jì)劃,并配合以測試和改變管理控制工具。如果沒有這些程序做保障,你將使控制系統(tǒng)處于高風(fēng)險(xiǎn)當(dāng)中。