我們很高興推出一系列技術分析文章,重點介紹各種 CVE(常見漏洞和暴露),這些 CVE 可以透過我們的高階威脅檢測技術進行識別和修復。 所有研究均由參加過 OPSWAT 網路安全獎學金計劃,於2023年12月啟動。
在這篇文章中,我們將解釋 Rockwell Micrologix CVE-2017-14469 以及組織如何防禦 CVE-2017-14469 漏洞利用攻擊。
羅克韋爾自動化 MicroLogix 1400 控制器
PLC(可程式設計邏輯控制器)是專門設計用於控制工業製造過程的電腦。它用於關鍵基礎設施領域,如裝配線、機器監控、過程控制等。羅克韋爾自動化 MicroLogix 1400 控制器是一款模組化和可擴展的 PLC,具有高 I/O 數量、快速高速計數器和增強的網路支援,適用於廣泛的應用。
14469
Rockwell Automation MicroLogix 1400 Series B FRN 21.2 及更早版本中存在一個漏洞,使得攻擊者能夠讀取和寫入/覆蓋設備上的敏感資料。包含命令的未經身份驗證的特製資料包將導致修改使用者定義的故障例程編號,從而導致設備執行意外停止。
美國國家漏洞資料庫 (NVD) 已將此漏洞歸類為“嚴重”,CVSS(通用漏洞評分系統)得分最高。其影響可能會顯著影響設備的機密性、完整性和可用性,而無需任何其他身份驗證。系統的可用性至關重要,尤其是在關鍵基礎設施系統中,任何中斷或停機都可能導致巨大的經濟損失甚至實體損壞。該CVE可能會觸發控制器內的「系統故障」,從而導致PLC功能停止,從而造成關鍵基礎設施系統的中斷風險。
漏洞分析
故障的概念與程式設計中的異常非常相似。當發生故障時,指令的執行將停止,導致設備進入故障狀態。故障可分為兩種類型:使用者故障和非使用者故障。
有兩種清除故障的機制:透過向控制器循環電源來自動清除故障,或者使用使用者故障例程手動清除故障,這是一種可以設置為自動執行以回應使用者故障的過程。CVE-2017-14469 與第二種機制有關。為了防止系統因使用者故障而意外關閉或停止執行,定義了使用者故障例程,以根據故障號處理分配的故障,並在發生相應故障時執行。如果沒有例程處理故障,設備將停止執行並顯示故障號。當設備正常工作時,使用者故障例程的值設置為0x00,並且只能配置在故障處理的0x03到0xFF範圍內。
羅克韋爾自動化 MicroLogix 1400 中有三個模式開關位置:PROGRAM、REMOTE 和 RUN。PROGRAM 和 REMOTE 模式都允許將程式下載到設備,同時還允許接受和處理傳入請求。但是,在 RUN 模式下,設備僅接受受限請求。在此漏洞的上下文中,如果設備處於 RUN 模式,則無法利用此漏洞。
該元件透過帶有PCCC擴展的CIP(通用工業協定)進行通訊。CIP 協定建立在 Ethernet/IP(工業協定)之上。資料包的結構如下圖所示:
從上圖可以看出,沒有指定用於身份驗證的欄位。這帶來了重大挑戰,因為該設備無法區分攻擊者的請求和來自使用者的正常流量。
通常,操作員可以透過控制軟體監控和更新設備的配置。為了與設備通訊,控制軟體使用受保護的類型邏輯寫入或讀取命令發送相應的請求,並填寫 CIP PCCC 物件。在CIP PCCC協定格式中,命令由其命令代碼和功能代碼標識。
命令代碼 | 功能代碼 | 說明 |
0x0F | 0800 | 更改模式 |
0x0F | 0xAA | 具有三個位址欄位的受保護類型化邏輯寫入 |
0x0F | 0xA2 | 具有三個位址欄位的受保護類型化邏輯讀取 |
受保護類型化的邏輯寫入命令用於寫入敏感檔,例如設備的狀態檔、位檔、計數器檔和其他配置。
該設備使用 CIP 資料包中的三個位址欄位來標識讀取和寫入的位置:檔案類型、檔編號和元素編號。下面是一些範例值,用於標識將受該命令影響的設定檔位置:
檔案類型 | 檔編號 | 元素編號 | 說明 |
0840 | 0020 | 0x1d | 狀態檔 – 使用者故障例程編號 |
0840 | 0020 | 0060 | 狀態檔 – 主要錯誤代碼 |
0840 | 0020 | 0050 | 狀態檔 – 主要錯誤代碼 |
但是,當設備處理請求時,缺少輸入驗證;在 write 命令中發送的資料未經驗證,允許設置為任何無效值。
該漏洞由兩個主要原因引起。首先,設備無法對傳入請求進行身份驗證,使攻擊者能夠發送未經身份驗證的請求來修改敏感設置。其次,設備錯誤地驗證傳入資料,導致設置更改為無效狀態。
為了成功利用此漏洞,攻擊者發送惡意請求,濫用受保護的類型化邏輯寫入命令,用無效值(如 0x01 或 0x02)覆蓋狀態檔中的錯誤例程編號。當故障例程編號被無效值覆蓋,設備透過另一個CIP報文切換到RUN模式時,會觸發故障並停止執行。
漏洞利用
攻擊可以分為 4 個步驟。
- 透過 Ethernet/IP 與設備建立連接以獲取會話句柄。
- 發送惡意請求覆蓋故障例程號。
- 製作惡意 CIP 資料包,將 PLC 切換回運行模式以觸發故障。
- 設備遇到故障並停止執行。
若要與設備通訊,攻擊者必須透過向設備註冊會話來啟動連接,以獲取會話句柄並將其用於持續通訊。以下代碼演示了標準工作階段註冊請求:
隨後,攻擊者使用先前獲取的會話句柄建構請求,並包含一個有效負載,其中包含受保護的類型化邏輯寫入命令,以覆蓋封裝在 CIP 資料包中的故障例程編號。
在最後一步中,發送另一個 CIP 資料包以將設備切換到運行模式並觸發故障。
如圖所示,PLC的執行已停止,並成功利用了該漏洞。
修復
OPSWAT的ICS安全產品旨在抵禦此類攻擊。 MetaDefender OT Security 是一種 AI 驅動的威脅檢測和智慧工具,可檢測攻擊者的任何異常請求,使管理員能夠識別潛在威脅。
MetaDefender OT Security 具有以下功能來改善 OT 環境的安全狀況:
- 使用智慧資產分析快速發現和建構資產庫存
- 主動和被動監視威脅和異常
- 具有集中式自動修補功能的遠端補丁管理
- 結構化和簡化的風險警報工作流程,由全面且可客製化的儀錶板管理
- 全球、區域和行業監管合規報告
此外,MetaDefender OT Security 還可與 MetaDefender Industrial Firewall以防止OT Security 檢測到的惡意請求影響設備。MetaDefender Industrial Firewall 牆是保護關鍵任務 PLC、VFD、RTU 及其他工業資產的最後一道防線。它應用高度細粒化的裝置存取政策,並強制執行裝置存取區域,確保未經授權的存取或變更不會影響關鍵硬體。
兩者共同創建了一個無縫的IDPS(入侵檢測和防禦系統),可有效檢測和防止任何異常網路連接、請求、通訊等影響網路。
MetaDefender OT Security 透過其資產可見性和強大的威脅檢測,為關鍵基礎設施提供關鍵保護。除了其技術實力之外, OPSWAT 為對網路安全充滿熱情的個人提供令人興奮的職業機會。加入我們,共同塑造安全的未來,保護最重要的事物。探索不同的角色和有影響力的專案 OPSWAT,您的專業知識可以帶來切實的改變。讓我們一起保護世界上最重要的系統。