关键信息如下: ### 漏洞概述 - **受影响产品**: OpenSourcePOS v3.4.1 - **漏洞类型**: 不正确的 `Content-Type` 处理导致存储型跨站脚本攻击 (Stored XSS) (CWE-79, CWE-116) - **受影响组件**: 返回 JSON 响应的 Ajax 端点 - **严重性**: 中等 - **CVSS v3.1** 评分: AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:L - **修复补丁**: [opensourcepos/opensourcepos#4357](https://github.com/opensourcepos/opensourcepos/pull/4357) ### 影响 - 在受害者浏览器上下文中执行任意 JavaScript - 潜在的会话劫持 - 敏感信息暴露 - 未经授权的行为以受害者身份执行 - 影响取决于受影响用户的权限 ### 影响的版本 - 确认受影响: OpenSourcePOS v3.4.1 - 其他版本: 未测试,影响未独立验证 ### 技术描述 多个 Ajax 端点在 OpenSourcePOS 中返回 JSON 格式数据,但未正确设置 `Content-Type` 为 `application/json`,而是返回 `text/html`。当用户输入数据被存储并在 Ajax 响应中返回时,浏览器将响应视作 HTML 而非常规解析规则的 JSON,允许 HTML 或 JavaScript 脚本被执行。 ### 证明概念 (PoC) - 情景: 攻击者有一个具有属性创建权限的认证账户。 - 步骤: 创建包含特定值的属性,发送 Ajax 请求,执行存储的脚本。 - 结果: 成功利用。 ### 修复措施 - 明确设置 `Content-Type` 为 `application/json` - 确保 Ajax 响应中包含的所有用户输入数据正确编码、进行安全设置。 - 检查所有 Ajax 处理器以确定同意响应头和安全。 - 按需要进行深度安全防御,例如 Content Security Policy (CSP)。 ### 时间线 - 报告给供应商和 MITRE: 2022-12-28 - CVE 分配: 2026-02-05 ### 参考 - OpenSourcePOS 项目: [GitHub 链接](https://github.com/opensourcepos/opensourcepos) - 修复补丁/拉取请求: [pull request 链接](https://github.com/opensourcepos/opensourcepos/pull/4357)