PLC代碼利用相關研究,PLC代碼缺陷分類

2020-11-23 中國測控網

導讀隨著工業控制系統由封閉走向互聯,大量的控制器配備了乙太網通信組件,使得攻擊者可以直接訪問PLC硬體及其編程軟體。但PLC邏輯控制層缺少認證和監測等保護措施,PLC代碼的安全缺陷成為工業控制系統的重要安全威脅之一。  

本文主要觀點

1、PLC代碼利用相關研究

2、PLC代碼缺陷分類:PLC代碼邏輯缺陷、PLC代碼安全需求規約

3、PLC代碼形式化分析與驗證:PLC形式化分析中面臨的困難、PLC代碼形式化分析

隨著工業控制系統由封閉走向互聯,大量的控制器配備了乙太網通信組件,使得攻擊者可以直接訪問PLC硬體及其編程軟體。但PLC邏輯控制層缺少認證和監測等保護措施,PLC代碼的安全缺陷成為工業控制系統的重要安全威脅之一。

第一部分 PLC代碼利用相關研究

與傳統的程式語言一樣,PLC存在代碼安全缺陷,而這些代碼安全缺陷為攻擊者攻擊工業控制系統留下了後門。

2013年South Carolina大學的Sidney對PLC代碼設計安全缺陷進行了深入的研究,並把PLC代碼設計級缺陷主要分為基於硬體缺陷和基於軟體缺陷兩種。攻擊者可以利用PLC代碼缺陷破壞代碼邏輯,進行中間代碼插樁,實現任意代碼執行等。

2014年北京科技大學李偉澤等提出和分析了一種針對SCADA系統的新型的網絡物理攻擊——偽邏輯攻擊。

2015年在blackhat-US會議上Klick等在西門子S7-300中注入了一種新型的後門,通過注入工具實現了在S7-300上進行SNMP掃描SOCK5代理功能。作者利用PLC程序中存在跳轉指令的安全缺陷,成功在主程序OB1前嵌入惡意指令從而可以控制PLC的啟停以及輸出寄存器。

2016年11月在blackhat歐洲會議上Ali Abbasi等實現了對PLC輸入/輸出接口的新攻擊,該攻擊通過篡改輸出輸入引腳改變系統的運行邏輯。

2017年3月,來自印度海德拉巴和新加坡的學者,演示了針對工業控制系統的PLC梯形圖邏輯炸彈(Ladder Logic Bombs,LLB)。該邏輯炸彈是用梯形圖語言編寫的惡意軟體,這種惡意軟體可被攻擊者注入到PLC現有控制邏輯中,通過改變控制動作或者等待特定的觸發信號來激活惡意行為,以實現傳感器數據篡改,系統敏感信息獲取以及PLC拒絕服務攻擊等。

第二部分 PLC代碼缺陷分類

不同於傳統的IT系統,工業控制系統有其特殊的程式語言,根據國際電工委員會制定的工業控制程式語言標準(IEC61131-3),PLC程式語言包括以下五種:梯形圖語言(LadderLogic Programming Language,LD)、指令表語言(Instruction List,IL)、功能模塊圖語言(Function Block Diagram,FBD)、順序功能流程圖語言(Sequential function chart,SFC)及結構化文本語言(Structured text,ST)。本文中的代碼缺陷研究也是基於上述程式語言展開的。

工業控制系統的入侵與傳統網際網路入侵雖然手段上大同小異,但工業控制系統的部署與其物理工藝流程緊耦合,因此利用工藝流程中的代碼邏輯缺陷成為針對工業控制系統的有效打擊手段之一,如陷阱門、邏輯炸彈、特洛伊木馬、蠕蟲、Zombie等,且這類新的惡意代碼具有更強的傳播能力和破壞性。本文主要研究基於軟體的PLC代碼缺陷,並從代碼邏輯缺陷和違反安全需求規約兩個方面對PLC代碼缺陷進行分類研究。

(一)PLC代碼邏輯缺陷

PLC代碼邏輯缺陷具有隱蔽性強的特性,難以發現,可以潛伏多年,傳統的安全防禦思路無法解決這方面問題。在工業控制系統中,一次開關動作不執行,工藝執行流程的改變以及特定的輸出響應故障都可能造成毀滅性的破壞。

本文以梯形圖語言為例分析PLC代碼邏輯缺陷,梯形圖語言形象直觀,與繼電器的控制電路的表達方式極為相似。梯形圖由觸點、線圈等圖形符號結合數字指令、算術運算指令、控制指令等指令符號構成,PLC代碼邏輯缺陷也是由這些元素和組件位置放置不恰當、連結和範圍不正確引起的。表1給出了PLC代碼邏輯缺陷分類及其相關描述。

表1 PLC代碼邏輯缺陷分類表

通過利用表1中列舉的PLC代碼邏輯缺陷,可實現拒絕服務攻擊,中間人攻擊、改變控制器正常的工作流程等,對工業控制系統造成難以估量的損失。下面給出幾個PLC代碼缺陷分析和利用。

(1)計時器條件競爭缺陷

PLC編程中的計時器可通過設置預設時間觸發計時器。定時器完成位元件的不正確放置可能導致涉及定時器完成位的過程和定時器本身進入競爭條件。當定時器完成位成為激活其自身觸發機制的必需元素時,發生這種競爭條件使得定時器陷入死循環並使定時器復位。

如圖1所示,把計時器的預設值設為0,使得定時器觸發位和定時器同時打開,造成計時器持續振蕩,使得輸出O4.1無法被觸發,致使程序流程順序錯誤或進程無法關閉等故障,實現拒絕服務攻擊。

圖1 計時器條件競爭缺陷梯形圖

(2)比較函數硬編碼缺陷

PLC邏輯代碼中的數字指令包含比較指令,該比較指令如果編碼不正確可能會導致安全隱患,使得惡意用戶可以通過比較指令將不正確的數據插入到進程中。這些數據可能會導致進程序列發生變化,或者導致進程完全中止。

如圖2所示,假設常開觸點I0.1可以觸發高壓鍋爐的初始化,常開觸點後連接一個比較函數,O4.1控制高壓鍋爐的關閉進程。直到A的值大於等於B的值時,O4.1被激活,鍋爐停止加熱。如果比較元素B不參考符號表中的數值而是使用定值進行硬編碼,B中的數據是不受保護的,我們通過提高B的溫度值,使得高壓鍋爐不斷加熱直到設備損壞甚至發生爆炸。

圖2 比較函數缺陷梯形圖

(3)跳轉和連結缺陷

跳轉和連結缺陷是由一些可影響程序執行順序的跳轉指令和邏輯塊指令的錯誤的跳轉到某個程序段而引起。這種類型的代碼缺陷類似於中間人攻擊,攻擊者可以利用錯誤的跳轉指令跳轉到一個非預期的位置,並且把在非預期的位置插入惡意的程序段,再返回到跳轉之前的位置。

圖3給出了基於跳轉和連結缺陷的代碼利用方法,我們可以利用跳轉到子程序JSR函數從File1跳轉到惡意代碼文件File3中,引入惡意的子程序再返回到JSR跳轉之前位置,完成惡意代碼的插入,實現中間人攻擊。

圖3 跳轉和連結缺陷圖

(二)PLC代碼安全需求規約

除了PLC代碼邏輯缺陷,PLC代碼在物理現場的安全需求屬性也將決定PLC缺陷利用的成功與否。安全需求屬性是由工業控制現場的安全要求決定,指的是為了保證工業控制系統的安全,對設備狀態、時序、時間、輸入輸出量等的約束。如一個電機的額定轉速不超過2000rpm以及交叉路口的綠燈不能同時點亮等約束條件。在代碼中可能由於程式設計師的疏忽導致違反安全需求屬性的情況,就需要對其進行檢測。可見安全需求屬性不是常量,而需要實際用戶進行描述並輸入到檢測器中。Pavlovic等對PLC的設備狀態、時序、時間、輸入輸出量等安全需求進行了約束。本文將安全需求總結為分為以下五類,如表2所示。

表2 PLC代碼安全需求規約表

第三部分 PLC代碼形式化分析與驗證

PLC代碼採用「順序掃描,不斷循環」的工作方式,典型的PLC的工作過程包括三個不同階段:把輸入數據讀入存儲器、處理存儲器中的數據和更新輸出數據。PLC程序僅包含有限的狀態集合和有限的變量,且程序內部不包含循環,安全需求依賴於輸出變量等,所以在一定程度上形式化驗證技術適用於PLC程序安全分析和惡意代碼檢測。

形式化分析分為定理證明和模型檢測兩種方法,定理證明過程過於複雜和冗繁,實際中利用定理證明來驗證PLC程序正確性的研究並未得到認可。模型檢測是一種廣泛使用的形式化方法,他更適合用於PLC代碼的驗證,相比於傳統的電腦程式,對低級的PLC程序建模會更容易,因為他的狀態轉換系統相對簡單。

(一)PLC形式化分析中面臨的困難

(1)PLC缺乏高級程式語言

PLC編程屬於低級程式語言程式語言眾多,語法語義晦澀,採用分層尋址,地址尋址複雜,存在隱式的類型數據,建模難度大,語言屬性易丟失。

(2)時間建模缺失

工業控制系統的實時性要求很高,因此對時間進行建模極為重要,時間建模的對象應包括定時器的累積時間、單條指令的運行時間和執行周期時間,由於定時器是跨循環周期的全局變量,建模時將時間考慮在內會極大地提高建模的難度並增加檢測的時間,但不考慮時間就無法檢測出與時間相關的安全規約。

(3)物理環境建模缺失

工控系統與物理環境關係密切,工業控制器的輸入一般可以認為是物理環境的輸出,輸出一般可以認為是物理環境的輸入,構成一個閉環迴路,不考慮物理環境就無法精確地模擬出工業控制器的行為。

(4)狀態空間爆炸

PLC代碼包含的變量多,狀態空間大,對PLC代碼進行建模分析是建立在狀態轉化基礎上的,如果直接進行模型檢測會造成狀態空間爆炸的問題。

(二)PLC代碼形式化分析

PLC代碼形式化驗證旨在檢測出PLC代碼缺陷,防止惡意代碼的入侵。目前通過形式化驗證方式發現PLC代碼缺陷的研究主要集中於對PLC代碼形式化模型構建、PLC代碼缺陷及安全需求規約描述以及PLC代碼模型檢測技術的研究,如圖4所示。

(三)PLC控制代碼檢測的技術路線

(1)中間語言翻譯

由於工業控制器支持多種標準程式語言,且語法語義上都有較大差異,現有的模型檢測技術大都基於特定的程式語言,為了降低建模的複雜性,我們需要把PLC程式語言轉化成模型檢測器可以處理的中間語言。

Darvas等提出了將PLC程序的SCL語言轉化為基於NuSMV的中間模型方法,它是一種接近於自動機模型的中間模型。McLaughlin等給出了將PLC的指令表IL語言代碼翻譯為基於Vine的中間語言ILIL的方法。Zonouz等通過反編譯的方法將MC7CODe轉化為中間語言ILIL,該中間語言ILIL同樣使用BitBlaze二進位分析工具Vine插件來描述。

(2) 時間模型構建

工業控制系統的實時性要求很高,因此時間是很重要的建模對象。延時寄存器(On-Delay Timer,TON)用於確保PLC中實時性屬性,TON指令為PLC的輸入信號提供延遲機制。對TON計時器建模會極大地提高建模的難度並增加檢測的時間,但不考慮時間就無法檢測出與時間相關的安全規約。因此對TON計時器的形式化驗證成為PLC代碼形式化驗證的瓶頸之一。

近年來也有一些對TON計時器的建模研究,Masder等最早開始這方面的研究,他們將IL程序轉換為時間自動機模型並使用自動機和Prometa模型兩種方式對計時器建模。Willems使用時間自動機對TON模型建模計來解決關於TON的問題。Wan等在定理證明器Coq中針對梯形圖語言對TON計時器進行形式化驗證,但沒有給出通用模塊的PLC程序形式化描述。Sidi在定理證明器Coq中針對指令表語言對TON計時器進行形式化驗證。

(3)模型檢測技術

模型檢測是一種廣泛使用的自動化驗證技術,選擇合適的模型來驗證系統,並且通過系統地探測建模來檢查所要驗證的所需屬性。由於模型檢測可以自動執行,並能在系統不滿足性質時提供反例路徑,因此在工業界比演繹證明更受推崇。模型檢測在PLC系統安全的驗證方面特別有用,因為與傳統的計算機編程相比,可以更容易地將低級PLC代碼建模為狀態轉換系統。

目前研究中用到的模型檢測工具有很多, 如SMV、UPPAAL、SPIN等。Yoo等使用Verilog模型和CadenceSMV模型對核電站控制系統的PLC代碼進行模型檢查。McLaughlin等開發了一個TSV

(Trusted Safety Verifier)工具,該工具是利用TEG(Temporal Execution Graph)圖來進行模型檢測,在原始的IL代碼對輸出變量賦值再轉換到ILII中間語言,依據被給的安全需求,TSV使用生成的TEG圖來決定具體的原子命題值。Zonouz等同樣利用TEG圖的方法進行模型檢測,先對線性時序邏輯規範公式進行取反接著得到TEG-UR圖模型P,然後在模型M中搜尋滿足的路徑,最後,如果在第三步中不存在任何路徑,則可認為原始代碼滿足安全需求,能夠安全地執行。如果存在路徑,則可以通過違反約束的路徑條件得到相應的反例。

實際開發的PLC程序包含的多個變量和狀態空間,執行路徑較複雜。會遇到狀態空間爆炸的問題。解決狀態空間爆炸問題最有效的方法是符號執行,McLaughlin等提出一種合併具有相同輸出的輸入來避免等價狀態生成的狀態聚合方法。Guo等提出了一種用於自動測試PLC程式語言符號執行工具SymPLC。SymPLCPLC代碼作為輸入,並在應用符號執行之前將其轉換為C語言,以系統的生成測試輸入來覆蓋每個周期任務中的所有路徑。為此,他們提出了一些PLC特定縮減技術,用於識別和消除冗餘。

在工業控制系統中,一個微小的代碼缺陷可能影響到整個工業流程遭受破壞甚至威脅到生命財產安全。本文圍繞著工業控制系統控制代碼安全展開研究,從PLC代碼邏輯缺陷、代碼安全需求規約兩個方面對工控代碼缺陷進行分類,並結合了現實中常見的梯形圖邏輯缺陷構造了代碼利用場景,基於這些代碼邏輯缺陷實現了對工業控制系統的拒絕服務攻擊,中間人攻擊等。PLC代碼形式化驗證是發現PLC代碼缺陷的一種重要且有效的方法,文章最後圍繞著如何實現,簡要從中間語言翻譯,時間模型構建和模型檢測技術三個方面闡述了PLC代碼形式化驗證的技術路線及研究進展。

標籤:

 

  PLC[82]    代碼[73]    程式語言[12]

[整理編輯:CK365測控網]
更多精彩文章請關注公眾號「CK365測控界」

免責聲明:凡註明來源CK365測控網的所有作品,均為本網合法擁有版權或有權使用的作品,歡迎轉載,請註明出處。非本網作品均來自網際網路,轉載目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責。

相關焦點

  • plc是什麼?應用領域有哪些?
    plc是一種控制系統,在各行各業中有著廣泛的應用。可根據應用領域的不同及客戶的使用要求不同,去進行相應的編程代碼調整,從而滿足客戶的使用要求。plc應用領域有:1.開關量邏輯控制眾所周知,plc取代了較為傳統的繼電器,利用它邏輯運算的特性,實現了單獨控制和多方控制及自動化生產線的控制等等。比如:數控工具機、自動化包裝線等。
  • 淮北安川伺服驅動器報警代碼快速
    淮北安川伺服驅動器報警代碼快速   危機下,大陸交流伺服系統市場仍然呈現欣欣向榮的景象:2009年市場容量超過45億元,同比2008年增長23.9%中國高精尖科研設備銅材主要提供商,國家重點扶持機構中鋁洛銅向日本生田產機購買一整條伸銅雙面銑面切削生產線;世界幾乎所有汽車品牌上的銅材的加工過程都要利用生田產機的設備完成。
  • 基於PLC的梳棉機步進電機控制系統
    用plc控制步進電機,脈衝分配器的設計是一個很重要和非常靈活的問題,它可以用硬體組成,也可以用軟體組成,本文以松下fp0-c16t plc為例,討論幾種實現步進電機脈衝分配器的方法。由於脈衝分配器是由硬體實現,fp0-c16t只需提供一串脈衝,而fp0系列的plc具有脈衝輸出功能和高速計數器(hsc)功能,因此利用此功能進行控制步進電機非常方便。
  • PLC實現溫度數據採集升級的應用方案
    無論你在國企、民企或外企,臺達電子一定能使你大顯身手、助你成功,如果員工(搞電氣的)需要培訓,plc、dop(hmi)再加上一臺變頻器,是你最好的試驗教材;如果設備運轉異常、效率低下、技術落後、產品質量不穩定等等,可以瀏覽臺達機電綜合產品目錄,相信一定會找到合理的解決方案。下面要介紹的一個案例就是這樣誕生的:臺達plc在溫度數據採集方面的應用。
  • 分析:plc是否能夠控制步進電機
    打開APP 分析:plc是否能夠控制步進電機 vacsin2018 發表於 2021-01-12 16:14:28 經常聽到眾多人說
  • 同是PLC中國的與外國的有何不同
    控制器通過埠連其他所需要的管理的設備,如水泵、電箱、暖通設備等,及時監控、收集設備相關信息,並進行信息整理,並將這些信息反饋到PLC觸控屏,以便於人們實時接收,掌控連接設備的工作狀態。並且控制器還會進行判斷自動控制,自主對連接設備做定期排查。當發現連接設備出現故障或者運行不暢等情況,都會及時告知管理人員。在可控範圍內自主發出指令讓設備做出正確的調整。
  • plc與變頻器的接線圖_plc和變頻器通訊接線圖詳解
    plc與變頻器兩者是一種包含與被包含的關係,PLC與變頻器都可以完成一些特定的指令,用來控制電機馬達,PLC是一種程序輸入執行硬體,變頻器則是其中之一,但是PLC的涵蓋範圍又比變頻器大,還可以用來控制更多的東西,應用領域更廣,性能更強大,當然PLC的控制精度也更大。
  • [公告]東旭光電:關於與英國曼徹斯特大學、UG2M及VERSARIEN PLC...
    時間:2018年11月11日 16:16:22&nbsp中財網 證券代碼東旭光電科技股份有限公司(以下簡稱「東旭光電」或「公司」)於2018年11月7日與英國曼徹斯特大學(The University of Manchester,以下簡稱「曼大」)、曼大創烯科技有限公司(UG2M Ltd,以下簡稱「UG2M」),2018年11月5日與Versarien plc(Versarien plc,以下簡稱「VS
  • 函數表達式在PLC編程中的應用~深圳龍崗伯俊PLC培訓
    導讀: 李輸送與安檢聯動系統採用上位機集中、plc現場分散控制模式進行控制。1 引言在對自動化設備進行plc編程的過程中,由於各種輸入變量、輸出變量及中間變量之間的關係錯綜複雜,開始時往往毫無頭緒。如果能夠根據設備所要實現的各種功能,列出各種變量之間的函數表達式,就可以清楚的分析它們之間的邏輯關係,繼而根據表達式編寫plc程序,下面以深圳機場的行李輸送與安檢聯動系統為例,介紹如何運用函數表達式來分析各種變量之間的邏輯關係的。
  • 羅克韋爾與西門子大型PLC通訊方案評析
    1 引 言 由於不同公司的自動化控制產品各有其應用特點和編程特點,尤其某些公司的plc編程軟體中還內置了很多適合不同應用的專用模塊,甚至有些公司的plc產品開始針對某些行業的應用特點
  • 西門子PLC編程軟體
    西門子plc編程軟體是一款專為西門子設備而專門開發的plc編程軟體。西門子編程軟體中文版的主要為了幫助用戶使用西門子的設備,機械設備需要進行特定的程序才能夠進行工作,這款軟體就是讓你的設備按你的想法去工作。太平洋下載中心為您提供西門子plc編程軟體官方下載。
  • 星三角降壓啟動plc梯形圖電路圖
    打開APP 星三角降壓啟動plc梯形圖電路圖 周碧俊 發表於 2018-08-17 15:25:15 星三角降壓啟動plc梯形圖 設計一一個三相異步電動機星三角降壓啟動控制程序,要求合上電源刀開關,按下啟動按鈕SB2後,電機以星形連接啟動,開始轉動5s後,k3t3斷電 ,星形啟動結束。
  • plc梯形圖編程實例_plc梯形圖編程基本概念
    plc梯形圖編程中,用到以下四個基本概念: 01軟繼電器 PLC梯形圖中的某些編程元件沿用了繼電器這一名稱,如輸入繼電器、輸出繼電器、內部輔助繼電器等,但是它們不是真實的物理繼電器,而是一些存儲單元(軟繼電器),每一軟繼電器與PLC存儲器中映像寄存器的一個存儲單元相對應
  • 三菱Q系列PLC,用CC-Link控制變頻器正反轉和多段速
    字軟元件定義:軟元件號 高8位 低8位↓ ↓ ↓RWwn.0:監視器代碼2 / 監視器代碼1
  • 電氣控制原理圖轉變為PLC梯形圖:這就是一個樸素的方法論指導!
    不言而喻,plc梯形圖對於plc編程至關重要,今天就重點來看一下,如何由電氣控制原理圖一步步轉化為plc梯形圖。首先這是一個簡單的自鎖電路的例子,一起來看一下SB1啟動按鈕、SB2停止按鈕、FR熱繼電電器,KM交流接觸器,以及它們的動作原理。
  • plc輸入輸出實物接線圖
    打開APP plc輸入輸出實物接線圖 發表於 2019-06-03 16:05:25   plc輸入輸出實物接線圖   1、輸入模塊   輸入電路中有RC濾波電路(上圖中R1和C),用來防止輸入觸點抖動或者幹擾脈衝引起的誤動作。
  • 教程| 利用AllenNLP,百行Python代碼訓練情感分類器
    AllenNLP,使用不到一百行代碼訓練情感分類器。斯坦福的情感分析樹庫(TreeBank)目前,研究人員發布了一些公開的情感分類數據集。它的設計初衷是為 NLP 研究和開發(尤其是語義和語言理解任務)的快速迭代提供支持。它提供了靈活的 API、對 NLP 很實用的抽象,以及模塊化的實驗框架,從而加速 NLP 的研究進展。本文將向大家介紹如何使用 AllenNLP 一步一步構建自己的情感分類器。
  • L brands(LB.US)攜手Next plc 就維密英國與愛爾蘭業務展開合作
    來源:智通財經網智通財經APP獲悉,維多利亞的秘密母公司L brands(LB.US)宣布將與英國零售商Next plc(NXGPY.US)為公司旗下維多利亞的秘密在英國和愛爾蘭的業務開展合作。根據這項有待監管部門批准的協議,維多利亞的秘密英國公司(Victoria's Secret UK)和Next plc將成立一家合資公司,合資公司將收購維多利亞秘密英國公司目前管理的大部分資產。新成立的合資企業會與當地房東達成協議,在英國和愛爾蘭經營所有維多利亞的秘密門店。而目前仍在美國經營的維多利亞的秘密英國電商業務,也將在2021年春季被納入合資企業。
  • 最廣泛的PLC編程指令,最少掌握6個
    最近很多的網友留言想要學習plc,又苦於「投師無門」,那今天就分享幾個廣泛使用的plc編程指令以幫大家「投石問路」。來看一下LD指令。它指的是取指令,意思是常開觸點和母線相連,LDI為取反指令,指的是常閉觸點和母線相連,OUT指的是驅動線圈的輸出指令。
  • plc編程工資多少一個月
    小編有一個朋友,整車製造廠電工,俗稱操作技工,大專畢業,他工作一段時間後,清楚的認識到自己的不足,然後開始自學PLC,自學一段時間,發現沒人教比較難,又報了班學習,一有業餘時間就學,在堅持一段時間後,總算是有所成,然後開始爭取在單位做有關plc的基礎工作,好在單位也肯給他機會去做,現在所有機器人涉及plc都是他進行故障處理。