《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > PLC安全編程實(shí)踐TOP20

PLC安全編程實(shí)踐TOP20

2021-06-24
來源:工控安全漫談
關(guān)鍵詞: PLC安全

在工業(yè)網(wǎng)絡(luò)安全領(lǐng)域,可編程邏輯控制器(PLC)傳統(tǒng)上被認(rèn)為先天不安全。但一項(xiàng)新的安全計劃總結(jié)出了PLC編程的20個最佳實(shí)踐,旨在將PLC重新構(gòu)建為工業(yè)過程中的最后一道網(wǎng)絡(luò)安全防線。這個由一群網(wǎng)絡(luò)安全專家和自動化工程師創(chuàng)建的開源項(xiàng)目,總結(jié)了TOP20關(guān)于在工業(yè)網(wǎng)絡(luò)發(fā)生安全事件或錯誤配置時改進(jìn)PLC彈性的建議。該項(xiàng)開源目成果由ISA(國際自動化協(xié)會)全球網(wǎng)絡(luò)安全聯(lián)盟于6月15日正式發(fā)布,供自動化工程師在編程PLC執(zhí)行物理過程時使用,如控制流體溫度和開啟/關(guān)閉工廠或設(shè)施中的閥門或閘門。人們希望PLC廠商最終能在其產(chǎn)品中加入或提供模板,以幫助客戶在為其設(shè)備編程時能夠采用最佳實(shí)踐。這些實(shí)踐可指導(dǎo)工程師和技術(shù)人員對PLC進(jìn)行編程和維護(hù),而不是直接指導(dǎo)OT安全。有些實(shí)踐對于有編碼經(jīng)驗(yàn)的人來說很熟悉,比如第8條,驗(yàn)證HMI輸入變量,使它們在有效的操作范圍內(nèi)(這肯定會阻止2021年2月份Oldsmar自來水廠的攻擊命令,無論從HMI發(fā)送什么)。第13條,禁用不需要/未使用的通信端口和協(xié)議是減少攻擊面的經(jīng)典方法。項(xiàng)目成果類似于應(yīng)用程序安全編碼的最佳實(shí)踐,如Microsoft的安全開發(fā)生命周期(SDL)或OWASP的安全編碼實(shí)踐。它利用設(shè)備的實(shí)時操作和它們狹窄而具體的任務(wù)作為安全性和彈性的超級能力。這份成果的貢獻(xiàn)者描述道:“我們試圖將PLC——通常被視為自動化工廠的致命弱點(diǎn)——變成工廠的分布式、無情的保鏢,每個(后門)門前都有一個?!卑驳劭萍颊幵擁?xiàng)目的相關(guān)成果和背景,供工業(yè)網(wǎng)絡(luò)安全行業(yè)學(xué)習(xí)參考。

  一 安全的PLC編程實(shí)踐TOP20概述

  1.模塊化PLC代碼

  將PLC代碼分成模塊,使用不同的功能塊(子例程),獨(dú)立測試模塊。

  2.跟蹤操作模式

  保持PLC處于RUN模式。如果PLC不處于RUN模式,應(yīng)該向操作人員發(fā)出警報。

  3.在可行的情況下,將操作邏輯留在PLC中

  將盡可能多的操作邏輯,如求和或累積,直接留在PLC中。HMI沒有得到足夠的更新來做到這一點(diǎn)。

  4.使用PLC標(biāo)志作為完整性檢查

  在PLC錯誤標(biāo)記上放置計數(shù)器來捕獲任何數(shù)學(xué)問題。

  5.對PLC代碼使用加密和/或校驗(yàn)和實(shí)施完整性檢查

  使用加密散列(如果加密散列不可用,則使用校驗(yàn)和XX?)來檢查PLC代碼的完整性,并在更改時發(fā)出警報。

  6.驗(yàn)證計時器和計數(shù)器

  如果計時器和計數(shù)器的值被寫入PLC程序,它們應(yīng)該被PLC驗(yàn)證是否合理,并驗(yàn)證向后計數(shù)低于零。

  7.對成對的輸入/輸出進(jìn)行驗(yàn)證和警報

  如果有成對的信號,請確保兩個信號沒有同時斷言。當(dāng)出現(xiàn)物理上不可行的輸入/輸出狀態(tài)時,向操作員發(fā)出警報。考慮使成對信號獨(dú)立或添加延遲計時器時切換輸出可能損害執(zhí)行器。

  8.不僅在人機(jī)界面,而且在PLC層面驗(yàn)證人機(jī)界面輸入變量

  HMI對PLC變量的訪問可以(也應(yīng)該)限制在HMI的有效操作值范圍內(nèi),但應(yīng)在PLC中添加進(jìn)一步的交叉檢查,以防止或警告HMI中編程可接受范圍之外的值。

  9.間接驗(yàn)證

  通過對陣列末端投毒來驗(yàn)證間接指令,以捕捉柵欄柱(fence-post)錯誤。

  10.通過函數(shù)分配指定的寄存器塊(讀/寫/驗(yàn)證)

  為特定函數(shù)分配指定的寄存器塊以驗(yàn)證數(shù)據(jù),避免緩沖區(qū)溢出和阻塞未授權(quán)的外部寫操作,以保護(hù)控制器數(shù)據(jù)。

  11.真實(shí)性檢查工具

  通過交叉檢查不同的測量值,以允許合理性檢查的方式來測量過程。

  12.基于物理合理性驗(yàn)證輸入

  確保操作人員只能輸入在過程中實(shí)際可行的或物理上可行的內(nèi)容。為操作設(shè)置一個定時器,使其持續(xù)時間達(dá)到它實(shí)際需要的時間。當(dāng)出現(xiàn)偏差時,考慮發(fā)出警報。當(dāng)出現(xiàn)意外的不活動時也要發(fā)出警報。

  13.禁用不需要/不用的通信端口和協(xié)議

  PLC控制器和網(wǎng)絡(luò)接口模塊一般支持默認(rèn)開啟的多種通信協(xié)議。禁用應(yīng)用程序不需要的端口和協(xié)議。

  14.限制第三方數(shù)據(jù)接口

  限制第三方接口的連接類型和可用數(shù)據(jù)。應(yīng)該對連接和/或數(shù)據(jù)接口進(jìn)行良好定義,并將其限制為只允許所需數(shù)據(jù)傳輸?shù)淖x/寫功能。

  15.定義一個在PLC重新啟動時的安全進(jìn)程狀態(tài)

  定義在PLC重新啟動情況下過程的安全狀態(tài)(例如,通電、斷電或保持以前的狀態(tài))。

  16.總結(jié)PLC的運(yùn)行周期并在人機(jī)界面上進(jìn)行趨勢分析

  每2-3秒?yún)R總PLC的周期時間,并報告給人機(jī)界面以圖形顯示。

  17 .記錄PLC的運(yùn)行時間并在人機(jī)界面上進(jìn)行趨勢分析

  記錄PLC的正常運(yùn)行時間,以知道它何時重新啟動。記錄HMI上的正常運(yùn)行時間的日志和趨勢,以進(jìn)行診斷。

  18.在人機(jī)界面上記錄PLC硬停止和趨勢

  存儲因故障或關(guān)機(jī)導(dǎo)致的PLC硬停止事件,由HMI報警系統(tǒng)檢索,在PLC重新啟動之前咨詢。時間同步更準(zhǔn)確的數(shù)據(jù)。

  19.在人機(jī)界面上監(jiān)控PLC內(nèi)存的使用情況并進(jìn)行趨勢分析

  測量并為部署在生產(chǎn)環(huán)境中的每個控制器的內(nèi)存使用情況提供基線,并在HMI上對其進(jìn)行趨勢分析。

  20.捕捉關(guān)鍵警報的假陰性和假陽性

  識別關(guān)鍵警報并為這些警報設(shè)置門限(trap)。設(shè)置trap以監(jiān)控任何偏差的觸發(fā)條件和警報狀態(tài)。

  PLC安全編程實(shí)踐TOP20項(xiàng)目背景

  多年來,可編程邏輯控制器(PLC)的設(shè)計一直不安全的。經(jīng)過幾年的定制和應(yīng)用IT的最佳實(shí)踐,出現(xiàn)了安全協(xié)議、加密通信、網(wǎng)絡(luò)隔離等。然而,到目前為止,還沒有關(guān)注如何使用PLC(或SCADA/DCS)的特性來實(shí)現(xiàn)安全性,或者如何在考慮安全性的情況下對PLC進(jìn)行編程。這個項(xiàng)目—受現(xiàn)有的IT安全編碼實(shí)踐啟發(fā)—填補(bǔ)了這一空白。

  本項(xiàng)目的最初動議始于安全專家杰克·布羅斯基(Jake Brodsky)2020年4月1日在S4x20上題為“PLC的安全編碼實(shí)踐”的演講。

  會后,OT安全專家Dale Peterson發(fā)起了Top 20項(xiàng)目。杰克·布羅斯基和莎拉·弗拉奇斯通過電話,花了幾個小時將杰克提議的PLC安全編碼實(shí)踐付諸實(shí)施。

  之后,Dale、Jake、Sarah在ISA GCA的支持下,于top20.isa.org上建立了一個平臺,來組織和收集來自ICS安全和工程師社區(qū)的額外意見建議。

  討論和鞏固實(shí)踐文本,并策劃一份最相關(guān)的前20個實(shí)踐清單花了大約一年的時間;Vivek Ponnada加快了這個過程,他不僅貢獻(xiàn)并審查了內(nèi)容,還組織了定期電話交流,直到所有關(guān)于實(shí)踐的評論都得到解決,Mohamed Abdelmoez Sakesli在一次大的努力中添加了所有的標(biāo)準(zhǔn)參考文獻(xiàn),MITRE CWE團(tuán)隊(duì)在最后一刻提供了CWE參考文獻(xiàn)等等,前后大約有70多人參與了這一項(xiàng)目。

  大多數(shù)實(shí)踐是特定于PLC/過程的。其中5種實(shí)踐與記錄、趨勢和對周期時間和內(nèi)存使用等事項(xiàng)的監(jiān)視/警報有關(guān),這些事項(xiàng)在PLC中通常是一致的。這可以檢測到攻擊,也可以檢測到NIST對網(wǎng)絡(luò)事件的寬泛定義。

  有一些驗(yàn)證實(shí)踐超出了輸入變量,在ICS世界中更常見。成對輸入就是一個很好的例子。不能同時打開和關(guān)閉,也不能同時正反跑。

  有許多實(shí)踐涉及到PLC編程,如配置寄存器、PLC標(biāo)志的使用、完整性檢查等等。每個實(shí)踐都有文檔頁,更詳細(xì)地描述實(shí)踐,提供示例,列出好處,以及IEC 62443和MITRE ATT&CK用于ICS參考。

  三 PLC安全編碼實(shí)踐TOP20的價值

  現(xiàn)在TOP20編碼實(shí)踐已發(fā)布,需要讓工程師接受培訓(xùn)并使用它們。坦率地說,這與可能閱讀本文的OT安全人員是不同的群體,這代表了一個挑戰(zhàn)。國際自動化協(xié)會的全球網(wǎng)絡(luò)安全聯(lián)盟(ISAGCA)正在努力促進(jìn)這些做法,這是令人鼓舞和有益的。ISA服務(wù)于工程界。眼下需要找到其他途徑來傳播信息,項(xiàng)目組歡迎任何建議。一些可能的推廣應(yīng)用方式包括:

  將TOP20列表整合到現(xiàn)有的專業(yè)和學(xué)術(shù)培訓(xùn)計劃中,或創(chuàng)建一個新的前20名安全PLC編碼實(shí)踐課程(許可證允許對這個列表的任何使用)。

  在RFP(意見征求)中包含TOP20 實(shí)踐清單作為需求,并編寫相關(guān)的驗(yàn)收測試。

  成為一個倡導(dǎo)者,幫助教育其所在領(lǐng)域的工程師。

  若為供應(yīng)商,請將這些內(nèi)容包含在安全部署指南中,并盡可能包含在默認(rèn)設(shè)置中。

  為Top 20團(tuán)隊(duì)提供更多的實(shí)踐示例和文檔。

  項(xiàng)目中實(shí)施并訓(xùn)練團(tuán)隊(duì)。

  目前發(fā)布的是1.0版。雖然項(xiàng)目團(tuán)隊(duì)在此方面做了出色工作,但在隨后的版本中會有所改進(jìn)。正常情況下,團(tuán)隊(duì)將開始檢查評論和建議改進(jìn)。起草過程也為Level 1環(huán)境、HMI和其他ICS元素產(chǎn)生了一些良好實(shí)踐。

  一個有趣的問題是,這樣做是否能阻止勒索軟件。當(dāng)然,答案是否定的。他們將減少PLC相關(guān)的全因網(wǎng)絡(luò)事件數(shù)量。

  1、PLC安全編碼規(guī)范的適用對象

  這些實(shí)踐是為工程師編寫的。這個項(xiàng)目目的是為正在創(chuàng)建軟件(梯形邏輯、功能圖等)的工程師提供指導(dǎo)方針,以幫助改善工業(yè)控制系統(tǒng)的安全態(tài)勢。這些實(shí)踐利用了PLC/DCS中的本地可用功能,實(shí)現(xiàn)這些實(shí)踐幾乎不需要額外的軟件工具或硬件。它們都能適應(yīng)正常的PLC編程和操作流程。實(shí)現(xiàn)這些實(shí)踐需要的不僅僅是安全專業(yè)知識,還需要對要保護(hù)的PLC、它們的邏輯和底層流程有良好的了解。

  2、這個列表的范圍/你如何定義PLC編碼?

  為了符合TOP20安全PLC編碼實(shí)踐列范圍,實(shí)踐需要直接對PLC進(jìn)行更改。讀者在本文檔中看到的是大量潛在安全PLC編碼實(shí)踐的TOP20選擇。還有一些與總體架構(gòu)、人機(jī)界面或文檔相關(guān)的其他草案實(shí)踐。這些不適合安全PLC編碼范圍,但可以出現(xiàn)在未來的安全PLC環(huán)境清單上。

  3、應(yīng)用安全PLC編碼實(shí)踐的收益

  使用這些實(shí)踐顯然具有安全優(yōu)勢——主要是減少攻擊面,或者在發(fā)生安全事件時更快地進(jìn)行故障排除。然而,許多實(shí)踐除了安全性之外還有其他好處。一些還令PLC代碼變得更可靠,更容易調(diào)試和維護(hù),更容易溝通,可能也更精簡。此外,安全的PLC編碼實(shí)踐可保證用戶即使在發(fā)生惡意攻擊的情況下,也能使PLC代碼更健壯,能夠承受意外錯誤配置或人為錯誤。

  四 小結(jié)

  PLC編程實(shí)踐TOP20在一群熱心的網(wǎng)絡(luò)安全專家和自動化專家努力下出籠了,這一初步的成果與過程和I/O設(shè)計有關(guān),這可能是未來多方關(guān)注的主題。這些編程工具和技巧并不是能夠在大多數(shù)控制系統(tǒng)敘述文檔中所能找到。設(shè)計過程的人關(guān)注的是如何讓過程工作,以及如何處理一些非常基本的故障模式。他們沒有詳細(xì)討論P(yáng)LC應(yīng)該做什么,他們甚至不知道如何處理需要斷開網(wǎng)絡(luò)連接以處理安全問題的情況。雖然這些技巧不能保護(hù)OT系統(tǒng)免遭真正的惡意利用,但至少它們不會給用戶留下細(xì)微的不可思議的漏洞。以2021年2月入侵佛羅里達(dá)州奧茲瑪市(Oldsmar)供水系統(tǒng)SCADA系統(tǒng)為例,將氫氧化鈉的劑量設(shè)置到11100 ppm的高得離譜的值本來是不可能的。PLC本應(yīng)該拒絕這個數(shù)值,但它沒有。為什么PLC不直接忽略它從人機(jī)界面收到的信息?因?yàn)樗鼪]有配置或編程這樣做,但PLC編程語言中的功能可以做到這一點(diǎn)。然而,集成商或工程師可能沒有想到有人會故意這樣設(shè)置。看似簡單,卻沒有做到。PLC編程實(shí)踐TOP20將在實(shí)踐中發(fā)展完善,助力OT系統(tǒng)本質(zhì)安全能力和價值的實(shí)現(xiàn)。




電子技術(shù)圖片.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容