IPBUF安全漏洞报告
English
CVE-2026-7820 CVSS 6.5 中危

CVE-2026-7820 pgAdmin 4认证绕过漏洞

披露日期: 2026-05-11
来源: f86ef6dc-4d3a-42ad-8f28-e6d5547a5007

漏洞信息

漏洞编号
CVE-2026-7820
漏洞类型
认证绕过
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
pgAdmin 4

相关标签

认证绕过pgAdminCWE-307暴力破解

漏洞概述

pgAdmin 4在9.15版本之前存在认证绕过漏洞。该漏洞源于Flask-Security的默认/login视图未正确实施User.locked字段检查,导致账户锁定机制失效。攻击者可以通过/login端点绕过MAX_LOGIN_ATTEMPTS限制,对使用INTERNAL认证源的账户进行无限制的暴力破解攻击,甚至在账户被锁定后仍可成功登录。该漏洞仅影响本地密码认证,不影响LDAP等外部认证。

技术细节

该漏洞的核心在于pgAdmin对Flask-Security框架的配置不当。pgAdmin仅在自定义的/authenticate/login视图中检查MAX_LOGIN_ATTEMPTS并设置User.locked字段。然而,Flask-Security默认注册的/login视图仍然可用,且该视图依赖的UserMixin.is_locked()总是返回False,Flask-Login的is_active()也仅检查active字段而忽略locked字段。因此,即使攻击者触发了账户锁定,只需向/login端点提交正确的用户名和密码,即可绕过锁定检查获取会话。此外,由于/login端点未实施速率限制,攻击者可以利用该漏洞对INTERNAL认证源执行无限制的在线密码猜测攻击,严重威胁账户安全。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别出目标运行的是pgAdmin 4且版本低于9.15。
STEP 2
步骤2:利用默认端点
攻击者不使用受限制的/authenticate/login端点,而是直接向Flask-Security默认的/login端点发送认证请求。
STEP 3
步骤3:绕过锁控与爆破
由于/login端点不检查User.locked字段且无速率限制,攻击者无视账户锁定状态,进行无限制的密码猜测直至成功。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Flask-Security default login endpoint) target_url = "http://target-pgadmin-instance/login" # Credentials for an INTERNAL authentication source account payload = { "email": "[email protected]", "password": "guessable_password" } # The /login endpoint does not check the User.locked field # allowing brute-force attacks even if the account is locked via /authenticate/login response = requests.post(target_url, data=payload) if response.status_code == 200 or "dashboard" in response.text: print("[+] Login successful! Authentication bypassed.") else: print("[-] Login failed.")

影响范围

pgAdmin 4 < 9.15

防御指南

临时缓解措施
建议用户立即升级至pgAdmin 4 9.15或更高版本以修复此漏洞。若无法立即升级,应在反向代理(如Nginx)或WAF上实施严格的速率限制策略,特别是针对/login路径的POST请求,以防止暴力破解攻击。

参考链接