ShellTorch 是 PyTorch TorchServe(PyTorch 默认推理服务器)中一系列3个严重漏洞的攻击链。
这是一个端到端 POC,针对一个 SSRF 漏洞,该漏洞可导致从网络发起 任意远程代码执行
TorchServe 0.8.1docker run -d --rm -it -p 8080:8080 -p 8081:8081 -p 8082:8082 -p 7070:7070 -p 7071:7071 --name shelltorch-demo pytorch/torchserve:0.8.1-cpu
docker logs -f shelltorch-demo
ShellTorch-Checker 脚本此工具用于检查给定部署是否容易受到 CVE-2023-43654 的攻击。
bash <(curl https://raw.githubusercontent.com/OligoCyberSecurity/ShellTorchChecker/main/ShellTorchChecker.sh) "127.0.0.1"
输出:
_____ _ _ ______ _ _ _______ ____ _____ _____ _ _
/ ____ | | | | ____| | | | |__ __/ __ \| __ \ / ____| | | |
| (___ | |__| | |__ | | | | | | | | | | |__) | | | |__| |
\___ \| __ | __| | | | | | | | | | | _ /| | | __ |
____) | | | | |____| |____| |____| | | |__| | | \ \| |____| | | |
|_____/|_| |_|______|______|______|_| \____/|_| \_\______|_| |_|
此脚本用于检测 TorchServe CVE-2023-43654
该漏洞由 Oligo 研究团队发现,可实现无需认证的远程代码执行
更多详情请参阅我们的完整报告:https://www.oligo.security/blog/shelltorch-torchserve-ssrf-vulnerability-cve-2023-43654
免责声明:
使用此工具即表示您承认并同意该工具按“原样”提供,
不提供任何形式的明示或暗示担保。Oligo 及其贡献者不对因使用、误用或依赖本工具
而导致的任何直接、间接、偶然或后果性损害或错误结果承担责任。
您需自行负责理解本工具的输出及其含义,以及根据其发现采取的任何行动。
使用风险自负。
...........................................
继续运行此脚本即表示我已阅读并同意免责声明。
按任意键开始扫描,按 Ctrl+C 退出。
torchserve 未在本地运行。
扫描结果:
[-] 检查管理接口 API 配置错误(端口 8081)
[X] 127.0.0.1:8081 对远程连接开放
[-] 检查 CVE-2023-43654 远程服务端请求伪造(SSRF)
[X] 存在 CVE-2023-43654 SSRF 文件下载漏洞
建议:
[-] 解决管理接口 API 配置错误:
将 config.properties 中的 "management_address" 从 0.0.0.0 改为 127.0.0.1
示例:
management_address: http://127.0.0.1:8081
[-] 解决 CVE-2023-43654 SSRF 文件下载漏洞:
在 config.properties 的 "allowed_urls" 字段中配置特定的 URL。
示例:
allowed_urls=https://s3.amazonaws.com/.*,https://torchserve.pytorch.org/.*
docker kill shelltorch-demo && rm -rf model-store