IPBUF安全漏洞报告
English
CVE-2026-42150 CVSS 5.1 中危

CVE-2026-42150 wlc HTML输出XSS漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-42150
漏洞类型
跨站脚本 (XSS)
CVSS评分
5.1 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
wlc (Weblate command-line client)

相关标签

XSSCross-Site ScriptingwlcWeblateHTML InjectionCVE-2026-42150Client-side

漏洞概述

wlc是Weblate的命令行客户端,使用其REST API进行交互。在2.0.0版本之前,当使用HTML格式输出时,wlc未对API响应数据进行适当的HTML转义。如果API返回的数据中包含恶意脚本(例如由攻击者控制的翻译字符串或用户名),生成的HTML文件在浏览器中渲染时将执行这些脚本。攻击者可利用此漏洞进行跨站脚本攻击,窃取敏感信息或执行恶意操作。该问题已在2.0.0版本中修复。

技术细节

该漏洞属于存储型跨站脚本(Stored XSS)的一种变体。漏洞根源在于wlc在生成HTML报告时,直接将从Weblate REST API获取的原始数据嵌入到HTML模板中,而未经过任何HTML实体编码或过滤。由于API数据可能包含来自不可信来源的内容(如翻译字符串、项目描述等),一旦攻击者具备高权限(PR:H)并能在Weblate服务器上注入恶意Payload,当管理员或用户使用wlc生成HTML报告并在浏览器中查看时(UI:R),浏览器会将这些数据解析为HTML/JavaScript代码并执行。攻击者利用此漏洞可绕过同源策略,窃取用户Cookie、会话令牌或重定向用户至钓鱼网站。由于CVSS向量中作用域为S:C,攻击可能进一步扩展到浏览器访问的其他同源页面。

攻击链分析

STEP 1
1. 恶意注入
攻击者获取Weblate服务器的高权限账号,将恶意JavaScript代码注入到通过API返回的字段中(如翻译字符串内容)。
STEP 2
2. 生成报告
受害者(如管理员)使用存在漏洞的wlc命令行工具从服务器拉取数据,并指定生成HTML格式的报告(例如 wlc --format html > report.html)。
STEP 3
3. 渲染执行
受害者在浏览器中打开生成的HTML文件。由于wlc未对数据进行转义,浏览器解析HTML时执行了攻击者注入的恶意脚本。
STEP 4
4. 攻击后果
恶意脚本在受害者浏览器上下文中运行,可能导致Cookie被盗、会话劫持或其他客户端攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC Concept for CVE-2026-42150 # This demonstrates the lack of escaping in HTML output generation. import html def vulnerable_render(data): # Simulates the vulnerable behavior in wlc < 2.0.0 # Direct interpolation without escaping HTML entities return f"<div class='translation'>{data}</div>" def patched_render(data): # Simulates the patched behavior in wlc >= 2.0.0 return f"<div class='translation'>{html.escape(data)}</div>" # Malicious payload injected via Weblate API (e.g., in a translation string) payload = '<img src=x onerror=alert("CVE-2026-42150 XSS")>' print("--- Vulnerable Output ---") print(vulnerable_render(payload)) print("\n--- Patched Output ---") print(patched_render(payload))

影响范围

wlc < 2.0.0

防御指南

临时缓解措施
如果无法立即升级,应避免使用wlc的HTML输出功能(--format html)来渲染来自不可信或未验证来源的数据。在查看生成的HTML文件时,建议使用文本编辑器而非浏览器打开,或者确保浏览器环境已禁用JavaScript执行。

参考链接