首页 网络安全 正文

Glance欺骗身份验证暴力保护绕过CVE-2026-63770

摘要

栋科技漏洞库关注到 Glance 0.8.5 及以下版本的身份验证处理程序存在 IP 伪造漏洞,已追踪为CVE-2026-63770,CVSS 3.X评分8.5。

Glance 是 Go 语言开发、开源可私有化部署的轻量化聚合仪表盘,主打一站式整合各类资讯、服务监控信息,单文件二进制开箱即用。

一、基本情况

Glance内置40余种组件,支持RSS资讯、天气、日历、股票、YouTube/Twitch动态、Docker容器状态、服务器监控、自定义API数据。

Glance欺骗身份验证暴力保护绕过CVE-2026-63770

Glance 多套主题、自由拖拽网格布局,支持多分页分类管理;所有数据自行托管,不经三方平台,适合自建家庭实验室、个人工作台。

Glance 单页面统一展示信息,自托管玩家监控 NAS/服务器、程序员聚合技术资讯、打造私人浏览器起始页、家庭统一信息中控面板。

栋科技漏洞库关注到 Glance 0.8.5 及以下版本的身份验证处理程序存在 IP 伪造漏洞,已追踪为CVE-2026-63770,CVSS 3.X评分8.5。

二、漏洞分析

该漏洞源于当服务端开启代理模式时,未认证攻击者可通过在 X-Forwarded-For 请求头中传入任意内容,绕过暴力破解锁定防护机制。

攻击者篡改 X-Forwarded-For 头部最左侧 IP 值,让每次登录尝试都显示来自不同 IP 地址,

使得单 IP 登录失败计数器永远无法达到锁定阈值,从而无限制对登录接口爆破猜解账号密码。

当服务配置项proxied设置为true(官方文档推荐反向代理部署时启用),通过伪造X-Forwarded-For请求头即可完全绕过登录频率限制。

登录接口的暴力破解防护彻底失效,攻击者可无限制枚举密码。

(一)详细原理

Glance 默认安全策略:单个IP每5分钟最多允许5次登录失败。

用于统计限流的IP由addressOfRequest函数解析(文件 internal/glance/glance.go 369-396行),核心逻辑代码:

func (a *application) addressOfRequest(r *http.Request) string {
    // ...
    if !a.Config.Server.Proxied {
        return remoteAddrWithoutPort()
    }

    forwardedFor := r.Header.Get("X-Forwarded-For")
    if forwardedFor == "" {
        return remoteAddrWithoutPort()
    }

    ips := strings.Split(forwardedFor, ",")
    if len(ips) == 0 || ips[0] == "" {
        return remoteAddrWithoutPort()
    }

    return ips[0]
}

开启Proxied: true后,函数直接取X-Forwarded-For头部最左侧第一个IP作为客户端真实地址。

该头部内容由客户端可控,可自定义任意字符串。

Nginx、Traefik等标准反向代理使用$proxy_add_x_forwarded_for时,只会在原有头部末尾追加真实客户端IP,保留前端传入的伪造IP。

例如攻击者传入X-Forwarded-For: 1.2.3.4,代理转发后头部变为1.2.3.4, 真实公网IP,程序仍会读取攻击者自定义的伪造IP。

官方配置文档(docs/configuration.md 269-273行)明确要求使用反向代理(Nginx/Traefik/NPM)时必须开启proxied: true。

也就是说官方推荐的生产部署方案,恰好存在可被绕过限流的漏洞。

身份认证处理函数handleAuthenticationAttempt(internal/glance/auth.go 134-248行)第142行调用addressOfRequest获取IP,

并以此作为失败登录计数器的索引。

攻击者每次请求更换伪造IP,每次登录尝试都会使用全新的空计数器,永远不会触发锁定。

三、POC概念验证

(一)前置条件:

Glance部署在反向代理后端,配置文件glance.yml开启proxied: true

循环脚本每次请求更换伪造IP,绕过限流爆破密码:

管理员已设置登录后刷新可查看

每次请求传入唯一伪造IP,无论发送多少次登录请求,都不会触发频率限制。

(二)漏洞危害

任何能够访问Glance登录接口的攻击者,均可无限制暴力猜解任意账号密码。

风险程度取决于目标账号密码强度,弱口令、通用密码账号会被完全攻陷。

登录成功后可完整访问Glance控制面板,读取各类敏感组件数据:自定义API组件中的密钥、Docker容器信息、内网服务地址等。

公网可直接访问登录页面的部署环境风险最高,这也是文档中最常见的自托管使用场景。

四、影响范围

Glance ≤ 0.8.5

五、修复建议

Glance > 0.8.5

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接