漏洞概述 漏洞名称: Whistlelink: Site-access password exposed in web server access logs via GET query string 严重程度: CRITICAL 描述: Whistlelink 是一个用于保护可选启用的、密码保护的匿名举报平台的网站。当用户解锁此类站点时,客户端通过发送一个包含密码的 HTTP GET 请求来验证密码。该密码以 Base64 编码形式存在于请求行中,并被前端 Web 服务器的访问日志记录。由于日志通常被集中化到网络可达的系统(如日志/可观测性平台、离线备份、对象存储),任何能够读取这些日志的人都可以轻松解码 Base64 值并恢复明文站点访问密码,从而破坏整个受保护举报站点的访问控制。 影响范围 CVSS v3.1 评分: 7.7 (High) CVSS v3.1 环境评分: 9.8 (Critical) CVSS v4.0 评分: High 影响: 站点访问密码泄露给任何有权访问 Web 服务器/代理/聚合日志或其备份的人。 可能导致未授权访问受保护站点。 如果配置了站点访问密码,攻击者可以绕过保护机制。 长期暴露:日志保留和备份意味着秘密在密码轮换之前仍可恢复。 修复方案 1. 停止在 URL 中发送密码: 使用 POST 方法并在请求体中发送密码,确保 TLS 加密且不记录在请求行中。 2. 不要修复此问题: 确保基于密码的身份验证被排除在访问/错误日志和任何可观测性/WAF 捕获之外;清理历史日志和备份,其中包含 。 3. 不要依赖 Base64 进行机密性: 将密码视为秘密,端到端传输;不要在 localStorage 或 Auth 头中保留可逆副本。 4. 轮换任何可能已被记录的站点密码: 并重新评估密码是否被泄露。 5. 服务器端执行: 确认密码门控在受保护数据端点服务器端执行,不仅通过客户端路由守卫。 6. 限制暴力破解: 节流 并避免简单的布尔值 Oracle 以限制暴力破解。 POC 代码