方棟梁 劉圃卓 秦 川 宋站威 孫玉硯 石志強(qiáng) 孫利民
(物聯(lián)網(wǎng)信息安全技術(shù)北京市重點(diǎn)實驗室(中國科學(xué)院信息工程研究所) 北京 100093) (中國科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 北京 100049)
根據(jù)美國國家標(biāo)準(zhǔn)技術(shù)研究院(NIST)給出的定義[1],工業(yè)控制系統(tǒng)(industrial control system, ICS)是一個涵蓋了多種類型的控制系統(tǒng)通用術(shù)語,包括監(jiān)控和數(shù)據(jù)采集(supervisory control and data acquisition, SCADA)系統(tǒng)、集散控制系統(tǒng)(distributed control systems, DCS),以及其他控制系統(tǒng),如可編程邏輯控制器(programmable logic controllers, PLC),常用于工業(yè)領(lǐng)域和關(guān)鍵基礎(chǔ)設(shè)施的控制系統(tǒng)中.工業(yè)控制系統(tǒng)是國家基礎(chǔ)設(shè)施的重要組成部分,廣泛應(yīng)用于能源、制造、交通、軍工等行業(yè),是關(guān)乎國計民生的重要資源.
工控協(xié)議是控制系統(tǒng)實現(xiàn)實時數(shù)據(jù)交換、數(shù)據(jù)采集、參數(shù)配置、狀態(tài)監(jiān)控、異常診斷、命令發(fā)布和執(zhí)行等眾多功能有機(jī)聯(lián)動的重要紐帶.早期工業(yè)控制系統(tǒng)運(yùn)行在物理隔離的環(huán)境下,獨(dú)立于傳統(tǒng)互聯(lián)網(wǎng),因此,相關(guān)設(shè)計與操作人員很少考慮到網(wǎng)絡(luò)攻擊的可能,且普遍存在僥幸心理[2].這導(dǎo)致大量協(xié)議在設(shè)計方面缺乏認(rèn)證、加密等安全機(jī)制;在實現(xiàn)方面也對異常的協(xié)議數(shù)據(jù)考慮不充分,容易留有安全隱患.在“工業(yè)4.0”的時代背景下,工業(yè)控制系統(tǒng)越來越多地采用標(biāo)準(zhǔn)化解決方案.然而,這打破了工控系統(tǒng)原有的專用性和封閉性,使其面臨更廣泛的攻擊威脅.事實上,近些年針對工控系統(tǒng)的攻擊事件頻發(fā),文獻(xiàn)[3]回顧了歷史上發(fā)生過的重大安全事件,并指出隨著形勢的發(fā)展,面向以工業(yè)互聯(lián)網(wǎng)為基礎(chǔ)的關(guān)鍵基礎(chǔ)設(shè)施的威脅越來越嚴(yán)峻.其中,攻擊者充分理解相關(guān)的工控協(xié)議諸多細(xì)節(jié),并利用協(xié)議在設(shè)計、實現(xiàn)或應(yīng)用方面的脆弱點(diǎn),是順利實施攻擊事件的一個重要因素.如2010年,“Stuxnet”病毒劫持了S7協(xié)議實現(xiàn)代碼的關(guān)鍵函數(shù),通過精確地篡改和偽造S7協(xié)議報文,成功攻擊了伊朗核電站,導(dǎo)致伊朗核計劃推遲數(shù)年[4].2017年,根據(jù)安全廠商ESET發(fā)布的消息,“Industroyer”病毒成功利用4種電力工控協(xié)議(IEC 60870-5-101,IEC 60870-5-104,IEC 61850-MMS,OPC DA),通過控制變電站中的斷路器,攻擊烏克蘭電力系統(tǒng),造成大規(guī)模停電事件[5].同年,根據(jù)FireEye公司發(fā)布的消息[6],針對施耐德安全儀表系統(tǒng)的惡意軟件“TRITON”,利用私有協(xié)議TriStation進(jìn)行的攻擊可造成工業(yè)過程無法工作.
綜上所述,深度剖析ICS的協(xié)議安全是理解工控系統(tǒng)安全威脅的一個重要角度,將為工業(yè)控制系統(tǒng)的安全防護(hù)提供參考和指導(dǎo).本文通過調(diào)研和整理學(xué)術(shù)界、工業(yè)界對工控協(xié)議的安全研究工作,包括學(xué)術(shù)研究論文、標(biāo)準(zhǔn)指南、攻擊事件等,從協(xié)議的角度幫助理解工業(yè)控制系統(tǒng)的安全性.
Fig. 1 Typical industrial control network topology圖1 典型工控網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
工控協(xié)議實現(xiàn)了ICS各層設(shè)備組件之間的連接和通信交互,并與各設(shè)備組件共同形成了工業(yè)控制網(wǎng)絡(luò).從工業(yè)控制系統(tǒng)的業(yè)務(wù)分層看,一個典型的工控網(wǎng)絡(luò)可分為3層:管理層(企業(yè)辦公網(wǎng)絡(luò))、控制層(過程控制與監(jiān)控網(wǎng)絡(luò))、現(xiàn)場設(shè)備層(現(xiàn)場控制網(wǎng)絡(luò))[7-8],對應(yīng)的工控網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示.根據(jù)傳輸信息的功能不同,各層的工控協(xié)議通信的實時性要求也不同,如在現(xiàn)場設(shè)備層,要求實時通信;而在管理層,則允許非實時通信.實際上,管理層的企業(yè)辦公網(wǎng)使用的協(xié)議與傳統(tǒng)互聯(lián)網(wǎng)協(xié)議一致(如HTTP,HTTPS,POP3等),此類協(xié)議已有很多分析和討論,此處不再贅敘.本文討論的工控協(xié)議是指應(yīng)用于控制層和現(xiàn)場設(shè)備層的通信協(xié)議.
工控協(xié)議在不同場景中傳輸相似功能的內(nèi)容,可大致分為3類[9].
1) 控制信息(control message)
控制信息在控制器和現(xiàn)場設(shè)備之間傳輸,并且是控制器中控制回路的輸入和輸出.因此,它具有很高的實時性和確定性要求.
2) 診斷信息(diagnostics message)
診斷信息用來描述系統(tǒng)當(dāng)前的狀態(tài),例如通過傳感器獲得的溫度、濕度、電流、電壓值等信息.這些信息用于監(jiān)測廠站的健康狀態(tài).通常情況下,控制系統(tǒng)傳輸診斷信息的數(shù)據(jù)量大.相比于實時性和確定性,診斷信息的傳輸更強(qiáng)調(diào)速度.
3) 安全信息(safety message)
安全信息用于控制一些關(guān)鍵功能,如安全關(guān)閉設(shè)備并控制保護(hù)電路的運(yùn)行.傳統(tǒng)上,制造單元的安全聯(lián)鎖裝置使用可靠的安全繼電器進(jìn)行硬接線,以確保單元內(nèi)部在有操作員的情況下機(jī)器無法運(yùn)行.但這種接線不容易重新配置,且出現(xiàn)問題時進(jìn)行故障排查非常困難.通過傳輸?shù)陌踩畔?,可以更便捷地在各個組件之間協(xié)調(diào),極大地提高了系統(tǒng)的重新配置和故障排除能力.
根據(jù)使用的通信技術(shù),工控協(xié)議分為4類[8],如圖2所示:傳統(tǒng)控制網(wǎng)絡(luò)協(xié)議、現(xiàn)場總線協(xié)議、工業(yè)以太網(wǎng)協(xié)議和工業(yè)無線協(xié)議.當(dāng)前廣泛應(yīng)用的是工業(yè)以太網(wǎng)協(xié)議和現(xiàn)場總線協(xié)議,相比于早期的傳統(tǒng)控制網(wǎng)絡(luò)協(xié)議,其優(yōu)點(diǎn)有2個:1)減少了用于通信的物理纜線,從而減少潛在故障點(diǎn)(如線路接頭松動);2)提高了通信系統(tǒng)的可維護(hù)性和擴(kuò)展性(如向系統(tǒng)擴(kuò)展添加新的設(shè)備).這些優(yōu)點(diǎn)使得我們能更方便地構(gòu)建復(fù)雜的大型控制系統(tǒng).
Fig. 2 Protocol classification of industrial control system圖2 工業(yè)控制系統(tǒng)的協(xié)議分類
相對于有線協(xié)議,工業(yè)無線協(xié)議有更大優(yōu)勢,例如進(jìn)一步減少了所需的線纜數(shù)量,能更靈活地配置傳感器的位置等.所以,Moyne等人[9]認(rèn)為工業(yè)無線網(wǎng)技術(shù)是工控網(wǎng)絡(luò)的未來,但需要解決安全、可靠、實時傳輸?shù)葐栴}[9-10].
相比傳統(tǒng)的互聯(lián)網(wǎng)協(xié)議,工控協(xié)議傳輸?shù)臄?shù)據(jù)對物理世界有直接的控制和影響.因此,工業(yè)控制系統(tǒng)的通信則被稱為控制網(wǎng)絡(luò),而傳統(tǒng)互聯(lián)網(wǎng)一般被稱為數(shù)據(jù)網(wǎng)絡(luò).結(jié)合文獻(xiàn)[1,9-10],我們總結(jié)了3個方面的區(qū)別:
1) 通信場景
工控協(xié)議廣泛應(yīng)用于關(guān)鍵基礎(chǔ)設(shè)施領(lǐng)域,如電力、化工、制造、軍工、樓宇、交通等.其運(yùn)行的環(huán)境經(jīng)常遇到如潮濕、灰塵、高溫等不利的情況.工控協(xié)議傳輸?shù)臄?shù)據(jù)能直接影響物理世界,如機(jī)械臂運(yùn)動、控制斷路器開合、電機(jī)啟動、反應(yīng)液的水位等.通信故障對物理世界可能有嚴(yán)重的影響,如造成生產(chǎn)損失、環(huán)境毀壞,甚至危及生命.
傳統(tǒng)互聯(lián)網(wǎng)協(xié)議如HTTP,HTTPS,POP3等主要應(yīng)用于數(shù)據(jù)分享和傳輸,運(yùn)行在清潔和溫度受控的環(huán)境下.數(shù)據(jù)的產(chǎn)生和使用一般需要人的參與,如社交、搜索、郵件、新聞資訊、電子商務(wù)等.通信故障影響相對較小,可能給生活帶來不便,但大部分都可通過其他方式進(jìn)行彌補(bǔ)和解決.
2) 通信要求
工控協(xié)議可直接影響物理世界,它的實時性要求相對較高.如運(yùn)動控制的響應(yīng)時間要求的范圍在0.25~1 ms,過程控制的響應(yīng)時間要求的范圍在1~10 ms[10].除此之外,對于控制現(xiàn)場設(shè)備的工控協(xié)議一般還要求傳輸延遲是穩(wěn)定的,即要求通信延遲的抖動小.因為抖動可能造成系統(tǒng)震蕩,產(chǎn)生負(fù)面影響.同時,工控系統(tǒng)一般還要求周期性的采樣系統(tǒng)的狀態(tài)信息,在這種情況下,設(shè)備是長時間“在線”的,數(shù)據(jù)的交互也是持續(xù)的.
傳統(tǒng)互聯(lián)網(wǎng)協(xié)議如HTTP,HTTPS,POP3等則對時延要求較低,大部分情況下,幾百毫秒甚至幾秒時間都是可接受的.同時,這些協(xié)議一般不要求長時間在線.
3) 通信過程
工控系統(tǒng)融合了IT領(lǐng)域和OT領(lǐng)域的技術(shù),在通信網(wǎng)絡(luò)上,這種融合是分層的.現(xiàn)實中的工控網(wǎng)絡(luò)一般會分多層,比如普渡模型[11]將工控網(wǎng)絡(luò)分為6層.同時,作用于OT領(lǐng)域的工控協(xié)議,其傳輸?shù)臄?shù)據(jù)包通常較小,尤其在低層次的控制回路中,僅傳輸單個測量值或數(shù)字值,通常只有幾個字節(jié).報文傳輸?shù)目煽啃灾饕蕾囉趫笪闹械耐暾宰侄稳鏑RC字段,冗余報文機(jī)制如GOOSE,SV協(xié)議等.
傳統(tǒng)互聯(lián)網(wǎng)協(xié)議層次較為簡單,一般分為局域網(wǎng)和廣域網(wǎng).單次傳輸?shù)臄?shù)據(jù)量有幾千個字節(jié)或更多的數(shù)據(jù),數(shù)據(jù)包大小至少為64B.同時,傳統(tǒng)的互聯(lián)網(wǎng)協(xié)議,其傳輸可靠性一般由TCP協(xié)議提供.雖然TCP協(xié)議存在校驗字段,但由于遠(yuǎn)距離傳輸,容易出現(xiàn)丟包的情況,所以它還依賴確認(rèn)應(yīng)答機(jī)制、超時重傳機(jī)制等保障數(shù)據(jù)的可靠交互.
根據(jù)文獻(xiàn)[12-13],安全威脅是指可能造成信息丟失或功能失效等情況發(fā)生的事件.一般而言,安全威脅主要有2類[14]:1)蓄意攻擊.如工業(yè)間諜、恐怖組織活動等,可能帶來經(jīng)濟(jì)、政治和軍事等方面的益處,也可能是炫耀技術(shù)能力或?qū)嵤﹫髲?fù)等.2)無意事件.它可能源于安全事故、設(shè)備故障、疏忽大意和自然災(zāi)害等因素.
隨著通信技術(shù)的發(fā)展和進(jìn)步,如高性能硬件的推出和新的保障機(jī)制的提出,系統(tǒng)運(yùn)行的可靠性得到顯著改善,這使得無意事件帶來安全威脅的影響逐漸減小.相對地,隨著工業(yè)控制系統(tǒng)的信息化水平提高,越來越多的設(shè)備和系統(tǒng)直接或間接地接入互聯(lián)網(wǎng),這打破了工控系統(tǒng)原有的封閉性和隔離性,加劇了其面臨的蓄意攻擊安全威脅.因此,我們更關(guān)注工控協(xié)議蓄意攻擊相關(guān)的安全威脅,具體地,本節(jié)將從工控協(xié)議的脆弱性、攻擊模式和攻擊影響3個角度來討論工控協(xié)議的安全威脅.
根據(jù)IETF RFC 4949[15]標(biāo)準(zhǔn),任何一個系統(tǒng)都可能存在3種類型的脆弱點(diǎn):設(shè)計上的脆弱點(diǎn)、實現(xiàn)上的脆弱點(diǎn)和操作管理方面的脆弱點(diǎn).如協(xié)議設(shè)計上可能存在認(rèn)證繞過/缺失、完整性缺失、信息明文傳輸?shù)热毕荩粎f(xié)議實現(xiàn)上的脆弱點(diǎn)主要包括協(xié)議處理模塊中的堆棧溢出、命令注入、空指針引用等漏洞.操作管理方面的脆弱性與協(xié)議自身的關(guān)系較弱,可通過分級隔離、人員管理等方式解決.因此,工控協(xié)議的脆弱性研究更關(guān)注協(xié)議設(shè)計和協(xié)議實現(xiàn)2個方面.
1) 協(xié)議設(shè)計中存在的脆弱性
工控協(xié)議設(shè)計之初更關(guān)注功能的完備和運(yùn)行時的性能保障,對安全機(jī)制考慮較少.表1總結(jié)了14種典型工控協(xié)議的設(shè)計缺陷,涵蓋了4種典型工控場景,包括過程自動化、智能樓宇、智能電網(wǎng)、智能儀表,涉及當(dāng)前主流廠商如施耐德、西門子、羅克韋爾等.顯然,工控協(xié)議設(shè)計在認(rèn)證、授權(quán)、加密和完整性等方面普遍存在缺陷和不足.這些設(shè)計缺陷和不足可進(jìn)一步分為3類.
Table 1 Defects in the Design of Typical Industrial Control Protocols
① 協(xié)議設(shè)計缺乏安全機(jī)制.進(jìn)行協(xié)議設(shè)計時未考慮安全機(jī)制,如Modbus,DNP3協(xié)議等.廣泛應(yīng)用于電力自動化行業(yè)的MMS[33]協(xié)議標(biāo)準(zhǔn)在“Security Considers”章節(jié)明確指出,MMS協(xié)議高級別的安全設(shè)計不在標(biāo)準(zhǔn)的考慮范圍內(nèi).
② 協(xié)議對安全機(jī)制描述不具體,導(dǎo)致編程人員無法實現(xiàn)定義“模糊”的安全機(jī)制.如GOOSE協(xié)議報文結(jié)構(gòu)設(shè)計中定義了一個security字段,如圖3所示,該字段用來作為報文的數(shù)字簽名,對通信過程傳輸?shù)膱笪奶峁┱J(rèn)證和完整性保障.同時,該字段被“ANY OPTIONAL”修飾,表明該字段是一個可選字段,可以不出現(xiàn)在報文中.鑒于工控場景的高實時性要求以及協(xié)議標(biāo)準(zhǔn)缺乏對該安全字段的詳細(xì)定義,大部分廠商都沒有實現(xiàn)該安全字段.
③ 協(xié)議安全機(jī)制設(shè)計存在缺陷.如BACNet協(xié)議、OPC-UA協(xié)議、ANSI C12.22協(xié)議等,它們提供安全機(jī)制,但未經(jīng)充分檢查和驗證,存在潛在的攻擊方式.發(fā)現(xiàn)“安全協(xié)議”的設(shè)計缺陷主要有2種方法,即基于攻擊測試[19]來檢測和通過形式化方法[22]進(jìn)行檢查.
Fig. 3 Definition of GOOSE message structure圖3 GOOSE協(xié)議報文結(jié)構(gòu)定義
2) 協(xié)議實現(xiàn)中存在的脆弱性
在實現(xiàn)方面,編程人員容易默認(rèn)“隔離”的工控通信環(huán)境是可信的,處理協(xié)議通信數(shù)據(jù)時未充分考慮畸形報文,導(dǎo)致程序可能產(chǎn)生漏洞,如內(nèi)存溢出漏洞、非法內(nèi)存訪問漏洞等.CVE,CNVD,ICS-CERT等平臺的漏洞信息顯示,工控協(xié)議在實現(xiàn)上存在多種類型的漏洞,表2列舉了CNVD中部分常見的工控協(xié)議實現(xiàn)漏洞.
同時,有些工控協(xié)議雖然設(shè)計了加密、認(rèn)證等安全機(jī)制.但這些安全機(jī)制在實現(xiàn)時,由于錯誤的配置或簡化的實現(xiàn),使得這些安全機(jī)制存在被繞過的可能.例如西門子公司最新版本的S7CommPlus私有協(xié)議在會話階段提供加密、認(rèn)證等安全機(jī)制,但Biham等人[16]通過對該協(xié)議進(jìn)行分析發(fā)現(xiàn)該協(xié)議存在安全缺陷:協(xié)議認(rèn)證過程中所有同型號工控設(shè)備采用相同的密鑰.一旦成功逆向破解一款工控設(shè)備使用的密鑰,相同版本固件所有工控設(shè)備的通信都將變得不安全.施耐德電氣公司設(shè)計的UMAS協(xié)議,在管理控制Modicon M221控制器時提供密碼認(rèn)證安全機(jī)制.但Kalle等人[34]發(fā)現(xiàn)該安全機(jī)制的實現(xiàn)存在重大缺陷,編程人員將安全保障至關(guān)重要的Hash密鑰存儲在一個固定的地址,一旦攻擊者發(fā)送數(shù)據(jù)重寫該固定地址即可將該Hash密鑰覆蓋,從而繞過認(rèn)證機(jī)制,最終能夠繞過授權(quán)執(zhí)行任意操作.
Table 2 Common Industrial Control Protocol Implementation Vulnerabilities
根據(jù)美國國家標(biāo)準(zhǔn)與技術(shù)研究院的報告[1],工控系統(tǒng)和任意信息系統(tǒng)一樣,都有3個安全目標(biāo):可用性、完整性和機(jī)密性.相對傳統(tǒng)的IT信息系統(tǒng),工控系統(tǒng)的故障將直接影響物理世界,可能造成極其嚴(yán)重的后果,例如造成生產(chǎn)中斷、環(huán)境毀壞,甚至危及人身安全.因此,工控協(xié)議對可用性和完整性要求更高.分析通信協(xié)議攻擊模式,主要考慮3個方面,如表3所示:
Table 3 Introduction of Potential Attack Model of Industrial Control Protocol
2.2.1 破壞可用性
工控系統(tǒng)保障處理過程的連續(xù)可靠是最基本的要求,對組件和網(wǎng)絡(luò)有極高的可用性安全需求.任何預(yù)期之外的停機(jī)或時延是不可接受的.正常的停機(jī)過程一般需要提前幾天甚至幾周的安排、測試和準(zhǔn)備工作[1].破壞可用性的關(guān)鍵在于使控制系統(tǒng)拒絕服務(wù)或無法正常提供服務(wù),我們總結(jié)了3種攻擊模式.
1) 利用協(xié)議程序漏洞引發(fā)程序崩潰
利用程序崩潰可攻擊2類重要目標(biāo):①位于現(xiàn)場設(shè)備層的工控設(shè)備.例如思科公司的Rittle[35]發(fā)現(xiàn)了一個應(yīng)用于Schneider Electric Modicon M580 SV2.80 PLC的UMAS協(xié)議漏洞.攻擊者向目標(biāo)設(shè)備發(fā)送一個精心構(gòu)造的UMAS協(xié)議數(shù)據(jù)包,使目標(biāo)設(shè)備無法進(jìn)行遠(yuǎn)程通信,導(dǎo)致拒絕服務(wù).Luo等人[36]發(fā)現(xiàn)開源的IEC 104協(xié)議解析庫存在非法段內(nèi)存訪問漏洞,發(fā)送定制的IEC 104通信數(shù)據(jù)包將造成IEC 104協(xié)議解析程序發(fā)生崩潰,導(dǎo)致拒絕服務(wù).②位于控制層的監(jiān)控軟件.例如Dliangfun[37]發(fā)現(xiàn)的一個能導(dǎo)致MELSoft協(xié)議拒絕服務(wù)的高危漏洞.利用該漏洞,攻擊者以中間人的方式向監(jiān)控軟件輸入定制的數(shù)據(jù)包,可導(dǎo)致40款Mitsubishi監(jiān)控軟件發(fā)生崩潰,造成拒絕服務(wù),如圖4所示:
Fig. 4 Denial of service attacks on supervisory software圖4 監(jiān)控軟件拒絕服務(wù)攻擊
Fig. 5 The relationship topology of the internal control components of the water tank[38]圖5 水罐內(nèi)部控制組件的關(guān)系拓?fù)鋄38]
2) 篡改業(yè)務(wù)控制流程,造成控制過程異常
2010年,Stuxnet[4]蠕蟲篡改了PLC控制程序,加快了伊朗核電站離心機(jī)的速度,并修改協(xié)議響應(yīng)報文以欺騙控制中心,最終影響了伊朗的核計劃實施.Chen等人[38]分析了一種有關(guān)控制時序的潛在攻擊,如圖5所示.圖5中有2個用來盛水的水罐LIT101和LIT103.安全工作狀態(tài)下的水罐有2個要求:①水罐的水量不能為空;②水罐的水量不能溢出.因此,該自動化系統(tǒng)的一個重要目標(biāo)是維持水流的進(jìn)出平衡.如果攻擊者篡改了控制邏輯,例如控制水泵P101關(guān)閉,電動閥MV101打開,并從外部泵入過量的水到水罐LIT101,最終會導(dǎo)致該水罐進(jìn)入一個不安全的狀態(tài)——水位溢出.
3) 發(fā)送“垃圾”數(shù)據(jù),惡意消耗有限的計算資源
如果工控設(shè)備花費(fèi)過量的時間/資源處理“垃圾”數(shù)據(jù),將造成關(guān)鍵業(yè)務(wù)流程得不到及時處理.Niedermaier等人[39]對6個廠商的16種不同類型的PLC發(fā)送過量的數(shù)據(jù)包進(jìn)行測試,發(fā)現(xiàn)這種方式會影響大部分PLC設(shè)備掃描執(zhí)行的周期時長,可造成PLC掃描周期延長甚至停止工作.如圖6所示,如果傳感器檢測到容器的位置時,打開閥門的時間出現(xiàn)了延遲,可能導(dǎo)致液體注入錯誤的位置,如灑在傳送帶上.
Fig. 6 Fill the container on the transport belt with liquid[39]圖6 向運(yùn)輸帶上的容器中注入液體[39]
許婷[40]分析了實際生產(chǎn)中的一起由故障引起的某變電站全站通信中斷事故.如圖7所示,某變電站系統(tǒng)中Ⅱ機(jī)發(fā)生了硬件故障,中斷了與Ⅰ機(jī)、遠(yuǎn)動機(jī)(A網(wǎng))和后臺機(jī)(A網(wǎng))等設(shè)備的通信.當(dāng)Ⅰ機(jī)處于這種工作狀態(tài)時,為了重新構(gòu)建交換機(jī)地址表,自動向網(wǎng)絡(luò)發(fā)送大量廣播報文.當(dāng)大量的廣播報文進(jìn)入連接在Ⅰ機(jī)的所有間隔層測控裝置中,會給間隔層測控裝置的CPU造成沉重的處理負(fù)擔(dān),最終將資源耗盡使CPU處理能力完全癱瘓,從而使變電站的CSI-200E設(shè)備和CSM-300E設(shè)備都不能正常工作,因此造成全站通信中斷.
Fig. 7 Network structure of a 220 kV substation integrated automation system圖7 某220 kV變電站綜合自動化系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)
2.2.2 破壞完整性
破壞完整性的關(guān)鍵在于破壞傳輸數(shù)據(jù)的一致性.一致性包括數(shù)據(jù)塊整體的一致性以及運(yùn)行上下文的一致性.實際的攻擊中一般要劫持通信,然后通過篡改或者重放等方式實現(xiàn)完整性破壞的攻擊.針對破壞完整性的攻擊,主要有3種攻擊方式.
1) 通信劫持攻擊
該攻擊主要通過中間人攻擊 (man in the middle, MITM)方式實現(xiàn)對通信信道的劫持,該攻擊的根本原因在于通信信道未受到保護(hù).首先,發(fā)起中間人攻擊,攻擊者需要先接入“物理隔離”的工業(yè)控制系統(tǒng),如通過USB接口[4]或因特網(wǎng)[41],甚至是內(nèi)部攻擊者[42].美國國土資源部和卡巴斯基公司的報告[43-44]都顯示,工控協(xié)議普遍面臨中間人攻擊的安全威脅.在真實的攻擊事件中,分析人員也經(jīng)常觀察到中間人劫持技術(shù)的應(yīng)用,如“震網(wǎng)”Stuxnet事件[4]和IRONGATE攻擊事件[45].
Fig. 8 Network topology of the experimental environment圖8 實驗環(huán)境的網(wǎng)絡(luò)拓?fù)?/p>
根據(jù)是否物理接入目標(biāo)主機(jī),中間人攻擊分為本地攻擊和遠(yuǎn)程攻擊.本地攻擊可以通過DLL替換或注入等方式Hook劫持收發(fā)網(wǎng)絡(luò)數(shù)據(jù)相關(guān)的函數(shù).如“震網(wǎng)”病毒[4]接入系統(tǒng)后,首先將原有的有關(guān)管理收發(fā)網(wǎng)絡(luò)數(shù)據(jù)的s7otbxdx.dll文件重命名為s7otbxsx.dll,然后病毒將準(zhǔn)備的DLL命名為s7otbxdx.dll實現(xiàn)替換.于是,“震網(wǎng)”病毒可以劫持所有訪問PLC的網(wǎng)絡(luò)通信,包括修改來自監(jiān)控軟件的請求和來自PLC處理返回的數(shù)據(jù).本地攻擊還可以通過修改網(wǎng)絡(luò)配置的方式實現(xiàn),比如修改路由表、ARP表等.文獻(xiàn)[34]演示了通過修改iptables中的目標(biāo)地址轉(zhuǎn)換DNAT配置,結(jié)合ARP欺騙技術(shù),將網(wǎng)絡(luò)通信協(xié)議數(shù)據(jù)包劫持重定向到自己構(gòu)建的虛擬PLC上.
遠(yuǎn)程中間人攻擊需要與目標(biāo)主機(jī)在同一個局域網(wǎng),所有與目標(biāo)主機(jī)的通信內(nèi)容都可能被攻擊主機(jī)劫持.如美國空軍理工學(xué)院的Hagen等人[46]提出的TCP veto攻擊,在劫持TCP連接的同時避免“ACK storm”的發(fā)生.如圖8所示,HMI和PLC的通信信道經(jīng)過一個以太網(wǎng)集線器(Ethernet Hub),攻擊者連接到以太網(wǎng)集線器,具備能夠嗅探并注入任意數(shù)據(jù)包等能力,就可實現(xiàn)劫持已有TCP的連接,而僅產(chǎn)生少量的網(wǎng)絡(luò)異常數(shù)據(jù)包.
2) 報文篡改攻擊
攻擊者一旦完成通信劫持,就可以破壞通信過程數(shù)據(jù)塊整體的一致性實現(xiàn)攻擊.因此,虛假報文注入攻擊和報文偽造攻擊都屬于篡改攻擊.協(xié)議面臨篡改攻擊的根源在于協(xié)議設(shè)計缺乏安全的完整性校驗機(jī)制.如圖9所示,DNP3協(xié)議雖然存在CRC校驗和字段防止報文被篡改,但這種機(jī)制僅能防護(hù)協(xié)議數(shù)據(jù)傳輸過程中數(shù)據(jù)丟失或者電磁干擾等風(fēng)險.對于熟知DNP3協(xié)議格式細(xì)節(jié)的攻擊者,篡改報文后,重新計算出正確CRC值進(jìn)行替換,仍然可實施報文篡改攻擊.文獻(xiàn)[25]也指出DNP3協(xié)議面臨報文篡改攻擊威脅.
Fig. 9 DNP3 message data link layer frame format圖9 DNP3報文數(shù)據(jù)鏈路層幀格式
3) 報文重放攻擊
重放攻擊破壞的是通信雙方上下文的一致性,通過記錄網(wǎng)絡(luò)通信報文,然后根據(jù)攻擊需要進(jìn)行重放.使用重放攻擊的一個典型場景是對認(rèn)證過程進(jìn)行重放繞過.如Beresford[29]在Black Hat上指出,早期西門子公司的S7-1200,S7-300和S7-400的PLC在會話管理上存在嚴(yán)重的漏洞,在同型號設(shè)備上重放會話數(shù)據(jù)即可建立會話.類似地,重放特定報文還可以實現(xiàn)讀內(nèi)存、寫內(nèi)存等功能,甚至可對硬件配置進(jìn)行修改,比如修改IP地址、管理密碼和控制邏輯等.Hong等人[47]發(fā)現(xiàn)S7commplus協(xié)議存在重放攻擊缺陷.利用該缺陷,攻擊者可以輕易通過重放其他報文實現(xiàn)對PLC的控制啟停.對于認(rèn)證缺失的協(xié)議,如果報文沒有校驗字段或沒有序號、會話等動態(tài)變化的會話管理字段,重放控制功能就能實現(xiàn)攻擊.如Drias等人[48]認(rèn)為Modbus-TCP協(xié)議沒有CRC校驗,簡單地重放捕獲的客戶端與服務(wù)端的通信數(shù)據(jù)包就可實現(xiàn)重放攻擊.
2.2.3 破壞機(jī)密性
破壞機(jī)密性的關(guān)鍵在于非法獲取系統(tǒng)的敏感信息.由于獲取敏感信息不會直接影響工控系統(tǒng)的運(yùn)行,工控系統(tǒng)機(jī)密性安全要求低于可用性和完整性.盡管如此,獲取系統(tǒng)的敏感信息仍然是完成有效攻擊的重要前提.攻擊者通過分析通信報文獲得系統(tǒng)的版本和型號等信息后,可用預(yù)先準(zhǔn)備的對應(yīng)漏洞進(jìn)行攻擊利用[21].攻擊者獲取與認(rèn)證相關(guān)的敏感報文,如嗅探MicroLogic 1100,MicroLogic 1400,CLICK等PLC的通信報文可獲得明文密碼[49],后續(xù)可利用重放攻擊等方式繞過認(rèn)證,獲得系統(tǒng)的操作權(quán)限.針對機(jī)密性,主要有2種攻擊方式:
1)主動請求獲取系統(tǒng)的敏感數(shù)據(jù)
攻擊者可以遠(yuǎn)程主動發(fā)起請求獲取工控設(shè)備/系統(tǒng)的敏感信息.Mirian等人[21]通過主動請求探測暴露于互聯(lián)網(wǎng)的工控服務(wù)能發(fā)現(xiàn)大量工控產(chǎn)品的廠商、型號等信息,并總結(jié)了典型工控協(xié)議提供的服務(wù)端口,如表4所示.除了利用工控協(xié)議,攻擊者還可以利用傳統(tǒng)TCP/IP等協(xié)議,將這些協(xié)議在不同系統(tǒng)交互時的差異作為指紋,獲得系統(tǒng)狀態(tài)等信息.如果攻擊者通過主動請求能夠探測到系統(tǒng)版本等信息,比如獲知設(shè)備的操作系統(tǒng)VxWorks版本低于6.9,則攻擊者可以利用漏洞CVE-2010-2967,通過密碼碰撞的方法繞過認(rèn)證保護(hù)機(jī)制,獲得系統(tǒng)控制權(quán)限.
Table 4 Typical Industrial Control Protocol Service Port Number
2) 被動監(jiān)聽通信內(nèi)容
攻擊者如果與目標(biāo)系統(tǒng)共享同一個通信信道,可以通過偵聽的方式,捕獲通信的數(shù)據(jù)包;或基于通信劫持攻擊(如中間人攻擊)的方式,攻擊者捕獲并分析通信的內(nèi)容.圖10是捕獲的MMS協(xié)議報文的二進(jìn)制內(nèi)容[32].
Fig. 10 Captured MMS protocol message[32]圖10 捕獲的MMS協(xié)議報文[32]
根據(jù)協(xié)議手冊可知,MMS協(xié)議采用ASN.1/BER編碼規(guī)范,則可按規(guī)范得到如下解析結(jié)果:這是一個Confirmed-Request報文,在做read請求操作,該報文的invokeId值為123,這個讀請求包含了3個請求條目,每一個條目是具體的對象標(biāo)識符,此處能獲取當(dāng)前信息系統(tǒng)虛擬資產(chǎn)的標(biāo)識信息.
NIST總結(jié)了潛在的攻擊事件對控制系統(tǒng)可能造成的影響[1].
1) 控制失靈.控制系統(tǒng)的運(yùn)行因延遲或信息流阻塞而中斷,從而使系統(tǒng)操作員無法使用網(wǎng)絡(luò),導(dǎo)致信息傳輸受阻或常駐服務(wù)如DNS發(fā)生拒絕服務(wù).
2) 控制設(shè)備被重新編程.對PLC,RTU,DCS或SCADA等控制器中的程序指令進(jìn)行未授權(quán)的更改,或更改警報閾值,甚至向控制設(shè)備發(fā)起未經(jīng)授權(quán)的命令,可能導(dǎo)致設(shè)備損壞(如超出設(shè)備可承受閾值)、控制過程過早地關(guān)閉,造成環(huán)境事故,甚至使控制設(shè)備不可用.
3) 欺騙系統(tǒng)狀態(tài)信息.發(fā)送虛假信息給控制系統(tǒng)操作員(例如在人機(jī)界面顯示構(gòu)造的數(shù)據(jù)),以掩飾未經(jīng)授權(quán)的更改或操作員不當(dāng)?shù)牟僮?
4) 控制邏輯操控.對控制程序的配置進(jìn)行修改,將產(chǎn)生不可預(yù)知的結(jié)果.
5) 安全系統(tǒng)修改.操控安全系統(tǒng),以使得它們在需要時不運(yùn)行,或者執(zhí)行不正確的控制操作,從而損壞工業(yè)控制系統(tǒng).
6) 植入惡意軟件.向控制系統(tǒng)引入惡意軟件,如病毒、蠕蟲、特洛伊木馬等.
Fig. 11 Comparison of MMS protocol before and after security improvement圖11 MMS協(xié)議安全改進(jìn)前后對比
對控制系統(tǒng)的攻擊還會造成深遠(yuǎn)的后續(xù)影響.最直接的影響包括人身傷害、財產(chǎn)損失、對環(huán)境的潛在破壞等.直接影響會進(jìn)一步衍生經(jīng)濟(jì)影響和社會影響,可能造成相關(guān)組織和機(jī)構(gòu)巨大的經(jīng)濟(jì)損失.對關(guān)鍵基礎(chǔ)設(shè)施如電力、交通的破壞所產(chǎn)生的經(jīng)濟(jì)影響將遠(yuǎn)遠(yuǎn)超出對單個系統(tǒng)的直接物理損壞的影響,甚至使公眾對國家或組織失去信心.
工業(yè)控制系統(tǒng)在關(guān)鍵基礎(chǔ)設(shè)施中具有定制化和專用性的特征.因此,IEC 62443標(biāo)準(zhǔn)給出了針對工業(yè)控制系統(tǒng)的信息安全的定義:“①保護(hù)系統(tǒng)所采取的措施;②由建立和維護(hù)保護(hù)系統(tǒng)的措施所得到的系統(tǒng)狀態(tài);③能夠免于對系統(tǒng)資源的非授權(quán)訪問或意外的變更、破壞或者損失;④基于計算機(jī)系統(tǒng)的能力,能夠保證非授權(quán)人員和系統(tǒng)既無法修改軟件及其數(shù)據(jù),也無法訪問系統(tǒng)功能,保證授權(quán)人員和系統(tǒng)不被阻止;⑤防止對工業(yè)控制系統(tǒng)的非法或有害入侵,或者干擾其正確和計劃的操作”.
從協(xié)議的角度看,維護(hù)工控系統(tǒng)的安全狀態(tài)需采取必要的措施,主要包括:協(xié)議安全設(shè)計改進(jìn)、協(xié)議安全實現(xiàn)測試、協(xié)議安全應(yīng)用指南.
針對工控協(xié)議在設(shè)計上普遍缺乏認(rèn)證加密等安全機(jī)制的問題,學(xué)術(shù)界和工業(yè)界一直在努力改善這一現(xiàn)狀.主要有3種思路:
1) 在協(xié)議棧增加安全層
國際標(biāo)準(zhǔn)組織推出IEC 62351標(biāo)準(zhǔn)[14]用來改進(jìn)IEC 61850系列協(xié)議設(shè)計缺陷,并規(guī)定使用傳輸層安全協(xié)議(Transport Layer Security, TLS)為應(yīng)用間通信提供端對端的傳輸安全.TLS協(xié)議使用加密技術(shù)提供數(shù)據(jù)的機(jī)密性和端之間的認(rèn)證.從技術(shù)上講,TLS是一個運(yùn)行在TCP協(xié)議之上的協(xié)議套件.因此,IEC 62351規(guī)定TLS應(yīng)用在基于TCP/IP的電力工控協(xié)議,包括TASE.2,MMS,IEC 104等.其中,MMS協(xié)議改進(jìn)前后的協(xié)議棧對比如圖11所示.
IEC 62351應(yīng)用TLS進(jìn)行安全改進(jìn)時,還結(jié)合了工控場景的通信特點(diǎn).如考慮到TLS多用于傳統(tǒng)互聯(lián)網(wǎng)協(xié)議的安全交互,這些協(xié)議連接的持續(xù)時間很短,使得加密算法和密鑰能在連接建立時重新協(xié)商,使用默認(rèn)的TLS配置即可保障加密安全.而工控場景下TCP/IP連接趨向于更長的持續(xù)時間,并且經(jīng)常是“永久”的,所以在安全防護(hù)方面需特殊考慮.為了提供“永久”連接的機(jī)密性,IEC 62351-3對應(yīng)用TLS增加規(guī)定加密密鑰再協(xié)商的安全機(jī)制.
類似地,針對MQTT協(xié)議設(shè)計上的認(rèn)證、授權(quán)和加密等方面的安全缺陷,Lesjak等人[50]提出了結(jié)合硬件安全的TLS增強(qiáng)改進(jìn)方案.他們利用TLS握手過程實現(xiàn)訂閱方和發(fā)布方的相互認(rèn)證.為保護(hù)用于認(rèn)證的私有密鑰,他們使用一個專用的硬件實現(xiàn)數(shù)字簽名操作.文獻(xiàn)[50]的作者基于OpenSSL庫在TCP協(xié)議層之上實現(xiàn)了TLS,并用Security Controller模塊作為簽名運(yùn)算專用硬件.
2) 在協(xié)議應(yīng)用數(shù)據(jù)單元增加安全字段
針對Modbus協(xié)議的設(shè)計缺陷,文獻(xiàn)[51-52]等通過在協(xié)議應(yīng)用數(shù)據(jù)單元增加新的安全字段,實現(xiàn)完整性、防重放、身份認(rèn)證等安全機(jī)制.Fovino等人[51]通過SHA2哈希函數(shù)計算獲得數(shù)據(jù)包的安全摘要,再由RSA算法生成數(shù)字簽名字段,保障了Modbus協(xié)議完整性,如圖12所示.同時,非對稱加密RSA算法使用私鑰對安全摘要簽名,接收方可以通過公鑰快速驗證Modbus報文的身份,使改進(jìn)的Modbus協(xié)議具備了身份認(rèn)證的安全功能.時間戳(timestamp, TS)字段使得接收者能夠檢查接收報文的“新鮮度”,可抵抗重放攻擊.
Fig. 12 Secure Modbus application data unit圖12 安全版本的Modbus協(xié)議應(yīng)用數(shù)據(jù)單元
考慮到工控系統(tǒng)運(yùn)行的部分設(shè)備年代久遠(yuǎn),升級和替換的成本非常高,改進(jìn)的Secure Modbus協(xié)議難以直接部署在傳統(tǒng)的SCADA環(huán)境.針對這一問題,F(xiàn)ovino等人[51]提出Modbus安全網(wǎng)關(guān)的解決方案.如圖13所示,Modbus安全網(wǎng)關(guān)(Modbus secure gateway)是一個專用的多宿主網(wǎng)關(guān),承載連接到過程層網(wǎng)絡(luò)的TCP/IP接口和一組連接到傳統(tǒng)從站點(diǎn)對點(diǎn)的TCP或串行鏈路.它僅接受經(jīng)過身份驗證的主服務(wù)器Secure Modbus TCP流量,并提取Modbus數(shù)據(jù)包發(fā)送給從設(shè)備;當(dāng)收到來自從設(shè)備點(diǎn)對點(diǎn)鏈路數(shù)據(jù)包時,安全網(wǎng)關(guān)選擇對應(yīng)的私鑰對數(shù)據(jù)包進(jìn)行簽名,生成Secure Modbus TCP流量再發(fā)送.
Fig. 13 Communication architecture based on security gateway圖13 基于安全網(wǎng)關(guān)的通信架構(gòu)
增加安全字段的思路可以應(yīng)用在實時性要求高的協(xié)議上,如針對電力工控行業(yè)的GOOSE和SMV協(xié)議的改進(jìn).改進(jìn)方案需考慮協(xié)議報文的實時性要求:必須在4 ms內(nèi)被傳輸.IEC 62351指出在此要求下,加密和密鑰再協(xié)商會破壞高度實時的信息流,基于數(shù)字簽名的認(rèn)證是唯一可用的安全措施,并對此提出的改進(jìn)方案,如圖14所示:
Fig.14 Security improved GOOSE/SMV message structure圖14 安全改進(jìn)版的GOOSE/SMV報文結(jié)構(gòu)
該改進(jìn)方案使用一個保留字段作為長度,這樣擴(kuò)展字段就可以增加到GOOSE/SMV報文上,擴(kuò)展的字段包含數(shù)字簽名認(rèn)證信息.在實際系統(tǒng)中,非安全客戶端可簡單地忽略這個擴(kuò)展字段.
3) 改進(jìn)通信會話的過程
協(xié)議基于會話流程實現(xiàn)安全機(jī)制,根據(jù)文獻(xiàn)[29],Beresford于2011年發(fā)現(xiàn)初始版本的S7私有協(xié)議的設(shè)計存在多種漏洞,如缺乏對Session有效性的檢查,通過分析報文和簡單重放即可實現(xiàn)對S7-1200,S7-300,S7-400等PLC的攻擊.西門子公司改進(jìn)S7私有協(xié)議為S7Commplus協(xié)議,基于Biham等人[16]的逆向分析,發(fā)現(xiàn)改進(jìn)的S7Commplus協(xié)議的會話過程使用了更嚴(yán)格的認(rèn)證機(jī)制,該過程涉及了基于非對稱加密的密鑰交換的過程.改進(jìn)的S7Commplus協(xié)議的安全性得到了極大的提高,使得攻擊的難度增大.
編程人員在實現(xiàn)工控協(xié)議通信程序時,可能因疏忽大意導(dǎo)致程序代碼留有漏洞.為了自動發(fā)現(xiàn)這些協(xié)議實現(xiàn)漏洞,F(xiàn)uzzing(模糊測試)技術(shù)是當(dāng)前的研究熱點(diǎn).根據(jù)現(xiàn)有文獻(xiàn)總結(jié),工控協(xié)議模糊測試的方法主要有2種:灰盒測試和黑盒測試.
3.2.1 灰盒測試
灰盒測試是指在進(jìn)行模糊測試時能獲得程序執(zhí)行的一些內(nèi)部信息,如獲取代碼覆蓋率(code coverage)信息[53].工控協(xié)議的灰盒測試一般需要源碼或者要求目標(biāo)程序能被插樁,以實時獲得程序執(zhí)行的信息作為反饋,指導(dǎo)并提高模糊測試的效率.
區(qū)別于傳統(tǒng)的測試對象(如圖片、視頻和文件等處理程序),文獻(xiàn)[35]指出工控協(xié)議一般會攜帶一個名為“功能碼”的特定字段,功能碼字段的取值指示接收端設(shè)備應(yīng)該執(zhí)行什么操作.所以,生成測試用例時確保該字段的正確性至關(guān)重要.基于該發(fā)現(xiàn),文獻(xiàn)[35]的作者先靜態(tài)分析工控協(xié)議源碼提取協(xié)議功能碼字段信息,確定功能碼字段在報文中的偏移和取值范圍,然后基于AFL對協(xié)議源碼程序進(jìn)行插樁,最后將模糊測試時約束生成的畸形協(xié)議數(shù)據(jù)包的功能碼字段在正確的范圍內(nèi),以提高模糊測試的效率.
針對工控協(xié)議模糊測試,文獻(xiàn)[54]認(rèn)為傳統(tǒng)的基于模板生成測試用例的方法本質(zhì)上是隨機(jī)的,測試效率有待提高.同時,工控協(xié)議不同(功能碼)類型的數(shù)據(jù)報文會觸發(fā)不同的程序代碼執(zhí)行軌跡,但這些報文非常相似,難以區(qū)分.為此,文獻(xiàn)[54]的作者提出Peach*,為傳統(tǒng)協(xié)議模糊測試方法配備覆蓋率引導(dǎo)機(jī)制.由于需要基于LLVM框架對源碼程序進(jìn)行插樁,Peach*僅適用于有源碼的程序.
3.2.2 黑盒測試
灰盒測試依賴協(xié)議程序源碼,可應(yīng)用于一些開源的工控協(xié)議.考慮到相關(guān)廠商的知識產(chǎn)權(quán)和商業(yè)利益,仍有大量的工控協(xié)議未開源其代碼.這些工控協(xié)議運(yùn)行在定制、專用的嵌入式設(shè)備中.相關(guān)程序難以被提取和插樁處理.所以,進(jìn)行模糊測試時難以獲取被測程序內(nèi)部的執(zhí)行信息,被測對象被視為一個黑盒.為生成高質(zhì)量測試用例,工控協(xié)議黑盒測試的關(guān)鍵在于使用非插裝監(jiān)控手段獲取協(xié)議知識,例如協(xié)議報文格式、協(xié)議狀態(tài)等信息.
1) 通過人工分析相關(guān)文檔獲得協(xié)議知識
對于有公開文檔的工控協(xié)議,測試前需人工整理有關(guān)協(xié)議的信息,手動定義變異模板,自動化生成測試用例.Devarajan[55]在Black Hat大會上提出基于Sulley框架[56]的黑盒模糊測試方案,對SCADA系統(tǒng)的Modbus,DNP3,ICCP等公開的協(xié)議進(jìn)行了模糊測試.Devarajan基于Sulley框架手動編寫了這些公開的工控協(xié)議測試模板.模板包括管理報文格式變異的數(shù)據(jù)模型和管理協(xié)議序列交互過程的狀態(tài)模型.類似的基于報文格式手動編寫測試模板的知名框架還包括Boofuzz[57],Peach[58],Scapy[59]等.如Tacliad等人[60]提出基于Scapy設(shè)計和實現(xiàn)了EtherNet/IP系列協(xié)議黑盒模糊測試工具.早期也有一些協(xié)議模糊測試工作沒有用到測試框架,而是自定義變異原語,如Snooze[61],但它們原理上是相同的.
2) 通過機(jī)器學(xué)習(xí)的方法獲得協(xié)議知識
Hu等人[62]提出基于機(jī)器學(xué)習(xí)的方法生成高效測試用例.Hu等人指出,對抗神經(jīng)網(wǎng)絡(luò)(generative adversarial network, GAN)擅長從已有數(shù)據(jù)中學(xué)習(xí)并偽造符合特定分布特征的數(shù)據(jù),以達(dá)到欺騙系統(tǒng)的目的.該過程與學(xué)習(xí)協(xié)議通信報文的語法格式偽造生成畸形測試用例一致.因此,Hu等人設(shè)計了GANFuzz,并使用GANFuzz學(xué)習(xí)Modbus-TCP協(xié)議流量,偽造符合協(xié)議語法格式的測試數(shù)據(jù).最終Hu等人通過評估“測試用例被拒絕”和“能否挖掘真實漏洞”2個指標(biāo)證明了該方法的有效性.類似地,Zhao等人[63]提出SeqFuzzer,該方案認(rèn)為長短期記憶網(wǎng)絡(luò)LSTM擅長學(xué)習(xí)通信報文序列之間的關(guān)系,這種報文序列關(guān)系能很好地代表協(xié)議狀態(tài)轉(zhuǎn)移知識.除此之外,LSTM神經(jīng)網(wǎng)絡(luò)還能學(xué)習(xí)協(xié)議報文的數(shù)據(jù)幀格式.然后Zhao等人用seq2seq作為解碼器生成高效測試用例,最后測試EtherCat協(xié)議并發(fā)現(xiàn)漏洞.
3) 通過協(xié)議逆向工程分析等獲得協(xié)議知識
Niedermaier等人[64]通過模式識別的方式逆向分析了Phoenix公司PLC的私有通信協(xié)議的報文格式,同時基于報文相似性對比的分析方法逆向私有協(xié)議握手會話的過程.基于逆向分析的結(jié)果,Niedermaier等人實現(xiàn)了一個模糊測試工具原型系統(tǒng),對Phoenix公司PLC測試并發(fā)現(xiàn)了多個嚴(yán)重漏洞.如果僅考慮對私有協(xié)議逆向工程獲取協(xié)議知識,還有很多其他工作,主要分為基于網(wǎng)絡(luò)報文序列對齊的分析如Netzob[65],Discoverer[66],ScriptGen[67],PRISMA[68],NEMESYS[69]等和基于程序執(zhí)行的分析如Dispatcher[70],Replayer[71]等.
除了獲取協(xié)議知識,工控協(xié)議程序測試還面臨狀態(tài)監(jiān)控困難的挑戰(zhàn).文獻(xiàn)[72]指出工控系統(tǒng)與環(huán)境的交互是程序執(zhí)行的一部分,監(jiān)控時考慮這種特征的研究工作還很少.同時,由于工控嵌入式設(shè)備資源受限,大多沒有內(nèi)存管理單元,即使觸發(fā)了漏洞也不會立即出現(xiàn)易觀察的崩潰現(xiàn)象,已有的基于網(wǎng)絡(luò)連接是否存活的監(jiān)控方式會有很多漏報[73].
對協(xié)議通信網(wǎng)絡(luò)進(jìn)行不恰當(dāng)?shù)牟渴饝?yīng)用和管理,也是工控系統(tǒng)面臨攻擊的主要威脅之一.如2015年烏克蘭發(fā)生的大規(guī)模停電的網(wǎng)絡(luò)攻擊事件[41],事后分析發(fā)現(xiàn)電力控制網(wǎng)和互聯(lián)網(wǎng)未做好分區(qū)隔離、內(nèi)部員工安全意識薄弱是這次攻擊事件發(fā)生的關(guān)鍵.攻擊者通過互聯(lián)網(wǎng)發(fā)送釣魚郵件接入電力控制網(wǎng)后實施針對電力控制網(wǎng)的攻擊.針對協(xié)議的安全應(yīng)用,當(dāng)前主要通過標(biāo)準(zhǔn)指南的方式進(jìn)行規(guī)范化管理.
3.3.1 標(biāo)準(zhǔn)指南的制定
國內(nèi)外的相關(guān)組織和機(jī)構(gòu)針對工業(yè)控制系統(tǒng)信息安全的標(biāo)準(zhǔn)化工作,形成了一系列的規(guī)范性文件,彭勇等人[74]對此進(jìn)行了全面的總結(jié).對這些規(guī)范性文件進(jìn)行對比分析,發(fā)現(xiàn)它們各有特色:
從適用行業(yè)來看,可分為通用行業(yè)和專用行業(yè).IEC 62443是一個通用標(biāo)準(zhǔn),適用于所有工控相關(guān)領(lǐng)域.而IEC 62351則是一個專用標(biāo)準(zhǔn),僅適用于電力行業(yè).
從方案對策來看,可分為側(cè)重技術(shù)對策和組織管理對策.Sommestad等人[75]對相關(guān)指南進(jìn)行了綜述性比較,發(fā)現(xiàn)SCADA相關(guān)的標(biāo)準(zhǔn)指南更側(cè)重技術(shù)對策,如部署防火墻、入侵檢測系統(tǒng)等.而ISO/IEC 17799更側(cè)重組織對策,如安全組織、業(yè)務(wù)持續(xù)性計劃、政策和標(biāo)準(zhǔn)以及第三方合作等.
從技術(shù)偏好來看,可分為系統(tǒng)性防護(hù)和關(guān)鍵點(diǎn)防護(hù).王建等人[76]對2個備受關(guān)注的標(biāo)準(zhǔn)IEC 62443和等級保護(hù)2.0《信息安全技術(shù)信息系統(tǒng)安全等級保護(hù)基本要求》(GB/T 22239—2019)進(jìn)行了對比分析.GB/T 22239—2019側(cè)重邊界防護(hù)方面的技術(shù)指標(biāo),圍繞網(wǎng)絡(luò)架構(gòu)、邊界防護(hù)、入侵防范等有較多的安全方案.而IEC 62443-3-3標(biāo)準(zhǔn)則強(qiáng)調(diào)系統(tǒng)性自我保護(hù)能力,系統(tǒng)一旦遭受攻擊,控制系統(tǒng)不僅會阻斷網(wǎng)絡(luò)邊界的通信,而且會切斷一切與其通信的路徑和傳輸數(shù)據(jù).
3.3.2 推廣和落地
標(biāo)準(zhǔn)指南發(fā)布后在落地時面臨一個關(guān)鍵問題:相關(guān)行業(yè)和單位對標(biāo)準(zhǔn)指南的落地重視不夠,主動性、專業(yè)性不強(qiáng),落地能力不足.為了推動標(biāo)準(zhǔn)指南的實施和落地,標(biāo)準(zhǔn)發(fā)布后需要配套的政策法規(guī)進(jìn)行要求和引導(dǎo).文獻(xiàn)[77]指出,國際自動化協(xié)會下屬安全合規(guī)性委員會推出了ISASecure EDSA認(rèn)證計劃,開展IEC 62443標(biāo)準(zhǔn)符合性認(rèn)證測試工作.類似地,美國國土安全部(DHS)推出了CSET安全評估工具,支持多個安全標(biāo)準(zhǔn)的評估,如NIST SP800-53和NIST SP800-82等.
我國更是在法律法規(guī)上提出了強(qiáng)制要求,其中2016年發(fā)布的《中華人民共和國網(wǎng)絡(luò)安全法》第21條明確提出國家實行網(wǎng)絡(luò)安全等級保護(hù)制度.我國網(wǎng)絡(luò)安全等級保護(hù)制度包括定級、備案、建設(shè)整改、等級測評和監(jiān)督檢查5個階段,構(gòu)建了完整的等級保護(hù)流程,何占博等人[78]總結(jié)了各階段對應(yīng)的法律法規(guī)和政策規(guī)范,如表5所示:
Table 5 Regulations and Policies in Various Stages of the Cybersecurity Classified Protection
3.3.3 更新維護(hù)
隨著新技術(shù)的發(fā)展和應(yīng)用,已發(fā)布的標(biāo)準(zhǔn)和指南需與時俱進(jìn)地更新以滿足新興的安全防護(hù)需求.事實上,那些影響力大、關(guān)注度高的標(biāo)準(zhǔn)文件一直在更新維護(hù).如NIST SP800-82[1]于2011年正式發(fā)布,2013年發(fā)布第一次修訂版,2015年發(fā)布第二次修訂版.國內(nèi)由國家標(biāo)準(zhǔn)化管理委員會和國家質(zhì)量監(jiān)督檢驗檢疫總局共同發(fā)布的等級保護(hù)2.0《信息安全技術(shù)信息系統(tǒng)安全等級保護(hù)基本要求》(GB/T 22239—2019)也是在等級保護(hù)1.0的GB/T 22239—2008進(jìn)行優(yōu)化修訂完成的,它擴(kuò)展了對云計算、移動互聯(lián)、物聯(lián)網(wǎng)、工業(yè)控制系統(tǒng)及大數(shù)據(jù)等新技術(shù)和新應(yīng)用領(lǐng)域的安全要求.
本文從通信協(xié)議的角度分析了工業(yè)控制系統(tǒng)面臨的安全威脅和對應(yīng)的策略.首先從工控網(wǎng)絡(luò)架構(gòu)、工控協(xié)議作用、分類以及和傳統(tǒng)協(xié)議的比較等方面進(jìn)行詳細(xì)闡述,然后從協(xié)議設(shè)計、實現(xiàn)和應(yīng)用的角度深入分析了協(xié)議攻擊威脅和協(xié)議防護(hù)方案.結(jié)合工控協(xié)議的特點(diǎn),我們有3個方面的展望:
1) 設(shè)計上,工控協(xié)議普遍存在安全問題.除了早期安全不受重視,客觀上還因工控設(shè)備的計算資源有限,難以部署重量級的安全機(jī)制,如安全算法、防火墻、監(jiān)控程序等.同時,工業(yè)控制過程對系統(tǒng)的可用性要求更高,例如需滿足實時響應(yīng)、保持長期在線等,而一般的安全改進(jìn)方案除了帶來性能上的損耗,還可能帶來新的安全問題,所以難以直接應(yīng)用傳統(tǒng)的安全方案.而已有研究大多聚焦于減少資源開銷,鮮有驗證其方案的可靠性.因此,研究人員需要提出一種可靠的輕量級安全通信機(jī)制,這種安全機(jī)制需要滿足2個要求:①受限的資源.該安全機(jī)制需要嚴(yán)格控制計算資源的使用,如盡可能降低對設(shè)備電量和內(nèi)存的消耗,同時,還要盡可能減小對性能的影響.②可驗證的安全.該安全機(jī)制不會帶來新的安全問題,在某些重要屬性上是安全可驗證的.
2) 實現(xiàn)上,工控協(xié)議程序涉及專用、異構(gòu)多樣的嵌入式設(shè)備.不同于通用的測試程序?qū)ο?,很多工控協(xié)議程序難以被提取、分析和監(jiān)控運(yùn)行.因此,基于路徑覆蓋反饋的高效模糊測試方案難以直接應(yīng)用.針對工控設(shè)備中的協(xié)議程序,已有研究聚焦于分析獲得協(xié)議知識,然后進(jìn)行黑盒測試,其有效性受限于無法獲得運(yùn)行時的反饋.因此,研究人員需針對工控設(shè)備提出一種有效的程序運(yùn)行監(jiān)控的反饋機(jī)制.可從2個角度進(jìn)行考慮:①該監(jiān)控機(jī)制不對程序直接進(jìn)行分析和插樁,而從其他角度間接推斷程序運(yùn)行狀態(tài),例如從返回報文、運(yùn)行能耗開銷、設(shè)備I/O監(jiān)控等角度;②解決嵌入式工控協(xié)議程序提取困難的挑戰(zhàn),然后遷移該程序到其他易控環(huán)境進(jìn)行模擬仿真執(zhí)行,從而方便測試時監(jiān)控和運(yùn)行時反饋.
3) 應(yīng)用上,保障工控協(xié)議的通信安全需結(jié)合已發(fā)布的標(biāo)準(zhǔn)和指南,然后部署配套的安全方案,例如部署入侵檢測系統(tǒng)、防火墻等.部署具體安全方案時,研究人員需結(jié)合具體的控制場景提出一種更加有效的風(fēng)險評估模型,以準(zhǔn)確定位安全威脅和安全需求,從而選擇并配置合適的安全方案.同時,考慮到工控系統(tǒng)的高可用性需求(例如有的方案需采集實時數(shù)據(jù),而該過程可能會影響系統(tǒng)的可用性),研究人員還需要提出一種更加有效的評估方法來驗證具體方案的可靠性,以防引入新的隱患.
作者貢獻(xiàn)聲明:方棟梁負(fù)責(zé)論文主要內(nèi)容的調(diào)研、整理和撰寫;劉圃卓、秦川、宋站威輔助進(jìn)行調(diào)研、討論與文章修改;孫玉硯、石志強(qiáng)、孫利民對文章結(jié)構(gòu)與內(nèi)容進(jìn)行討論并提出了指導(dǎo)意見.