【 資安警訊 】- 程式開發語言 R 爆有程式碼執行漏洞,可用於供應鏈攻擊
發布編號 :OIS-CTI-2024-05-002
情資來源 :iThome
事件類型 :攻擊、漏洞警訊公告
內容說明 :
開源碼程式語言 R 被發現有一個允許攻擊者執行惡意程式碼的重大漏洞,開發機構本周發布新版修補。
本漏洞為資安業者 HiddenLayer 研究人員 Kasimir Schulz 和 Kieran Evans 通報,命名為 CVE-2024-27322 。 CERT 公告說明,最新漏洞為一反序列化 (deserialization) 瑕疵,允許惡意檔案在反序列化時執行任意程式碼。這項攻擊若牽涉套件,則可能引發供應鏈攻擊。本漏洞風險值被列為 8.8 。
R 語言支援資料序列化 (data serialization) 。序列化是指將物件轉換成可儲存格式,反序列化則是將儲存格式轉換成物件。序列化和反序列化發生在資料儲存及網路上傳輸,對開發人員來說,也經常發生在程式開發過程中:從套件庫下載套件即牽涉反序列化。但序列化與反序列化過程很容易遭到惡意人士濫用。
R 語言開發使用 RDS 檔案格式進行序列化資料的儲存或傳送。 RDS 格式包括二種: .rdb 檔及 .rdx 檔。R 程式執行過程使用 readRDS 函式從套件庫讀取這二種檔案,再以 eva1 函式評估檔案中的表達式 (expression) 的值,以便將物件由 RDS 檔解壓縮並反序列化,在目標平臺上執行。
研究人員指出, CVE-2024-27322 即牽涉R程式序列化/反序列化過程中,利用 promise 物件及惰性求值 (lazy evaluation) 。在反序列化載入 RDS 檔或套件時,由於 R 援惰性求值 (lazy evaluation) ,未能及時檢查 Promise 物件 RDS 檔中的指令值。攻擊者可建立包含有特定指令值的 RDS 檔,再以社交工程誘使使用者下載。因此若是惡意 RDS 檔,則使用者程式參照 RDS 檔時就會直接執行指令程式碼。若物件是組譯成 R 套件,攻擊者可將之加入 R 儲存庫中,等其他使用者載入該套件時即執行程式碼。研究人員指出,一旦攻擊者只要能覆寫掉原本的 .rdx 或 .rdb 檔,就能以 R 套件發動供應鏈攻擊。
影響平台 :
使用 R 語言的各種平台和應用程式。
建議措施 :
R 語言開發單位已發布新版本 R Core Version 4.4.0 解決這項漏洞。安全廠商呼籲開發人員儘速更新。
參考連結 :