AWS 拒绝修复 Multi Model Server 中一个 CVSS 9.8 的漏洞:其管理 API 没有登录验证

Dev.to ML 2026-10-25T03:05:16+08:00

书籍:《Ship It — 务实的创业公司技术栈》
另著有:《Thinking in Go》(两本套装)——《Go 编程完全指南》+《Go 中的六边形架构》
我的项目:Hermes IDE | GitHub —— 面向使用 Claude Code 等 AI 编程工具的开发者的 IDE
关于我:xgabriel.com | GitHub

10 月 23 日,AWS 发布了安全公告 2026-148-AWS,涉及 Multi Model Server(MMS,其开源的机器学习模型服务工具)中的两个漏洞。所有已发布版本(<= 1.1.11)均受影响,公告明确写道:“任何分发渠道都没有可用的修复版本,也没有修复计划。”也就是说,不会有人给你发布 1.1.12。

两个漏洞中更严重的是 CVE-2026-115812,按 Strix 的 CVE 记录,CVSS 3.1 评分 9.8,CVSS 4.0 评分 9.3。AWS 将其描述为模型归档解压环节的缺陷:精心构造的归档文件可以把文件写到目标目录之外,进而可能以 MMS 进程的权限执行代码。如果你几年前用 MMS 部署过模型,之后再没动过那个容器,那现在这摊事就得你自己收拾了——上游不会有人来修。

AWS 披露了什么

公告涵盖两个 CVE:

真正让这两个漏洞从“糟糕”变成“紧急”的,是公告里的另一句话:MMS 的管理接口不要求身份验证,把它绑定到网络可达地址的部署风险更高(AWS)。换句话说,只要能连上那个端口,任何人都能让你的服务器加载一个模型。

截至本文写作时,公开渠道尚未索引到可用的概念验证(PoC)代码,该 CVE 也未列入 CISA 的已知被利用漏洞目录——这一信息来自 TheHackerWire 和 Strix。AWS 表示,这些问题是经由协同漏洞披露流程收到的。

CVE-2026-115812:一个精心构造的模型归档文件,能把文件写到解压目标文件夹之外。至于为什么不修复——MMS 已经停止维护(EOL)。它的 GitHub 仓库已被所有者于 2025 年 11 月 20 日归档,陷入只读状态,公告也确认了它的终止维护状态(AWS)。但该软件包仍可从 PyPI 以 multi-model-server 的名字安装,AWS 还指出它也曾发布在 Docker Hub 上。

它还以更隐蔽的方式存在于一些从不提及它名字的技术栈底层。SageMaker Inference Toolkit 的 README 写明,它的「serving stack 构建于 Multi Model Server 之上」,它自己的安装命令就是 pip3 install multi-model-server sagemaker-inference。该仓库也在同一天,2025 年 11 月 20 日被归档。如果你的团队用这个 toolkit 构建过自定义推理容器,那么 MMS 就在里面。

先确认你有没有在用它

从代码和镜像查起。在每个负责构建模型服务容器的仓库根目录下运行:

git grep -n -e multi-model-server \
  -e sagemaker-inference -e MMS_CONFIG_FILE

在运行中的容器或虚拟环境里,直接问 pip:

pip show multi-model-server

然后再看这两个 API 分别监听在哪里。MMS 依次从 MMS_CONFIG_FILE 环境变量、--mms-config 命令行参数、当前工作目录读取 config.properties(MMS 配置文档):

grep -E '^(inference|management)_address' \
  config.properties

默认推理地址是 http://127.0.0.1:8080,管理地址是 http://127.0.0.1:8081,文档说 MMS「默认只允许 localhost 访问」(配置文档)。如果 management_address 写着 0.0.0.0,或者容器把 8081 端口发布了出去,那就当这台服务器已经暴露处理。

当管理端口与推理端口共用时,推理地址是否对外开放同样要紧——下面提到的 SageMaker 风格部署就是这种情况。

最后一步是从外部验证。管理 API 文档说明,用普通的 GET /models 即可列出模型。找一台本不该有访问权限的机器,对你的主机执行:

curl -s --max-time 5 "http://$MMS_HOST:8081/models"

如果你是基于 SageMaker Inference Toolkit 构建的,管理接口和推理接口共用一个端口,那就对 8080 或容器实际发布的端口执行同样的请求。只要其中任一请求能返回模型列表,攻击者的请求也能。

同一个 API 还用 POST /models?url=... 注册模型,文档里写明 url 可以是 HTTP(S) 地址(见管理 API 文档)。注册这一步正是 MMS 下载模型、解压归档的地方,也是这批 CVE 攻击的两个环节。两套 API,只有一套上了锁:MMS 把推理和管理拆开,后者仅靠网络位置来防护。

AWS 给出的临时方案

AWS 的实际建议是停用 MMS,迁移到仍在维护的模型服务方案(见 AWS 公告)。在替代方案落地前,公告给了一个有前提的缓解办法。

如果推理和管理跑在不同端口上,就把管理绑定到回环地址(loopback),并且不要向模型下载路径传入外部 URL(见 AWS 公告)。落到 config.properties 里,就是让 management 保持文档中的默认值,并显式写出来,免得以后有人跟着推理地址一起把它放宽:

inference_address = http://0.0.0.0:8080
management_address = http://127.0.0.1:8081

这里推理地址对网络开放,因为总得有东西来调用它;管理则留在回环地址上。

前提在于:AWS 表示,SageMaker 风格的配置会把管理绑定到与推理相同的端口、相同的所有地址,这种情况下你没法把它挪到回环,除非关掉模型加载。针对这类部署,公告建议优先安排迁移,在此之前把服务端口的访问限制在可信调用方(见 AWS 公告)。落到实践,就是配置安全组或网络策略,只放行调用模型的服务,而不是整个 VPC。

所以这周要做的事:

旧的推理容器最容易被遗忘。它们还在应答请求,却没人盯着它们报警,寿命往往比当初构建它们的人还长。

如果你维护着 fork

有些团队把 MMS 收进了自己的代码库,一直自己打补丁。

AWS 直接给出了对策:拒绝解压后路径跑到解压目录之外的归档条目,并把模型下载限制在明确的 URL 白名单内(AWS)。第一条就是标准的 zip-slip(压缩包路径穿越)防护。下面是用 Python 处理 zip 包的示例,只用到 zipfile 和 os.path:

import os
import zipfile

def safe_extract(archive: str, dest: str) -> None:
    root = os.path.realpath(dest)
    with zipfile.ZipFile(archive) as zf:
        for name in zf.namelist():
            path = os.path.join(root, name)
            target = os.path.realpath(path)
            if os.path.commonpath([root, target]) != root:
                raise ValueError(f"unsafe entry: {name}")
        zf.extractall(root)

它会先解析每个条目,确认无误再写入;只要有一个条目越界,整个归档都会被拒绝。

白名单的思路相同,只是对象换成了 URL:在服务器发起请求之前,把 url 参数的主机名解析出来,和一份固定名单比对。

两者都只有几行代码,但都不能代替从无人维护的服务器上迁走。

如果这些内容对你有用——

这里踩的坑大多属于部署卫生问题:管理端口绑定得比实际需要更宽,而且这个端口所在的容器在维护者离开后没人跟踪。Ship It 讲的就是小团队从 localhost 到生产环境这一段,从托管、CI/CD 到监控,这样下次收到停服通知时,你手上有一份清单,而不是临时去搜。

如果你用 Claude Code 或其他编程智能体,我开发了 Hermes IDE,一个可以让它们并排运行的 IDE。它在 GitHub 上。

Book:《Ship It——务实的创业公司技术栈》

另著有:《Thinking in Go》两卷本——《Complete Guide to Go Programming》和《Hexagonal Architecture in Go》

我的项目:Hermes IDE | GitHub,一款面向使用 Claude Code 及其他 AI 编程工具交付项目的开发者 IDE

我:xgabriel.com | GitHub

10 月 23 日,AWS 发布安全公告 2026-148-AWS,通报了 Multi Model Server(MMS)中的两个漏洞。MMS 是 AWS 开源的机器学习模型服务工具,所有已发布版本(<=1.1.11)均受影响。

查看原文