Trino OAuth2/OIDC开放重定向CVE-2026-16336
Trino(原 PrestoSQL)是开源分布式 SQL 查询引擎,主打跨多种数据源实时查询分析,独立维护,更新迭代更快,生态插件更丰富。
一、基本情况
Trino适合企业统一数据查询网关、数仓联邦查询、实时报表、跨库联合统计;替代多套数据库客户端,一站式查询公司各类数据存储。

Trino完整支持 ANSI 标准 SQL,视图、子查询、窗口函数、JOIN 多表关联语法齐全,采用协调器 + 工作节点集群架构并行执行查询。
栋科技漏洞库关注到Trino 中的OAuth2OIDC 开放重定向漏洞,该漏洞现在已经被追踪为CVE-2026-16336,漏洞的CVSS 3.X评分4.3。
二、漏洞分析
CVE-2026-16336是Trino漏洞,可能导致,攻击者通过伪造请求头可使 redirect_uri 指向攻击者控制的回调端点,构成开放重定向风险。
Trino 在 OAuth2/OIDC 授权码流程中通过 io.trino.server.ExternalUriInfo,
从请求上下文(Host、X-Forwarded-Host、X-Forwarded-Proto、X-Forwarded-Prefix 代理头)动态拼装 redirect_uri 并直接交给 IdP,
受影响版本中,io.trino:trino-server 中 io.trino.server.ExternalUriInfo 构造函数,
通过 @Context HttpHeaders.getHeaderString(X_FORWARDED_PREFIX) 读取请求头并写入 forwardedPrefix 字段,
baseUriBuilder() 在 uriInfo.getBaseUriBuilder()(其 scheme/host/port 来自请求上下文)上调用
.replacePath(forwardedPrefix).replaceQuery(""),absolutePath(CALLBACK_ENDPOINT) ,
把未经白名单或精确匹配的请求源信息拼入 OAuth2 ,
回调 URI;OAuth2TokenExchangeResource.initiateTokenExchange() 与 OAuth2WebUiAuthenticationFilter.filter() ,
在启动 OAuth2 challenge 时把该 URI 透传给 service.startOAuth2Challenge(callbackUri, ...),
使 redirect_uri 暴露给可被外部头操纵的来源,
若 IdP 接受宽松 redirect_uri 匹配则授权码被重定向到攻击者端点并可能被回放到 Trino 回调端换取 token。
三、影响范围
Trino ≤ 483
四、修复建议
Trino> 483
五、参考链接
管理员已设置登录后刷新可查看