IPBUF安全漏洞报告
English
CVE-2026-39413 CVSS 4.2 中危

CVE-2026-39413 LightRAG JWT算法混淆漏洞

披露日期: 2026-04-08

漏洞信息

漏洞编号
CVE-2026-39413
漏洞类型
认证绕过
CVSS评分
4.2 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
LightRAG

相关标签

LightRAGJWT认证绕过算法混淆CVE-2026-39413

漏洞概述

LightRAG 在 1.4.14 版本之前存在严重的 JWT 算法混淆漏洞。该漏洞源于 LightRAG API 在处理 JWT 令牌时,未正确限制算法类型。攻击者可利用此缺陷,在 JWT 头部将算法设置为 'none',从而伪造一个不带签名的令牌。由于服务端未显式拒绝 'none' 算法,该恶意令牌会被误认为是有效的,进而导致攻击者绕过身份验证,获得未授权的系统访问权限。

技术细节

该漏洞的核心原理在于 JWT 签名验证机制的配置错误。在标准的 JWT 认证流程中,服务端应使用密钥验证令牌的签名以确保其未被篡改。然而,LightRAG 受影响版本在调用 `jwt.decode()` 函数时,未传入 `algorithms` 参数来强制指定允许的加密算法(如 HS256 或 RS256)。这使得攻击者能够利用 JWT 规范中保留的 'none' 算法进行攻击。利用方式如下:攻击者不需要知道服务端的签名密钥,只需构造一个头部为 `{'alg': 'none'}`、载荷为任意高权限身份信息的 JWT,并将签名部分置空。当服务端解析此令牌时,若未校验算法,将跳过签名验证步骤,直接接受攻击者伪造的载荷信息,从而造成严重的身份认证绕过风险。

攻击链分析

STEP 1
信息收集
攻击者识别目标系统使用了存在漏洞的 LightRAG 版本,并确认其使用了 JWT 进行身份认证。
STEP 2
令牌伪造
攻击者构造一个恶意的 JWT 令牌,将头部算法字段设置为 'none',并在载荷中填入攻击者所需的权限信息(如管理员 ID)。
STEP 3
发送请求
攻击者将伪造好的 JWT 令牌放入 HTTP 请求的 Authorization 头中,发送给目标服务器的 API 接口。
STEP 4
绕过验证
目标服务器解析 JWT 时,由于未强制校验算法,接受 'none' 算法并跳过签名验证,导致伪造令牌通过验证。
STEP 5
未授权访问
攻击者成功以伪造的身份(通常是管理员)登录系统,获取敏感数据或执行高权限操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import jwt import datetime # Target payload claiming to be an admin payload = { 'sub': 'admin', 'role': 'administrator', 'iat': datetime.datetime.utcnow(), 'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1) } # Forge the token using the 'none' algorithm # No secret key is required for the 'none' algorithm malicious_token = jwt.encode(payload, key='', algorithm='none') print(f"Forged Token: {malicious_token}") # Usage example (in a real attack, send this token in the Authorization header) # headers = {'Authorization': f'Bearer {malicious_token}'}

影响范围

LightRAG < 1.4.14

防御指南

临时缓解措施
如果无法立即升级,应修改源代码中所有调用 jwt.decode() 的地方,添加 algorithms=['HS256'](或其他实际使用的算法)参数,显式排除 'none' 算法。此外,建议在 API 网关层增加对 JWT 头部的校验逻辑,拒绝包含 'alg': 'none' 的请求。

参考链接

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