关键漏洞信息 漏洞详情 受影响的产品: OpenSourcePOS v3.4.1 漏洞类型: 存储型跨站脚本攻击 (Stored Cross-Site Scripting, CWE-79) 受影响组件: Items 模块 (Item Name 字段) 和 Sales/Receivings 模块 (发票视图) 严重程度: 中 CVSS v3.1 评分: AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:L 补丁: opensourcepos/opensourcepos#4363 摘要 存储型跨站脚本攻击 (XSS) 漏洞存在于 OpenSourcePOS v3.4.1 中。具有管理权限的攻击者可以在 Item Name 字段中注入恶意的 JavaScript 负载。该负载存储在数据库中,并在包含该恶意项目的任何发票生成时,在浏览器中执行。 影响 会话劫持: 攻击者可以窃取查看发票的管理用户的会话 cookie。 数据窃取: 可能访问在发票屏幕上显示的敏感财务信息或客户数据。 未经授权的操作: 由于发票通常由具有更高权限的用户处理,脚本可以执行未经授权的交易或系统更改。 网络钓鱼: 脚本可以用来注入虚假的登录表单或将用户重定向到恶意站点。 受影响的版本 已确认受影响: OpenSourcePOS v3.4.1 其他版本: 可能所有在最新安全补丁发布前的版本。 技术描述 漏洞因应用程序在创建/更新时无法正确进行 Item Name 输入的转义,且在发票页面渲染时未能正确执行输出编码引起的。如果项目名称包含 标签,生成发票时,系统将从数据库中获取项目详情并直接将名称插入发票屏幕的 HTML 中,而浏览器会在页面加载时立即执行这些标签。 漏洞概念验证 场景: 攻击者利用具有项目管理权限的账户对销售部门展开攻击。 步骤: - 以具有"Items: Add, Update, Delete, and Search Items"权限的账户登录。 - 创建或更新项目,在 Item Name 字段中输入如 的恶意代码。 - 导航至 Sales 或 Receivings 菜单,将恶意项目添加到交易中并生成或查看发票后,浏览器将渲染并执行脚本,显示一个警告框。 修复措施 输出编码: 确保所有项目属性,尤其是项目名称,都是 HTML 编码(例如,在 PHP 中使用 )再在发票和收据页面显示。 内容安全策略 (CSP): 实施强大的 CSP 限制克行内脚本和非授权外部脚本的执行。 输入过滤: 尽管编码输出是主要防御,但是对输入进行清理,除了危险的 HTML 标签能够提供附加的安全层。 事件时间线 报告给厂商和 MITRE: 2026-01-04 CVE 分配: 2026-02-05 参考资料 OpenSourcePOS 项目: https://github.com/opensourcepos/opensourcepos CWE-79: 不正确的输入中和在网页生成过程中 (Cross-site Scripting) https://cwe.mitre.org/data/definitions/79.html 补丁: opensourcepos/opensourcepos#4363