IPBUF安全漏洞报告
English
CVE-2026-41691 CVSS 6.5 中危

CVE-2026-41691 i18nextify URL注入漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-41691
漏洞类型
URL注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
i18nextify

相关标签

URL注入路径遍历i18nextifyCVE-2026-41691

漏洞概述

i18nextify 是一个通过 script 标签添加网站国际化的 JavaScript 库。3.0.5 之前的版本在处理 loadPath/addPath URL 模板时,直接将 lng 和 ns 值插入而未进行编码或验证。攻击者可通过控制语言代码参数,注入特殊字符改变请求 URL 结构,导致路径遍历或 URL 结构注入。该漏洞已在 3.0.5 版本修复。

技术细节

该漏洞的根本原因在于 i18nextify 在构造资源加载请求时,缺乏必要的安全编码和路径清洗机制。在默认配置中,库依赖 i18next-browser-languagedetector 自动获取语言参数,这通常来源于用户可控的输入(如 URL 的 ?lng= 参数)。攻击者利用这一机制,将包含路径遍历字符(如 ..)或 URL 控制字符(如 /、#、?)的恶意载荷注入到 lng 或 ns 字段中。由于库直接将此载荷拼接到后端 API 请求的 URL 模板中,导致生成的请求 URL 结构被篡改。攻击者借此可能读取服务器上的敏感文件或利用 URL 结构差异造成安全隐患。

攻击链分析

STEP 1
侦察
攻击者识别目标网站使用了存在漏洞的 i18nextify 版本(< 3.0.5)。
STEP 2
构造载荷
攻击者构造包含恶意字符(如 ../)的 URL 参数,例如 ?lng=../../config.
STEP 3
诱导访问
诱导受害者点击包含恶意参数的链接,或者受害者直接访问该 URL。
STEP 4
漏洞利用
i18nextify 读取未经过滤的 lng 参数,并将其直接拼接到资源请求的 URL 模板中。
STEP 5
产生后果
浏览器向非预期的服务器路径发起请求,可能导致敏感信息泄露或路径遍历攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-41691 // Demonstrates Path Traversal via 'lng' parameter injection // Scenario: Default loadPath is '/locales/{{lng}}/{{ns}}.json' // Attacker sets ?lng=../../sensitive_data const maliciousLng = "../../etc/passwd"; const ns = "translation"; // Simulated vulnerable interpolation function function vulnerableInterpolate(template, lng, ns) { // Vulnerable: Direct interpolation without sanitization return template.replace('{{lng}}', lng).replace('{{ns}}', ns); } const loadPathTemplate = '/locales/{{lng}}/{{ns}}.json'; const constructedUrl = vulnerableInterpolate(loadPathTemplate, maliciousLng, ns); console.log("Constructed Malicious URL:", constructedUrl); // Output: /locales/../../etc/passwd/translation.json

影响范围

i18nextify < 3.0.5

防御指南

临时缓解措施
如果无法立即升级,建议在 i18next 接收参数之前对 lng 和 ns 值进行清洗。具体操作包括过滤 ..、/、\、?、#、%、空白字符及控制字符,并限制字符串长度。

参考链接