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

Astra-Zeneca 圖解,取自“SCADA和ICS補?。涸谶M退維谷之境”的演講
來源:Joakim Moby, Astra-Zeneca,2006年工業(yè)標(biāo)準(zhǔn)年會博覽會
第二個子系統(tǒng)是記錄了新發(fā)布的補丁及其對進程操作的重要性水平的程序。當(dāng)公布一個新漏洞和/或者一個可用的補丁方案,此程序就可以追蹤記錄它的潛在影響——對公司的控制系統(tǒng)是好還是壞。然后該補丁就會被評估,其風(fēng)險評估的結(jié)果將被用于確定補丁被采納的優(yōu)先級。
例如,風(fēng)險評估可以追蹤一系列問題的處理進程以判定補丁的緊迫性和需要進行測試的級別。這些問題可能包括以下關(guān)注點,如“補丁還處于研發(fā)期嗎?”或者“供應(yīng)商所指定的安全級別是什么?”或者“它是否受到過供應(yīng)商的測試?”
此風(fēng)險評估可以確定整個的補丁實施層次。做這個評估的重要指導(dǎo)可以從供應(yīng)商網(wǎng)站處獲得,如霍尼韋爾的微軟安全修補資格矩陣(需要登錄許可才能訪問),它就報告了新近發(fā)布的補丁的測試狀態(tài)。
執(zhí)行補丁應(yīng)對計劃
補丁實施層次是預(yù)先與應(yīng)對計劃綁定在一起的。下面的表格列舉了幾種不同的應(yīng)對計劃。這些計劃是依照不使用補丁的風(fēng)險高低而區(qū)分的。
比如,如果一個給定的補丁所針對的漏洞風(fēng)險低,那么其采納和測試循環(huán)的工作都可以暫緩。若風(fēng)險高,那么該補丁就需要盡快配置。若需要比下面列示的三種更多(更少)的應(yīng)對計劃,也可按需創(chuàng)建。
任何補丁計劃的制定都需要與所有軟件和系統(tǒng)供應(yīng)商的密切合作。許多供應(yīng)商已經(jīng)有一個系統(tǒng),用于優(yōu)先化補丁并批準(zhǔn)其應(yīng)用程序與內(nèi)部補丁管理系統(tǒng)綁定。如前所述,霍尼韋爾有一個補丁批準(zhǔn)程序,用于在微軟補丁發(fā)布的5天內(nèi)為他們的新版軟件批準(zhǔn)可用補丁——且對這些重要補丁的批準(zhǔn)通常幾小時內(nèi)就可完成。
為系統(tǒng)打補丁的計劃一經(jīng)決定,用安全的手段分置補丁就非常關(guān)鍵。直接從業(yè)務(wù)系統(tǒng)分置不是一個好辦法。如霍尼韋爾安全指南所述:
“直接從業(yè)務(wù)系統(tǒng)將微軟修補程序、補丁和病毒定義文件更新分置到過程控制網(wǎng)絡(luò)的節(jié)點不是最優(yōu)的操作辦法,因為它與‘最小化這些網(wǎng)絡(luò)節(jié)點間的直接通訊’的目標(biāo)相悖。”
大多數(shù)供應(yīng)商建議在控制系統(tǒng)和IT網(wǎng)絡(luò)間的緩沖區(qū)(DMZ)安置一個專用的補丁管理器和反病毒服務(wù)器。這樣單一服務(wù)器便可一身多職了。
最后,有許多自動操作的工具和服務(wù)能夠幫助公司完成補丁管理的工作。通常包括清點計算機,識別相關(guān)補丁和工作區(qū),測試補丁,以及向各級管理層報告網(wǎng)絡(luò)狀態(tài)信息等功能。
用這種類型的工具可以極大地提高配置關(guān)鍵補丁時的響應(yīng)時間,同時減少負責(zé)過程控制和安全防護的員工的工作量。比如,一家食品加工類的大公司報道稱一旦公司配置了一個補丁管理工具,那么只一名員工就可以成功地在超過6家大公司網(wǎng)站管理所有的PCN補丁工作。
計劃性地打補丁是正確的,應(yīng)對性地打補丁是錯誤的
別誤解我的意思,我不是說不要打補丁!恰恰相反——給漏洞打補丁對良好的安全性非常重要。然而,正如我在上一篇博客提到的,像IT策略那樣定期迅速地、應(yīng)對性地、不間斷地打補丁并不適用于SCADA和ICS系統(tǒng)。
若要一個補丁策略成功,必須要適當(dāng)?shù)挠媱潱⑴浜弦詼y試和改變管理控制工具。如果沒有這些程序做保障,你將使控制系統(tǒng)處于高風(fēng)險當(dāng)中。