全球工業環境中使用的數百萬 PLC(可編程邏輯控制器)面臨 CODESYS V3 軟件開發工具包(SDK)中 15 個漏洞的風險,這些漏洞爲遠程代碼執行(RCE)和拒絕服務(DoS)攻擊提供了可趁之機。
如今全球 500 餘家設備制造商使用 CODESYS V3 SDK,根據 IEC 61131-3 标準對 1000 多個 PLC 型号進行編程,以便用戶開發定制的自動化序列。
該 SDK 被廣泛使用,爲工程師配置和測試用于工業系統的 PLC 提供了一種開發環境。大量 PLC 中的固件含有 CODESYS 提供的庫程序以運行工程師們編寫的程序,而可以被利用的正是這嵌入的代碼,導緻設備容易受到攻擊。
該 SDK 還提供了一個 Windows 管理界面和一個模拟器,允許用戶在部署到生産環境之前先測試其 PLC 配置和所編的程序。
CODESYS V3 SDK 中的 15 個漏洞是由微軟研究人員發現的,他們于 2022 年 9 月向總部位于德國的 CODESYS 報告了這些漏洞。這家廠商于 2023 年 4 月發布了安全更新以解決已發現的問題。
由于這些設備具有的性質,它們不常更新以修複安全問題,因此微軟的安全團隊昨天發布了一篇詳細的文章,以提高人們對這一風險的認識,并幫助加快修補。
圖 1. 在互聯網上曝光的 CODESYS 設備(圖片來源:微軟)
CODESYS 漏洞
微軟仔細檢查了施耐德電氣和 WAGO 這兩家廠商使用 CODESYS V3 的的兩款 PLC,結果發現了 15 個高危漏洞(CVSS V3:7.5 - 8.8),其中 12 個漏洞是緩沖區溢出漏洞。
這些漏洞分别是:CVE-2022-47378、CVE-2022-47379、CVE-2022-47380、CVE-2022-47381、CVE-2022-47382、CVE-2022-47383、CVE-2022-47384、CVE-2022-47385、CVE-2022-47386、CVE-2022-47387、CVE- 2022-47388、CVE-2022-47389、CVE-2022-47390、CVE-2022-47392 和 CVE-2022-47393。
主要問題出在 SDK 的标記解碼機制上,具體來說是指标記在沒有驗證大小的情況下被複制到設備緩沖區中,這給攻擊者提供了緩沖區溢出的機會。這些标記是數據或數據結構的載體,爲 PLC 的正常運行提供了關鍵指令。
緩沖區溢出問題并不是孤立的,微軟還在 CODESYS V3 SDK 的 15 個組件中發現了這個問題,包括 CMPTraceMgr、CMPapp、CMPDevice、CMPapp、CMPAppBP、CMPAppForce 和 CMPFileTransfer。
雖然這些漏洞需要身份驗證才能被利用,但微軟表示,可以通過使用 CVE-2019-9013 來規避這個要求,而 CVE-2019-9013 是另一個影響 CODESYS V3 的漏洞,在傳輸過程中以明文形式暴露用戶憑據,如下所示。
微軟的分析師試了 15 次,結果發現有 12 次能夠利用該漏洞在 PLC 上遠程執行代碼。
如果産品運行的是 3.5.19.0 之前的版本,無論硬件和操作系統配置如何,都會受到影響,CODESYS 的安全公告列出了以下受影響的産品:
CODESYS Control RTE(SL)
CODESYS Control RTE(for Beckhoff CX)SL
CODESYS Control Win(SL)
CODESYS Control Runtime System Toolkit
CODESYS Safety SIL2 Runtime Toolkit
CODESYS Safety SIL2 PSP
CODESYS HMI(SL)
CODESYS Development System V3
CODESYS Development System V3 simulation runtime
除上述産品外,如果運行 4.8.0.0 之前的版本,以下産品也會受到影響:
CODESYS Control for BeagleBone SL
CODESYS Control for emPC-A/iMX6 SL
CODESYS Control for IOT2000 SL
CODESYS Control for Linux SL
CODESYS Control for PFC100 SL
CODESYS Control for PFC200 SL
CODESYS Control for PLCnext SL
CODESYS Control for Raspberry Pi SL
CODESYS Control for WAGO Touch Panels 600 SL
建議管理員盡快升級到 CODESYS V3 v3.5.19.0,同時微軟還建議斷開 PLC 及其他關鍵工業設備與互聯網的連接。
正如微軟警告的那樣:" 如果威脅分子針對使用 CODESYS 高危版本的設備發動 DoS 攻擊,就可以關閉發電廠,而遠程代碼執行可以在設備中植入後門,讓攻擊者得以篡改設備操作,導緻 PLC 運行異常,或者竊取關鍵信息。"