漏洞概述 漏洞名称: Password reset link poisoning via X-Forwarded-Host header spoofing 漏洞描述: TrustProxies中间件信任所有代理( ),接受来自任何来源的 头。 TrustHosts中间件旨在防止主机头攻击,但存在一个循环缓存依赖问题,导致验证被绕过。 当请求密码重置时, 通知使用 生成重置URL,该URL从攻击者控制的域中派生,从而允许攻击者发送包含指向攻击者控制域的链接的密码重置邮件。 严重程度: Medium (CVSS 3.1: 6.8) 攻击向量: 网络 — 通过HTTP POST到 利用。 攻击复杂度: 高 — 需要 头到达Coollify应用未修改;在默认Traefik部署中,代理可能会覆盖某些配置中的转发头。 用户交互: 需要 — 受害者必须点击密码重置邮件中的 poisoned 链接。 影响: 机密性影响: 高 — 账户接管提供对所有受害者资源的访问(服务器、应用程序、秘密、环境变量)。 完整性影响: 高 — 账户接管允许部署到受害者服务器、修改应用程序和更改配置。 影响范围 受影响组件: - — (第15行) - — (第21-41行) — 循环缓存bug防止验证 - — (第64-74行) CWE: - CWE-644: Improper Neutralization of HTTP Headers for Scripting Syntax - CWE-346: Origin Validation Error 修复方案 选项1: 修复TrustHosts中的缓存bug并使用APP_URL进行密码重置(推荐) 1. 修复TrustHosts中的循环缓存依赖: 2. 使用 进行密码重置URL: 选项2: 限制TrustProxies到已知代理IP 概念验证 (POC) 额外加固措施 配置Traefik以限制转发头:添加 到默认Traefik配置。 将密码重置通知排队而不是同步发送:队列工作者没有访问HTTP请求上下文,将回退到 。 向所有生成绝对URL的通知类添加基于FQDN的URL覆盖(电子邮件验证、邀请链接等)。