CVE-2026-31943LibreChat是一个功能丰富的ChatGPT克隆项目。在0.8.3版本之前,其`packages/api/src/auth/domain.ts`文件中的`isPrivateIP()`函数存在缺陷。该函数无法正确检测以十六进制规范化形式存在的IPv4映射IPv6地址。这导致任何经过身份验证的用户都可以绕过SSRF(服务端请求伪造)保护机制,诱导服务器向内部网络资源发送HTTP请求,包括云元数据服务(如AWS 169.254.169.254)、回环地址及RFC1918私有地址段。
该漏洞的根源在于LibreChat未能全面解析和校验IP地址格式。在`packages/api/src/auth/domain.ts`文件中,`isPrivateIP()`函数承担了SSRF防御的关键角色,旨在拦截指向内网(如127.0.0.1、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)的请求。然而,该函数存在逻辑缺陷,未能正确处理IPv4映射的IPv6地址的十六进制规范化形式。IPv6协议允许将IPv4地址嵌入其中(IPv4-mapped IPv6),且支持十六进制表示。例如,IPv4地址`169.254.169.254`(AWS元数据服务地址)可以表示为IPv6十六进制形式`::ffff:a9fe:a95e`。当攻击者在请求参数中使用这种格式时,`isPrivateIP()`函数无法识别其为私有地址,从而放行了请求。攻击者利用此绕过技术,可以诱导LibreChat服务器作为代理,向敏感的内网服务发起HTTP请求,获取云平台凭证、扫描内网端口或访问本地管理接口。