除了蓄意攻擊所造成的中斷,無意識的錯誤組態或者錯誤操作,也會造成安全漏洞;由于現在的系統高度集成,并且包含很多層軟件,因此在大多數情況下,創建并運營這些系統的人,并沒有必要對軟件層之間的相互作用有較深的理解。
安全分析
正如zui近幾年所發生的一樣,分布式系統的集成程度、自動化和信息技術系統軟件的復雜程度和多重結構,為惡意攻擊創造了良好的條件。
但是,由于這些系統與SCADA的安全息息相關,因此不僅僅要預防蓄意攻擊,還應防范其它方面的危險。不管是誰創建、運營工廠自動化系統,他們對復雜的基礎設施和使用的眾多軟件層,并沒有*了解。因此,除非有適用的標準,否則的話,運行錯誤、不充分的維護、升級流程都很有可能會影響系統的可靠性和穩定性。對于系統而言,這就是“無意識病毒”;或者為懷有惡意的人打開了攻擊的大門。
為了幫助系統識別潛在攻擊,并避免攻擊的發生,需要有一個驗證矩陣。一方面,用戶可以保護軟件和IT基礎設施,這是SCADA/HMI軟件運行的基礎;另一方面,需要對自動化工程本身進行分析,尤其是SCADA/HMI工程組態及其運營。
安全分析的*個方面,是基本硬件、軟件和網絡基礎設施,它們主要用于處理操作系統安全補丁的升級程序、身份識別和密碼保護等諸如此類的事項。這種分析,并不是SCADA/HMI系統所*的,應該遵循已有的IT標準,有很多案例可供參考。因此,我們應該將重點放在另外一個方面:軟件自動化工程開發本身上,包括SCADA/HMI組態、執行和調度。
蓄意攻擊
防范有意識的攻擊非常重要。這些蓄意的攻擊者,有些是出于政治目的而攻擊生產線,而且可能是出于非常簡單的目的,例如,“如果可以實施攻擊,那為什么不去做”。即使是出于技術方面的挑戰,就像很多計算機病毒的出現一樣,并不是出于盈利或某種特定目的的攻擊,只是為了滿足某個人的虛榮心。
在過去15年間,編程技術、軟件和通訊技術的發展進步,遠遠超過了大多數自動化軟件工具和產品的更新換代。即使用戶將軟件工具升級到版本,也不能保護它,因為大多數解決方案都是基于落后的技術。因此只要愿意,這些精通科技的少年就有可能破解它。
潛在威脅
隨著系統復雜性的增加,在現場進行調試時,也許并不可能*模擬每一種假設場景,所以在設計中要使用具有本質安全的技術和架構、在單元測試時確保軟件質量和運行穩定性。事實上,很多系統并沒有應用更新和更安全的技術;相反,他們創建了“封裝器”,用代碼層和模塊來封裝舊的代碼和技術以保護他們的投資。
當嘗試在新計算機上運行舊部件,并且使用新操作系統、新網絡和新運行規程時,就會增加潛在的隨機問題,同時還會將核心部件暴露出來。這種情況容易形成漏洞,導致巨大的風險,很可能會造成不安全狀況的發生。
在正常運行期間出現問題,往往相對容易被檢測到,但是在某些特殊情況下,有時更容易出現錯誤,例如:在工作任務繁忙或者異常工況,網絡或計算機故障或出現多個報警時,執行先前未執行的故障路徑代碼或系統恢復代碼,或不正確的執行指令。在執行關鍵任務時,zui終用戶期望這些潛在的錯誤,能夠在zui壞的情況、異常工藝工況下被識別出來并被進行妥善的處理。
舉個無意識威脅導致系統被破壞的例子:在某個工廠夜間倒班時,SCADA/HMI和PLC的通訊可能會發生故障,導致工藝停止。故障發生時,系統已經正常運行很長時間了,項目組態也沒有做過任何修改,因此可以懷疑受到病毒感染或者蓄意的網絡攻擊。
經過整夜的查看操作員和工藝過程的監控,相關人員了解到某人已經激活了操作員電腦的“屏幕保護”程序;由于某個電腦的硬件問題,在關閉顯示器的時候,同時關閉了“用于RS-232通訊的8250芯片”,而RS232通訊端口只能通過斷電和上電來重新啟動。這個問題不是隨機發生或是蓄意的,它發生在夜間換班的時候:運行人員離開較長時間,屏幕保護程序啟動。但是IT技術人員在決定使用屏幕保護程序來保護屏幕和節省能源的時候,并沒有意識到硬件的這種副作用。
上面給出的例子,顯示了無意識威脅的典型步驟:(1)自動化系統軟件、硬件交互具有很多層,非常復雜,運行人員和IT技術人員并不具備全部的知識。這種做事方式沒有錯,他們不可能也沒有必要了解所有的東西。(2)一般認為,系統或環境的輕微修改,或者運行流程的變化,*沒有危害,但是有時也會帶來意想不到的副作用;(3)由于不可探測的潛在錯誤以及相互連接的各層級間不可預測的工況,副作用可能不斷傳導積累,導致更大的問題;(4)造成的錯誤或者問題,可能在一段時間內并不會被檢測到,或者看起來具有隨機屬性。
項目周期安全
為了系統地防范蓄意攻擊和識別潛在的安全隱患,企業應該對整個項目周期進行分析。在一個簡化的模型構架下,對整個項目周期的分析主要由以下4個步驟組成:
1.選擇技術、結構和工具;
2.項目組態和編程;
3.部署和調試;
4.運營和維護。
對每個階段了解的越多,越有助于在項目中融入安全特性。根據以往經驗,“部署和調試”對大多數系統來講,是zui容易出現漏洞的環節之一。
技術和結構安全
對一輛生產于1980年代的汽車來講,僅僅通過增加安全氣囊、傳感器以及其它技術,還不足以提升對司機和乘客的安全保障;同理,對于工廠來說也一樣,只有通過改造現有自動化系統軟件基礎,才能使其在當今的運營環境下確保安全。這種升級換代還可以釋放現有技術條件下的潛在的收益,而基于傳統技術核心的解決方案并不能充分利用。
由于缺少指針和內存保護,ActiveX組件、COM、DCOM、開放的TCP/IPSocket等,這些老的技術,在本質上并不是十分安全的,比如用VB腳本和VBA編寫的解釋性腳本,以及用C或C++語言編寫的程序,因此應避免使用這些技術。推薦的技術包括編譯和用于腳本的內存保護性語言,包括C#、VB.NET、具有純因特網技術的網絡客戶端(配置“安全砂箱”或“局部信任”)、WCF(Windows通訊基礎)、網絡服務和SQL數據庫。
編程安全
工程組態和運行的良好經驗,包括在SQL數據庫或服務器上的集中組態,使得分布式安全接入、在項目升級時內置的變更管理和版本控制、遠程診斷、*測試新應用、不間斷運行的升級系統成為可能。
在過去,測試項目的方法僅僅是運行應用程序。現在的標準則要求在組態階段進行更高層次的確認,同時使用專門的仿真工具、配置和性能分析工具。
病毒和隨機應用錯誤所導致的潛在問題比較相似。代碼覆蓋率分析算法表明,僅僅通過測試案例來確保可靠性幾乎是不可能的。例如,一個僅有10個“IF-Then-Else”指令的程序,如果*測試,就需要運行1024個測試用例。因此,安全和可靠性確認應該內嵌到系統的結構、技術和編程流程中,而不僅僅是通過強力測試或增加外部封裝器來實現。系統還應具有內置的追蹤和版本管理系統,這樣工具自己就可以自動實現日志和配置變更管理。
部署和調試安全
部署和調試是安全事項中zui容易出問題的領域之一,在zui近發生的病毒事件中,很多與其有關。
在當前的工業環境下,大多數仍然在服役的系統,使用的都是1980年代或1990年代的技術,而那時的SCADA/HMI軟件包的運行,依賴于成百上千的獨立組態文件和通訊驅動器的動態鏈接庫(DLL)文件。意想不到的錯誤很容易發生,編寫病毒程序只需要zui基本的編程技巧,zui簡單的甚至只需要在文件夾中扔幾個文件即可。
即使當單個文件自身采用加密或二進制文件的形式,這些文件與原始項目之間并沒有。任何人、在任何電腦上都可以創建額外的文件,只需將其扔到文件夾中就可以改變項目的行為模式。要想弄清楚哪個報警或者設定值變更產生了威脅,所需要的知識也許非常復雜,但是病毒程序本身需要的僅僅是zui基本的編程技巧,而錯誤的或拷貝錯誤文件帶來的風險卻非常高。現在,新一代的工具基于加密過的結構化查詢(SQL)語言,并且具有只讀屬性,這樣就可以確保組態文件的安全部署。
下面所列的就是一個簡單的檢查清單,可以降低對舊系統的威脅,也有助于編制新系統的技術規格書。
舊產品和裝置
應該將配置文件拷貝到新文件夾中,同時確保文件夾是空的;在運行項目軟件時,通過微軟操作系統登錄的用戶應僅具有只讀權限。對于非常關鍵的系統而言,應該有外部的設備可以檢查整個文件的大小,并對安裝于產品的文件進行校驗,與系統集成公司遠程創建的文件相比較。
選擇和實施新方案
理想情況下,整個項目的配置文件應該保存在一個配置文件中,比如加密并具有只讀屬性的SQL數據庫文件中。文件的版本管理和變更管理應該由內置功能完成,不能依賴于外部工具或手動程序。
舊系統容易出漏洞的另外一個方面是通訊協議驅動模型,協議依賴于外部DLL文件,這些文件由開放的工具包開發,這些文件很容易被其它DLL文件所替代,這可能會導致系統的崩潰。在新一代工具中,驅動器獨立運行,與應用工程的其它部分沒有直接的,而且可以具有數字驗證和只讀設置,這樣就可以避免在調試完成后這些DLL文件被修改或替換。
運行和維護
配置良好的安全系統,應包括角色和群組許可功能,這些功能在以前的大多數系統中都已經存在。大多數系統都能滿足監管的要求,比如美國FDACFR21第11部分。運行和維護方面的新功能主要用于消除不安全的實時運行部件,比如Active-x組件,在升級項目時增加內置的保護功能、變更管理功能、版本控制功能、以及遠程診斷或不停機升級的能力。對項目實施版本控制(審查跟蹤)、以及在同一個計算機上管理多個版本的能力,都十分關鍵。除了用戶接口安全外,還應在數據定義表格中,在圖形顯示以及每個標簽上定義數據安全。
升級軟件工具是造成系統中斷的主要原因,有時會對運行中的應用軟件造成意想不到的干擾。現代系統應該允許新項目和軟件工具新版本的安裝,而不必卸載先前的版本;在同一個服務器上并列運行不同版本,運行先前系統的執行引擎和計劃升級的版本,這樣就可以在對生產線進行升級前進行驗證測試。
及時更新
如前所述,僅僅通過增加部件,幾乎不可能將建造于1980年代的汽車變得像款式的汽車那樣安全。同樣的道理,也適用于工業自動化應用中所使用的軟件。很多系統所使用的軟件基礎,創建于1980年代和1990年代。即使它們在那個年代很出色,也不能滿足當今的安全需求;過去10年涌現了很多新技術,幾乎每周都會發生變化,但是它們無法充分利用這些技術。
軟件、通訊和用戶接口技術方面的發展在不斷加速,因此大多數工廠,并不需要更新全部的自動化系統。無論是在系統安全,還是在運行穩定性、可靠性和靈活性方面,SCADA和HMI系統的更新,都可以帶來很多*的好處,還可以提供信息優化,使其能夠創造,而不需要僅僅依賴于對更高安全性的需求。
對一個真正的現代技術來講,軟件更新的預期回報不能僅僅通過收益的百分比來度量,而應在倍增系數基礎上對其進行度量,因為其所避免的潛在安全事故,很可能對產量造成巨大的影響。此外,這些系統管理的資產還可以獲得更高的效率。
上一篇:怎樣避免數顯測力計數據誤差
免責聲明
- 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://www.xashilian.com。違反者本網將追究相關法律責任。
- 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
- 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
2025第十一屆中國國際機電產品交易會 暨先進制造業博覽會
展會城市:合肥市展會時間:2025-09-20