首页 网络安全 正文
  • 本文约1935字,阅读需10分钟
  • 4
  • 0

Lobe-Chat 开放的重定向漏洞CVE-2025-59426

摘要

栋科技漏洞库关注到 Lobe Chat 受影响版本中存在一个安全漏洞,该漏洞现在已经被追踪为CVE-2025-59426,漏洞CVSS 4.3评分为3.1。

Lobe Chat 是一个开源、高性能的聊天机器人框架,在 GitHub 上拥有超过 63.4K 星标,是开发者社区中最受欢迎的开源 AI 聊天框架之一。

Lobe Chat 旨在成为所有人的 AI Agent 实验场,一键免费部署私人 ChatGPT/LLM 网络应用程序,根据个性化需求灵活定制智能助手功能。

一、基本情况

Lobe Chat 支持多种主流 AI 模型服务商,如 OpenAI、Claude 4、Gemini、DeepSeek、Ollama、Qwen,通过集成Ollama AI来本地部署。

Lobe-Chat 开放的重定向漏洞CVE-2025-59426

Lobe Chat 框架具备丰富功能,如支持语音合成、多模态交互,拥有可扩展 Function Call 插件系统,用户可一键安装插件并调用外部 API。

栋科技漏洞库关注到 Lobe Chat 受影响版本中存在一个安全漏洞,该漏洞现在已经被追踪为CVE-2025-59426,漏洞CVSS 4.3评分为3.1。

二、漏洞分析

CVE-2025-59426漏洞是存在于 Lobe Chat 在版本1.130.1之前版本中的安全漏洞,攻击者可以利用该漏洞注入任意主机并触发开放重定向。

具体来说,该项目的OIDC重定向处理逻辑会根据X-Forwarded-host或host标头和X-Forwarded-Proto值构建最终重定向URL的主机和协议。

在反向代理将客户端提供的X-Forwarded-* headers信息原样转发给源服务器,或源服务器在没有验证的情况下信任这些头信息的情况下,

攻击者可以注入任意主机并触发开放重定向,将用户发送到恶意域,该漏洞已经在版本1.130.1中得到修复。

该漏洞的潜在风险包括:

迫使用户重定向到不受信任的外部域,从而导致后续的攻击,如网络钓鱼、凭证收集和会话固定;

将用户重定向到伪装页面的恶意域来破坏OAuth/OIDC流用户体验(即使此路径不直接包含令牌,可通过重定向链利用它进行社工攻击)。

当重定向链与CSP旁路或缓存中毒等其他漏洞相结合时,影响可能会放大。

易受攻击的代码分析如下:

const internalRedirectUrlString = await oidcService.getInteractionResult(uid, result);
log('OIDC Provider internal redirect URL string: %s', internalRedirectUrlString);

let finalRedirectUrl;
try {
  finalRedirectUrl = correctOIDCUrl(request, new URL(internalRedirectUrlString));
} catch {
  finalRedirectUrl = new URL(internalRedirectUrlString);
  log('Warning: Could not parse redirect URL, using as-is: %s', internalRedirectUrlString);
}

return NextResponse.redirect(finalRedirectUrl, {
  headers: request.headers,
  status: 303,
});
lobe-chat/src/app/(backend)/oidc/consent/route.ts

Lines 113 to 127 in aa841a3

 const internalRedirectUrlString = await oidcService.getInteractionResult(uid, result); 
 log('OIDC Provider internal redirect URL string: %s', internalRedirectUrlString); 

 let finalRedirectUrl; 
 try { 
   finalRedirectUrl = correctOIDCUrl(request, new URL(internalRedirectUrlString)); 
 } catch { 
   finalRedirectUrl = new URL(internalRedirectUrlString); 
   log('Warning: Could not parse redirect URL, using as-is: %s', internalRedirectUrlString); 
 } 

 return NextResponse.redirect(finalRedirectUrl, { 
   headers: request.headers, 
   status: 303, 
 }); 

三、POC概念验证

1、curl示例

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

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

四、影响范围

Lobe Chat <= 1.130.0

五、修复建议

Lobe Chat >= 1.130.1

六、参考链接

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



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