ZCyberNews
English
漏洞中危5 分钟阅读
CVE-2026-7820

pgAdmin 4 暴力破解漏洞 CVE-2026-7820 绕过账户锁定

CVE-2026-7820(CVSS 6.5)在 pgAdmin 4 中允许攻击者通过 Flask-Security 的默认 /login 视图暴力破解密码,绕过 MAXLOGINATTEMPTS 的执行。

pgAdmin 4 暴力破解漏洞 CVE-2026-7820 绕过账户锁定

执行摘要

广泛使用的开源PostgreSQL管理和管理工具pgAdmin 4存在一个被追踪为CVE-2026-7820的漏洞,允许远程攻击者绕过账户锁定保护,暴力破解用户密码。这个漏洞被分配了一个CVSS得分6.5(中等严重性),源自于应用程序认证逻辑中对过度认证尝试(CWE-307)的不当限制。根据项目GitHub问题追踪器,pgAdmin仅在其自定义的/authenticate/login视图中强制执行MAX_LOGIN_ATTEMPTS限制,但Flask-Security的默认/login视图 —— 由security.init_app()自动注册,并且每个服务器都能访问 —— 从未查询过User.locked字段。这意味着攻击者可以无限期地向默认端点发送登录请求,而不会触发账户锁定。这个问题在pgAdmin的GitHub仓库中被披露,并且已经合并了一个修复。

技术分析

这个漏洞在于pgAdmin如何与Flask-Security集成,Flask-Security是一个流行的扩展,用于向Flask应用程序添加认证功能。pgAdmin的开发人员实现了一个自定义认证视图/authenticate/login,在允许登录尝试之前检查User.locked属性。如果用户超过MAX_LOGIN_ATTEMPTS,账户将被锁定,并且通过这个视图的进一步尝试将被拒绝。

然而,Flask-Security的security.init_app()函数自动注册了一个默认的/login路由,绕过了pgAdmin的自定义逻辑。这个默认视图使用Flask-Security的内置认证流程,它不检查User.locked字段。User.locked字段在pgAdmin的User模型中通过Flask-Security的UserMixin.is_locked属性定义,但默认的登录处理程序从未引用它。因此,攻击者可以无限期地向/login发送带有猜测凭据的POST请求,而不会被锁定账户。

这个问题在pgAdmin的GitHub问题#9904中被记录,开发人员确认默认的Flask-Security登录端点在所有pgAdmin 4服务器模式安装上都是可访问的。修复涉及禁用默认的/login路由或覆盖Flask-Security的认证处理程序以纳入锁定检查。补丁在2026年4月28日被合并到pgAdmin 4代码库中,根据提交历史。

值得注意的是,这个漏洞影响运行在服务器模式下的pgAdmin 4 —— 这是多用户环境最常见的部署方式,管理员通过Web浏览器远程管理PostgreSQL实例。攻击不需要认证;任何具有网络访问权限的远程攻击者都可以利用pgAdmin Web界面。

缓解措施与建议

pgAdmin用户应该升级到包含CVE-2026-7820修复的最新版本的pgAdmin 4。截至本文撰写时,修补过的版本是pgAdmin 4 v9.2或更高版本,具体取决于发布分支。无法立即升级的管理员应该考虑使用防火墙规则或VPN限制对pgAdmin Web界面的网络访问,限制暴露给受信任的IP范围。此外,监控日志中针对/login端点的重复失败认证尝试可以帮助检测活跃的暴力破解活动。pgAdmin项目建议用户验证他们的部署不暴露默认的Flask-Security登录路由;这可以通过在浏览器中导航到/login并观察是否出现登录表单来检查。

订阅更新

将最新的网络安全资讯直接发送到您的邮箱。

标签:#pgadmin-4#cve-2026-7820#brute-force#authentication-bypass#cwe-307#flask-security

相关文章