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

PLC安全編程實踐TOP20

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

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

  一 安全的PLC編程實踐TOP20概述

  1.模塊化PLC代碼

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

  2.跟蹤操作模式

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

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

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

  4.使用PLC標志作為完整性檢查

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

  5.對PLC代碼使用加密和/或校驗和實施完整性檢查

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

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

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

  7.對成對的輸入/輸出進行驗證和警報

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

  8.不僅在人機界面,而且在PLC層面驗證人機界面輸入變量

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

  9.間接驗證

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

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

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

  11.真實性檢查工具

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

  12.基于物理合理性驗證輸入

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

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

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

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

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

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

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

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

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

  17 .記錄PLC的運行時間并在人機界面上進行趨勢分析

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

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

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

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

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

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

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

  PLC安全編程實踐TOP20項目背景

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

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

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

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

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

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

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

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

  三 PLC安全編碼實踐TOP20的價值

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

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

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

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

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

  為Top 20團隊提供更多的實踐示例和文檔。

  項目中實施并訓(xùn)練團隊。

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

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

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

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

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

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

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

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

  四 小結(jié)

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




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

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

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