CVE-2025-62528CVE-2025-62528是Taguette开源定性研究工具中存在的一个存储型跨站脚本(Stored XSS)漏洞。Taguette是一款用于定性研究的开源标注工具,广泛应用于学术研究、用户体验研究和社会科学领域。该漏洞影响Taguette 1.5.0之前的版本。
该漏洞的核心问题在于,Taguette应用未对项目成员输入的项目名称(name)和项目描述(description)字段进行充分的输入过滤和输出编码。拥有项目成员权限的低权限用户可以在这些字段中注入恶意的JavaScript代码。由于这些字段的内容会在项目加载时被渲染到页面中,恶意代码会自动执行,无需任何用户交互(UI:N)。
根据CVSS 3.1评分标准,该漏洞的评分为5.4分,属于中危级别。攻击向量为网络(AV:N),攻击复杂度低(AC:L),所需权限为低权限(PR:L),即需要项目成员身份。用户交互不需要(UI:N)。该漏洞对机密性(C:L)和完整性(I:L)有低影响,但不影响可用性(A:N)。
该漏洞已由GitHub安全顾问团队通过[email protected]报告,并在Taguette 1.5.0版本中完成修复。修复方式主要是对用户输入进行适当的HTML转义和过滤,防止恶意脚本在页面渲染时执行。
Taguette项目中存在存储型XSS漏洞的根本原因是应用未对用户输入进行充分的输出编码或HTML转义。具体技术原理如下:
1. **输入点**:Taguette允许项目成员编辑项目的名称(name)和描述(description)字段。这些字段接受用户输入的文本内容。
2. **存储机制**:当用户提交包含恶意JavaScript代码的输入时,应用将其直接存储到数据库中,而未进行任何过滤或转义处理。例如,攻击者可以输入`<script>alert(document.cookie)</script>`或`<img src=x onerror=alert(1)>`等载荷。
3. **渲染触发**:当其他用户(尤其是拥有更高权限的用户如项目管理员)打开项目页面时,服务器从数据库中读取项目名称和描述字段,并将其直接嵌入到HTML页面中渲染。由于未进行HTML实体编码,浏览器将恶意脚本作为正常HTML/JavaScript代码执行。
4. **利用方式**:拥有项目成员权限的攻击者首先需要被添加到目标项目中,或者自行创建一个项目。然后在项目名称或描述字段中插入恶意JavaScript代码。当项目管理员或其他成员查看该项目时,恶意脚本将在其浏览器中自动执行。
5. **潜在影响**:攻击者可以利用此漏洞窃取受害者会话Cookie、进行钓鱼攻击、执行未授权操作(如修改项目设置、删除数据)、或者利用浏览器漏洞进行进一步攻击。由于攻击者需要项目成员权限,影响范围相对有限,但仍可对项目管理员构成严重威胁。