关键信息 漏洞详情 受影响产品: OpenSourcePOS v3.4.1 漏洞类型: 存储型跨站脚本(Stored XSS, CWE-79) 受影响组件: Items 模块 - 项分类字段(生成条形码功能) 严重性: 中等 CVSS v3.1 评分: AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:L 漏洞概述 存储型跨站脚本(XSS)漏洞存在于 OpenSourcePOS v3.4.1 的 Items 模块中。具有管理项目权限的认证用户可以将任意 JavaScript 代码注入到 Category 字段中。恶意负载存储在数据库中,并在用户触发特定项目的 Generate Barcode 功能时执行。 影响 会话劫持: 执行任意 JavaScript 可用于窃取用户会话 cookie。 敏感数据暴露: 可能访问页面上下文中显示的敏感信息。 未经授权的操作: 恶意脚本可以在受害者不知情的情况下执行操作(如修改系统设置,若受害者是管理员)。 执行上下文: 恶意负载以查看生成的条形码标签的任何用户的权限执行。 影响版本 确认受影响的版本: OpenSourcePOS v3.4.1 其他版本: 未测试,对其他版本的影响未独立验证。 技术描述 Category 字段在提交时不正确地对用户输入进行清理。此外,应用程序在 "Generate Barcode" 视图中渲染存储的 Category 值时未适当进行输出编码(例如,HTML 实体编码)。 概念验证 场景: 攻击者拥有一个具有管理项目权限的认证账户。 1. 登录应用并导航至 Items 部分。 2. 创建新项目(或更新现有项目)。在 Category 字段中输入以下负载: 提交表单以存储项目。 3. 导航至项目列表,选择恶意项目,并点击 Generate Barcodes 按钮。 4. 浏览器将重定向至条形码标签预览页面。JavaScript 负载将立即执行,确认存储型 XSS 漏洞的存在。 修复方案 应用官方补丁: 合并 Pull Request #4357 的变体。 输出编码: 在 HTML 模板中渲染数据库存储的值之前,实现上下文感知的输出编码(例如,使用 htmlspecialchars() 于 PHP 中)。 输入验证: 对 Category 字段执行严格的验证,仅允许安全和预定义的字符。 时间线 报告给供应商和 MITRE: 2025 年 12 月 28 日 CVE 分配: 2026 年 2 月 5 日