【編者按】工業(yè)機器人是智能工廠制造過程自動化的核心,是支持汽車、飛機、加工食品、藥品等各類產(chǎn)品制造的最重要部件。隨著在后新冠疫情時代實現(xiàn)無人制造,能夠高精度重復執(zhí)行指定動作的工業(yè)機器人的重要性也重新受到關注。然而,工業(yè)機器人是使用幾十年前設計的語言編程的。Trend Micro自2017年以來一直在對智能工廠進行網(wǎng)絡安全研究,發(fā)現(xiàn)了定義工業(yè)機器人行為的“任務程序”漏洞以及“編程語言”中的設計缺陷。這些語言是幾十年前設計的遺留語言,但仍是一項在現(xiàn)代智能工廠中使用的技術。對此,Trend Micro從短期到長期的角度,分析了遺留語言中涉及的設計安全風險,以及所有工業(yè)機器人用戶應該采取的風險緩解措施。
一、用于移動工業(yè)機器人編程語言的特殊性
( 一 )工業(yè)機器人支持工廠自動化
工業(yè)機器人是一種代替人類在工廠內進行裝配、運輸、加工等工作的機械設備。在當今世界,滿足全球商業(yè)規(guī)模的生產(chǎn)已司空見慣。工業(yè)機器人是制造過程自動化的基礎,它可以重復執(zhí)行精確的工作并復制靈活的運動。
圖1 工業(yè)機器人
即使在新冠疫情大流行的情況下,對工業(yè)機器人的需求也在顯著增加。據(jù)《財富商業(yè)洞察》報告,2019年,全球工業(yè)機器人市場規(guī)模約為218.3億美元,預計到2027年將擴大到664.8億美元。這一需求增加的原因是由于主要生產(chǎn)基地亞洲國家的勞動力成本飆升,以及為了提高生產(chǎn)率而不斷投資于自動化。此外,新冠疫情大流行帶來的實現(xiàn)最小或無身體接觸和無人服務的社會需求,也被認為是對工業(yè)機器人需求不斷增長的主要驅動力。工業(yè)機器人在制造過程自動化中發(fā)揮著核心作用,在后新冠疫情時代將變得更加重要。
( 二 ) 工業(yè)機器人的運動以編程方式定義
從數(shù)字技術的角度來分析工業(yè)機器人。工業(yè)機器人是應用于制造業(yè)的復雜信息物理系統(tǒng),是智能制造系統(tǒng)的關鍵組成部分。當人們聽到機器人這個詞時,通常首先會想到的是機械臂一樣的執(zhí)行器部分,但執(zhí)行器部分不是獨立運動的,它的運動由程序定義并由控制器控制。因此,工業(yè)機器人在放置后不會立即按預期運動,而是按程序進行所需的運動??梢哉f,工業(yè)機器人是一臺具有物理操作部分的大型計算機。
圖2 工業(yè)機器人運動機制
( 三 ) 自動化程序用專有語言編寫
趨勢科技(Trend Micro)在與米蘭理工大學的聯(lián)合研究中,發(fā)現(xiàn)重工業(yè)巨頭ABB的一個應用程序存在漏洞。該應用程序是用ABB自己的編程語言編寫的,研究人員對此并不熟悉。驅動工業(yè)機器人的自動化程序使用的語言與用于創(chuàng)建網(wǎng)站和移動應用程序的主流編程語言完全不同。定義工業(yè)機器人自動化行為的“任務程序”通常由領域專家使用特定于每個機器人制造商的編程語言編寫。此外,每個機器人制造商都創(chuàng)建了特定于制造商的生態(tài)系統(tǒng),該生態(tài)系統(tǒng)只使用自己的編程語言、編程環(huán)境甚至工具。
例如,圖3是一個用大型重工業(yè)公司Kuka的原始語言“KRL”編寫的簡單代碼示例。在此例中,工業(yè)機器臂被指示在兩個點(位置1和位置2)之間移動。圖4還顯示了為ABB平臺編寫的拾取放置程序??梢钥吹絻烧呤褂弥煌恼Z言結構。
圖3 Kuka KRL在兩點之間循環(huán)移動工業(yè)機器人手臂10次
圖4 ABB拾取放置程序仿真環(huán)境
在此研究項目中,研究人員的調查目標是工業(yè)機器人領域的八家領先企業(yè)的平臺,目標制造商是ABB、Comau、Denso Wave、FANUC、川崎重工、Kuka、三菱電機和通用機器人。
在本研究中,Trend Micro不僅使用了包括自動化邏輯在內的任務程序分析等實證驗證方法,還參考了8大工業(yè)機器人平臺的技術文件,分析了來自11個在線論壇的信息,從非技術的角度,對20名工業(yè)機器人領域的專家進行了訪談。目的是強制考慮非技術問題,如行業(yè)特征和開發(fā)文化,這超越了特定程序的漏洞分析。因此,除了提高控制流程工程師的安全意識外,通過重新設計平臺和執(zhí)行重大升級,可以更容易、更有效地修復漏洞。
技術本身是“遺留”的事實并不意味著它馬上就有安全漏洞。然而,每種技術的安全需求和開發(fā)過程都必須隨著環(huán)境變化帶來的威脅而變化。當根據(jù)幾十年前的常識開發(fā)的技術被納入今天的智能工廠時會發(fā)生什么?本研究通過對現(xiàn)有編程語言的結構分析,闡明了網(wǎng)絡安全在工業(yè)領域的當前定位。
圖5 研究方法概述
二、利用任務程序漏洞的三種攻擊場景
( 一 ) 三種攻擊場景
Trend Micro驗證了公共代碼庫(GitHub和在線社區(qū))提供的大約100個任務程序,可以確認大多數(shù)代碼中存在“輸入值驗證錯誤”、“缺乏身份驗證功能”和“遠程代碼執(zhí)行”等漏洞。利用這些漏洞的三種攻擊場景包括:
1、通過網(wǎng)絡改變機器人操作:通過利用動作服務器的有缺陷的輸入值驗證和通過網(wǎng)絡傳輸無效的坐標值數(shù)據(jù),使機器人執(zhí)行非預期的操作。
工業(yè)機器人的運動是以編程方式定義的,并將值輸入到控制器。這使得機器人可以通過網(wǎng)絡接收坐標信息,從而調節(jié)機器人的運動。因此,為了確保物理安全,機器人的輸入必須始終完整。通常,為工業(yè)機器人設置安全保護區(qū)域,并且工業(yè)機器人的最大操作限制在該區(qū)域內。因此,如果安全區(qū)域設置正確,區(qū)域外坐標的輸入將無效。另一方面,在為安全區(qū)域的“內部”指定無效坐標的情況下,必須通過機器人的輸入值驗證和門禁控制功能來確保輸入的完整性。
然而,在此次調查的程序中發(fā)現(xiàn)了“有缺陷的接入認證”和“有缺陷的輸入值驗證”。換言之,該任務程序不被配置為僅從特定伙伴接收命令,不判斷輸入坐標信息的有效性,并且僅基于接收的數(shù)據(jù)來確定機器人的運動。通過利用這些漏洞,攻擊者可以偽造網(wǎng)絡數(shù)據(jù)包并隨意移動目標機器人。這種攻擊可能會影響制造質量,并由于意外的機器人移動而造成制造過程中的延遲。如果安全區(qū)配置不正確,造成的破壞會更嚴重。
以這種方式定義網(wǎng)絡行為的程序通常被用作運動服務器任務程序,用于驅動聯(lián)網(wǎng)的工業(yè)機器人。大型項目,如ROS-Industrial軟件,廣泛使用運動服務器來提供各種OEM工業(yè)機器人通用的供應商接口。
通常,有適當?shù)木W(wǎng)絡級保護,例如IP地址或MAC地址過濾,并且保證工業(yè)機器人僅從指定的控制器接收坐標值。然而,如果任務程序沒有除上述網(wǎng)絡級別保護之外的機制來驗證源,或者如果任務程序受到輸入值驗證漏洞的影響,則只要接收到的坐標值來自有效的IP地址或MAC地址,即使源被欺騙,它也將被自動信任。無論哪種情況,這都使侵入本地網(wǎng)絡上的攻擊者很容易執(zhí)行攻擊方案。因此,攻擊者可以簡單地發(fā)送任意坐標,工業(yè)機器人將被相應地驅動,從而導致產(chǎn)品質量差,制造過程中出現(xiàn)延誤或停頓。此外,配置不當?shù)陌踩珔^(qū)域可能會導致更嚴重的物理損壞。
2、通過機器人竊取信息:通過利用任務程序中的漏洞發(fā)起路徑遍歷攻擊來竊取機密信息。
此攻擊方案利用Web服務器上的任務程序中的路徑遍歷漏洞,執(zhí)行該程序以顯示制造商提供的工業(yè)機器人控制器上的坐標信息。在這項研究中發(fā)現(xiàn)的程序是一款應用程序,可以通過“ABB-Robot Apps Robot Studio”使用,并在工業(yè)機器人上作為網(wǎng)絡服務器運行。它是用ABB自己的語言Rapid實現(xiàn)的。利用此漏洞,網(wǎng)絡上的攻擊者可以在工業(yè)機器人上創(chuàng)建包含潛在敏感數(shù)據(jù)的文件,如包含工業(yè)機器人操作時的坐標信息的日志文件,并使用工業(yè)機器人的控制器泄露該文件。機密工業(yè)信息在地下市場上以非常高的價格交易,是網(wǎng)絡犯罪分子的主要目標之一。
路徑遍歷是一種攻擊方法和漏洞,在該攻擊方法和漏洞中,有人試圖訪問不應通過利用漏洞進行訪問的目錄。此攻擊利用遵循樹結構中指令的服務器規(guī)范,但在大多數(shù)情況下,存在允許開發(fā)人員意外訪問的代碼。
在注重安全的軟件開發(fā)中,總是假設“外部輸入是不可靠的”。因此,有必要事先驗證服務器端的輸入值,以便不會通過開發(fā)人員意想不到的輸入執(zhí)行未經(jīng)授權的訪問。
3、生成有針對性、自傳播的惡意軟件:利用編程語言固有的網(wǎng)絡通信功能和代碼動態(tài)加載功能,使任務程序充當從外部來源接收惡意程序的下載器。此外,利用任務程序中有缺陷的輸入值驗證來使工業(yè)機器人執(zhí)行與無效外部輸入相對應的功能。通過這些組合,生成并執(zhí)行以用于工業(yè)機器人的編程語言編寫的自傳播惡意軟件。
因此,雖然工業(yè)機器人及其自動化技術與運行在Windows服務器上的傳統(tǒng)Web應用程序完全不同,但也存在一些眾所周知的漏洞類型,如路徑遍歷和代碼注入,這意味著組織可能會感染病毒,也可能會成為惡意軟件的目標。
( 二 ) 攻擊造成的損害
下圖展示了研究中所展示的攻擊場景和攻擊的影響。
圖6 三種攻擊場景及其影響
通過利用研究中確定的任務程序中的漏洞,網(wǎng)絡攻擊者可以物理破壞生產(chǎn)線,竊取機密信息,甚至竊取金錢。
如上所述,這些測試中使用的漏洞是在GitHub和在線社區(qū)的代碼中發(fā)現(xiàn)的。其中一些代碼是從新手程序員使用的手冊和編程參考等技術資料中摘錄的。此外,之前的研究表明,開源代碼中的漏洞會傳播并最終影響產(chǎn)品。因此,假設攻擊中的場景可以在制造車間重現(xiàn)。
三、機器人語言中的基本安全隱患
( 一 ) 基本安全風險
工業(yè)機器人的任務程序是用“幾十年前設計的專有語言”編寫的。從安全角度看,20年前的封閉工廠環(huán)境和現(xiàn)代智能技術創(chuàng)新環(huán)境是完全不同的。因此,編程語言發(fā)展時的安全標準很可能不符合今天的標準?;谶@一假設,趨勢科技在本次調查中,分析了工業(yè)機器人行業(yè)八大廠商共100個用編程語言編寫的任務程序,試圖確定“語言設計本身的安全風險”。結果發(fā)現(xiàn),工業(yè)機器人的編程語言存在技術安全風險,無需任何權限確認即可無條件使用系統(tǒng)的基本功能。問題的實質是,驅動機器人所需的功能已經(jīng)實現(xiàn),但沒有機制來防止這些功能被惡意使用。
編程語言的規(guī)范高度依賴于平臺。工業(yè)機器人是一個復雜的網(wǎng)絡物理系統(tǒng),其中程序、控制器和驅動部分密切協(xié)調工作。因此,不僅僅是編程語言的問題,更是平臺機器人控制器端的問題。
幾十年前,當工業(yè)機器人的編程語言被設計出來時,智能工廠的概念還不存在,封閉的工廠環(huán)境是常態(tài)。因此,該設計沒有考慮到來自外部位置的主動攻擊者,也就不足為奇了。相比之下,智能手機等現(xiàn)代設計的系統(tǒng)在安全設計上假定了惡意攻擊。例如,在為Android開發(fā)應用程序并用Java編程時,需要一個明確的權限請求來訪問應用程序本身沙箱之外的資源。因此,即使惡意開發(fā)者將包含惡意軟件的應用偷偷植入手機應用商店,也必須申請許可才能使用惡意軟件操作應用所需的麥克風、網(wǎng)絡和其他系統(tǒng)資源。
這樣的權限設置對于工業(yè)機器人也是必要的。不過,目前對工業(yè)自動化平臺還沒有這樣的要求,所有資源都是“扁平化”接入,任務程序可以使用超出其應有權限范圍的低級資源。
工業(yè)機器人編程語言被用來定義機器人的運動,但是軟件本身有更多的功能。這次研究的制造商專有編程語言不僅支持普通計算系統(tǒng)中的文件系統(tǒng)概念,而且還具有函數(shù)指針和動態(tài)代碼讀取等功能。通過充分利用這些基本功能,甚至可以在機器人平臺上編寫惡意軟件。
( 二 ) 專有語言特有的安全風險
由于每種機器人語言的“獨特性”,也存在著安全風險。對于常見的編程語言,如C、C++、C#、Java、PHP、Python等,有一些代碼檢查器,例如靜態(tài)程序分析工具,可以檢測不安全的模式。另一方面,由于沒有針對每家公司的機器人編程語言的此類工具,安全檢查將很難實現(xiàn)自動化。
工業(yè)機器人編程語言不像主流操作系統(tǒng)那樣基于通用的運行或體系結構,而是基于每個制造商的平臺,如機器人控制器等。出于這個原因,每個機器人供應商還必須準備其自己的專有編程語言和程序執(zhí)行運行時所基于的環(huán)境。有基于實時操作系統(tǒng)(如RTOS)的編程語言和環(huán)境,但通常它們不是標準化的。此外,每種語言都有自己的語義,用來判斷源代碼中使用的變量和語句是否正常工作的標準,這些語義可能與通用編程語言非常不同。事實上,在此次調查的一些語言沒有字符串操作或密碼操作等功能。
此外,這些類型的特征往往會限制用戶的選擇。由于工業(yè)機器人的編程環(huán)境是無法輕易替代的,因此用戶糾正這些設計缺陷并不容易,也不實用。此外,每家公司的語言不僅是當前工業(yè)自動化的核心,而且有很強的技術限定,這不可避免地增加了轉移到其他平臺的成本。因此,很有可能用戶將不得不選擇接受其使用機器人平臺的安全風險。
支持制造業(yè)的核心技術仍然存在網(wǎng)絡安全風險。這就是智能工廠面臨的現(xiàn)代困境。
四、以整個生態(tài)系統(tǒng)的“設計安全”為目標
工廠環(huán)境傳統(tǒng)上是“封閉的”網(wǎng)絡空間。在這種環(huán)境中,只有在那里工作的人才會接觸工廠的設備,而不需要考慮與外界的網(wǎng)絡通信及其影響。作為本實證研究對象的工業(yè)機器人也是在同樣的前提下設計的。
然而,在當今世界,即使在工廠環(huán)境中,網(wǎng)絡連接也在不斷發(fā)展。為了提高生產(chǎn)率和降低不良率,并在新冠疫情大流行期間保持員工安全和業(yè)務連續(xù)性,使用數(shù)字技術的智能制造流程將成為行業(yè)標準。同時,工廠也將面臨著網(wǎng)絡攻擊的風險。軟件在智能工廠中無處不在,并與網(wǎng)絡相連。此外,不僅是用戶公司,還有系統(tǒng)集成商、顧問、工業(yè)機器人制造商等,都以一種復雜的方式參與了這類軟件的開發(fā)和供應。因此,實現(xiàn)安全智慧工廠需要整個生態(tài)系統(tǒng)的努力。對于每個用戶、集成商和制造商來說,“制作安全的軟件”,從而“保證軟件的安全”是非常重要的。
( 一 ) 從短期到長期的角度實施風險緩解措施
本系列中提出的安全問題深深植根于工業(yè)機器人的基本技術,使得制造商很難立即用另一種技術取代它或進行糾正。因此,除了將保護現(xiàn)有環(huán)境作為一項短期措施外,建議涉及工業(yè)機器人的利益攸關方應逐步和系統(tǒng)地實施風險緩解措施,將未來的智能作為一項中長期措施。下圖顯示了趨勢科技推薦的特定于涉眾的循序漸進的風險緩解措施。為了讓智能工廠更安全,現(xiàn)場工程師、系統(tǒng)集成商和工業(yè)機器人制造商實施各自的安全措施是很重要的。
圖7 風險緩解措施
1、短期措施
實施短期措施的關鍵參與者是現(xiàn)場的控制過程工程師和實際編寫、實施和操作任務程序的系統(tǒng)集成商。用戶端的現(xiàn)場工程師必須確保執(zhí)行網(wǎng)絡分段,以減少工業(yè)機器人的任務程序被濫用時造成的危害。該操作可以顯著降低網(wǎng)絡相關的安全風險。除了這些基本的安全措施外,還建議對網(wǎng)絡和端點進行保護,以將容易受到惡意代碼攻擊或感染惡意代碼的風險降至最低。此外安全的編碼實踐對用戶來說也是必不可少的。如果是與系統(tǒng)集成商一起進行開發(fā),請嘗試與他們共享類似的安全策略。源代碼審查、錯誤修復和創(chuàng)建適當?shù)脑创a控制過程都是基本和有效的措施。
2、中期措施
除了上述短期措施外,工業(yè)機器人編程語言的安全庫可以作為中期措施,以保護新環(huán)境。例如,安全庫包括加密庫。在這個階段,關鍵的參與者是系統(tǒng)集成商和工業(yè)機器人制造商。通過在高級開發(fā)中實現(xiàn)這樣的安全措施,現(xiàn)場開發(fā)人員可以輕松實現(xiàn)輸入值驗證和身份驗證功能,而無需花費時間添加新的流程。
此外,系統(tǒng)集成商和工業(yè)機器人制造商應該實現(xiàn)運動服務器參考。通過實現(xiàn)這樣的引用,開發(fā)人員不必逐個檢查運動數(shù)據(jù)處理代碼中的缺陷。這種參考實現(xiàn)的典型例子是三菱電機的本機運動服務器和Kuka的EKI。此外,作為針對源代碼評審中發(fā)現(xiàn)的漏洞對策,系統(tǒng)集成商應該考慮為可能包含漏洞的任務程序提供主動補丁。
3、長期措施
在未來,制造商的努力對于確??删幊坦I(yè)機器人的設計安全是至關重要的。例如,在一個工業(yè)機器人平臺控制器中,將安全功能如身份驗證、訪問控制、加密等,整合到編程語言中是至關重要的。工業(yè)機器人控制器中的運行,必須實現(xiàn)細粒度的特權分離,以利用授權系統(tǒng)。減少漏洞和惡意代碼影響的一種有效方法是將函數(shù)的執(zhí)行限制在特權指令上。最重要的是,開發(fā)者還需要讓其他人提前知道這些使用限制。
最后,代碼簽名是確保工業(yè)機器的代碼不被篡改的唯一方法。代碼簽名并非易事,但使用此方法可以確保代碼與原始開發(fā)人員編寫的代碼完全相同。在工廠設備中實施代碼簽名還有很長的路要走,但如果市場需求繼續(xù)推動有利于集成和靈活性的創(chuàng)新,應該可以在更短的周期內實現(xiàn)更動態(tài)的自動化代碼實施。這應該會加快開發(fā)速度,減少手動檢查程序所花費的時間。安全編寫的任務程序也減少了創(chuàng)建漏洞的機會。這反過來又降低了可編程工業(yè)機器暴露于外部攻擊的風險。事實上,已經(jīng)有許多針對通用編程語言的安全意識編碼準則。隨著IT和OT集成的進展,在未來十年,工業(yè)工程行業(yè)可能會面臨與IT軟件行業(yè)今天所面臨的相同的挑戰(zhàn)。
( 二 ) 以整個生態(tài)系統(tǒng)的“設計安全”為目標
隨著制造商采用更多智能工廠技術,其互聯(lián)性使他們面臨更多的網(wǎng)絡攻擊,防備缺口日益突出。工廠環(huán)境中的網(wǎng)絡安全措施正在轉變。至少在10年內,承擔與外部世界網(wǎng)絡連接的智能工廠將變得司空見慣。屆時,工業(yè)自動化行業(yè)很可能面臨與現(xiàn)代IT軟件行業(yè)同樣的挑戰(zhàn)。
通過本系列的四個部分,從網(wǎng)絡安全的角度分析了工業(yè)機器人的任務程序和編程語言,闡明了現(xiàn)代工業(yè)機器人面臨的問題。此時,盡管很難采取所有可能的措施來解決調查中確定的安全問題,但制造商、集成商和用戶可以共同努力將這些風險降低到可以接受的水平。
( 三 ) 在智能工廠中建立網(wǎng)絡彈性的方法
● 制造企業(yè)應投資于一項全面的網(wǎng)絡管理計劃,該計劃擴展到整個企業(yè)(IT和OT),以識別、保護、響應和從網(wǎng)絡攻擊中恢復;
● 執(zhí)行網(wǎng)絡安全成熟度評估:評估應包括OT環(huán)境和業(yè)務網(wǎng)絡,并應包括先進制造網(wǎng)絡風險;
● 建立一個考慮OT的正式網(wǎng)絡安全治理計劃:該計劃應提供一致性,并推廣到全球制造地點;
● 根據(jù)由此產(chǎn)生的風險狀況確定行動的優(yōu)先順序:使用網(wǎng)絡安全成熟度評估的結果來創(chuàng)建可與執(zhí)行領導層共享的戰(zhàn)略和路線圖;
● 內置安全性:由于許多智能工廠仍處于規(guī)劃和早期階段,現(xiàn)在是將這些項目與網(wǎng)絡風險計劃相協(xié)調的時候了。
智能工廠的安全性需要大量的規(guī)劃,最好從設計階段開始。制造商必須從一開始就為智能工廠需要的大量數(shù)據(jù)做好準備。這意味著要事先計劃使用的設備類型,評估要采用的通信協(xié)議,甚至準備好要遵循的違規(guī)相關的標準操作程序(sop),以及其他考慮事項。制造商還必須與專家合作,保護和捍衛(wèi)設備、網(wǎng)絡、數(shù)據(jù)以及驅動物聯(lián)網(wǎng)智能制造系統(tǒng)的軟件解決方案和應用程序。
智能制造的潛力是巨大的,不應受到安全疑慮的阻礙。在創(chuàng)建或改造智能工廠時,行業(yè)領導者必須建立信任。解決方案必須經(jīng)過仔細、精確的選擇和認可,才能獲得優(yōu)異的性能。由于制造設備的生命周期很長,因此選擇的解決方案必須具有內置的靈活性和先進的更新解決方案,以防止當前和未來的威脅,這一點是至關重要的。
參考資料:
【1】https://www.trendmicro.com/us/iot-security/news/6719/The_security_dilemma_of_smart_factories_Part_1_Specificity_of_the_programming_languages_used_to_move_industrial_robots
【2】https://www.trendmicro.com/us/iot-security/news/6762/The_security_dilemma_of_smart_factories_Part_2_Three_attack_scenarios_that_exploit_task_program_vulnerabilities
【3】https://www.trendmicro.com/us/iot-security/news/6788/The_Security_dilemma_of_smart_factories_Part_3_Fundamental_security_risks_in_robot_languages
【4】https://www.trendmicro.com/us/iot-security/news/6797/The_dilemma_of_smart_factories_Part_4_Aiming_for_security_by_design_for_the_entire_ecosystem
【5】https://iiot-world.com/ics-security/cybersecurity/security-threats-and-risks-in-smart-factories/
來源:關鍵基礎設施安全應急響應中心 作者 | 天地和興工業(yè)網(wǎng)絡安全研究院