研究人員在 TorchServe 中發現多個高分漏洞,影響數萬 AI 服務器。
TorchServe 是由 Meta 和 Amazon 負責維護的開源的 PyTorch 模型服務庫,可大規模部署經過訓練的 PyTorch,無需編寫自定義代碼,被學術界和産業界廣泛應用于人工智能模型訓練和開發,包括亞馬遜、OpenAI、特斯拉、Azure、谷歌、Intel 等。
ShellTorch
Oligo 安全研究人員在開源的 TorchServe AI 模型服務工具中發現了 3 個高分安全漏洞—— ShellTorch。攻擊者利用這些漏洞可以實現非授權的服務器訪問、遠程代碼執行等,影響數萬聯網服務器,其中部分服務器隸屬于大型公司。
ShellTorch 漏洞是 3 個漏洞的集合,影響 TorchServe v0.3.0 到 v0.8.1 版本,這 3 個漏洞分别是:
1. 濫用管理控制台(未經認證的管理接口 API 錯誤配置):TorchServe 會暴露多個接口,其中包括允許運行時管理模型的管理 API 接口。研究人員在其中發現一個錯誤配置漏洞,導緻 web panel 默認在 IP 地址 0.0.0.0 而非 localhost,會暴露外部請求。由于接口缺乏認證,任何用戶都可以無限制訪問,因此攻擊者可以從外部地址上傳惡意模型。
2.CVE-2023-43654:第二個漏洞是惡意模型注入漏洞,CVSS 評分 9.8 分,通過遠程服務器端請求僞造僞造(SSRF)引發遠程代碼執行。TorchServe 模型的配置文件可以使用 workflow/model 注冊 API 來從遠程 URL 取回。API 中包含所允許的域名列表,研究人員發現默認情況下所有的域名都被認爲是有效的,因此會引發 SSRF。攻擊者可以通過上傳惡意模型來在目标服務器上觸發任意代碼執行。
3.CVE-2022-1471:第三個漏洞是一個不安全的開源庫使用漏洞,CVSS 評分 9.9 分,漏洞産生的根源是一個 Java 反序列化問題引發的遠程代碼執行。由于 SnakeYAML 庫的不安全反序列化,攻擊者可以上傳包含惡意 YAML 文件的模型來觸發遠程代碼執行。
攻擊者利用這三個漏洞就可以入侵運行有漏洞版本 TorchServe 的系統,ShellTorch 攻擊 PoC 視頻參見:
https://player.vimeo.com/video/870718937
Oligo 研究人員發布了一個工具來檢測其服務器實例是否受到 ShellTorch 攻擊的影響,工具下載地址:https://github.com/OligoCyberSecurity/ShellTorchChecker
補丁
Oligo 研究人員分析發現有上萬個 IP 地址(服務器)受到 ShellTorch 攻擊的影響,爲修複以上漏洞,建議用戶:
1. 升級到 TorchServe 0.8.2 版本,但該版本未修複 CVE-2023-43654 。
2. 将 config.properties 文件的管理地址(management_address)設置爲 http://127.0.0.1:8081 來重新正确配置管理控制台。
3. 更新 config.properties 文件中的 allowed_urls,确保服務器隻從可信域名取回模型。
更多參見:https://www.oligo.security/blog/shelltorch-torchserve-ssrf-vulnerability-cve-2023-43654