CVE-2025-66452LibreChat是一款开源的ChatGPT克隆应用,提供了额外的功能和特性。在LibreChat 0.8.0及以下版本中,存在一个严重的跨站脚本(XSS)漏洞。该漏洞源于express.json()中间件在处理JSON解析错误时,没有对错误信息进行安全处理。当用户提交格式不正确的JSON数据时,express.json()会抛出SyntaxError异常,而该异常的错误消息中包含了用户的原始输入内容。这些未经过滤的用户输入会被直接反映到HTTP响应中,如果响应中包含用户可控的HTML或JavaScript代码,浏览器可能会将其解析执行,从而造成XSS攻击。攻击者可以利用此漏洞窃取用户的会话Cookie、劫持用户账号或进行其他恶意操作。由于该漏洞不需要特殊的认证条件,攻击者只需要诱导用户访问恶意构造的链接或提交特定格式的请求即可触发。值得注意的是,该漏洞在披露时官方尚未提供修复版本。
该漏洞的核心问题在于LibreChat使用了Node.js的express.json()中间件来处理请求体的JSON解析,但在处理解析错误时没有实现适当的异常捕获和错误处理机制。当用户提交的请求体不是有效的JSON格式时,express.json()会抛出SyntaxError异常,其错误消息中包含了用户的原始输入字符串。例如,如果用户提交{invalid json},错误消息可能会包含'Unexpected token i in JSON at position 0'这样的内容,其中包含用户输入的部分字符串。攻击者可以通过精心构造包含HTML标签或JavaScript代码的请求体来触发此漏洞。由于express.json()的错误处理没有对输出进行HTML编码或过滤,这些恶意代码会被包含在错误响应中返回给客户端。如果客户端浏览器的Content-Type头没有严格设置为text/plain,或者响应被以HTML方式解析,注入的JavaScript代码就会在受害者浏览器中执行。攻击者通常会使用<img>、<script>或其他可执行脚本的HTML标签来实现代码执行,例如使用onerror事件处理器来触发JavaScript代码。