CVE-2026-32712Open Source Point of Sale 是一款基于 PHP 和 CodeIgniter 框架的开源销售点应用程序。在 3.4.3 版本之前,该系统的每日销售管理表格中存在一个存储型跨站脚本(XSS)漏洞。由于 bootstrap-table 列配置中 `customer_name` 字段被设置为 `escape: false`,导致客户名称被直接渲染为原始 HTML。拥有客户管理权限的攻击者可以在客户的 `first_name` 或 `last_name` 字段中注入任意恶意 JavaScript 代码。当其他用户访问每日销售页面时,这些恶意代码将在其浏览器中自动执行,可能导致会话劫持或数据窃取。该问题已在 3.4.3 版本中修复。
该漏洞的根本原因在于前端数据渲染配置不当。在受影响的 Open Source Point of Sale 版本中,每日销售管理页面使用了 Bootstrap Table 组件来展示销售数据。开发者在配置 `customer_name` 列时,将 `escape` 参数设置为 `false`。这导致该字段的数据在渲染时不会经过 HTML 实体编码处理,而是直接作为 HTML 原始代码插入到 DOM 结构中。
攻击者利用这一漏洞需要具备客户管理权限。攻击者可以通过编辑或新增客户功能,在客户的 `first_name` 或 `last_name` 输入框中注入恶意的 JavaScript 载荷(例如 `<img src=x onerror=alert(1)>`)。这些数据被存储在数据库中。当具有更高权限的管理员或其他员工访问“每日销售”页面查看报表时,系统从数据库读取包含恶意代码的客户名称,并在前端表格中直接渲染。受害者的浏览器解析到 HTML 标签和脚本后,会立即执行攻击者的代码,从而允许攻击者在受害者的会话上下文中执行操作,如窃取登录凭证或进行未授权操作。