CVE-2025-70094 Overview
CVE-2025-70094 is a stored cross-site scripting (XSS) vulnerability in OpenSourcePOS (Open Source Point of Sale) version 3.4.1. The flaw resides in the Generate Item Barcode function, where the Item Category parameter is rendered without proper output encoding. Authenticated attackers can inject crafted JavaScript or HTML payloads through this parameter. When other users render the affected page, the malicious script executes in their browser context. The issue is tracked under CWE-79 and affects confidentiality, integrity, and availability of the user session.
Critical Impact
Successful exploitation allows attackers to execute arbitrary scripts in the victim's browser, enabling session hijacking, credential theft, and unauthorized actions within the point-of-sale application.
Affected Products
- OpenSourcePOS (Open Source Point of Sale) v3.4.1
- Vendor: opensourcepos
- Component: Generate Item Barcode function — Item Category parameter
Discovery Timeline
- 2026-02-13 - CVE-2025-70094 published to NVD
- 2026-02-17 - Last updated in NVD database
Technical Details for CVE-2025-70094
Vulnerability Analysis
The vulnerability is a classic reflected/stored cross-site scripting flaw in the barcode generation workflow of OpenSourcePOS v3.4.1. The application accepts the Item Category value from a privileged user input field and includes it in the rendered HTML response without applying contextual output encoding. As a result, an attacker with low-privilege authenticated access can supply HTML or JavaScript that the browser interprets as code rather than data. Because the payload propagates from server-side storage into rendered pages, victims who later view the affected barcode page trigger script execution in their authenticated session.
The vulnerability requires user interaction and crosses a security scope boundary, meaning the injected script executes in the context of the OpenSourcePOS web application and can affect other components or users who interact with the rendered output.
Root Cause
The root cause is missing or insufficient output encoding of the Item Category parameter inside the Generate Item Barcode feature. The application fails to neutralize HTML special characters such as <, >, ", and ' before placing user-controlled data into HTML context. This violates standard guidance under CWE-79: Improper Neutralization of Input During Web Page Generation.
Attack Vector
An authenticated attacker with access to create or modify item categories supplies a crafted payload — for example, a <script> tag or an event handler attribute — into the Item Category field. The payload is stored and later reflected into the Generate Item Barcode view. When a staff member, manager, or administrator opens the barcode page for an affected item, the injected script executes with the victim's session privileges. This enables session token theft via document.cookie, forced actions through forged requests, or rewriting of UI elements to harvest credentials. Full technical details are documented in the CVE-2025-70094 research write-up.
No verified public exploit code is available. The vulnerability is described in prose by the original researcher; see the vendor pull request 4357 for remediation context.
Detection Methods for CVE-2025-70094
Indicators of Compromise
- Item category records containing HTML tags, <script> blocks, javascript: URIs, or DOM event handlers such as onerror= or onload=.
- Outbound HTTP requests from staff browsers to unknown domains shortly after viewing barcode pages, indicating possible session token exfiltration.
- Unexpected administrative actions performed from legitimate user accounts following barcode page access.
Detection Strategies
- Inspect the OpenSourcePOS database tables that store item category names for suspicious markup and encoded payload signatures.
- Review web server access logs for POST requests to category creation or update endpoints containing encoded angle brackets or script keywords.
- Deploy a web application firewall rule that flags XSS signatures targeting category and barcode-related endpoints.
Monitoring Recommendations
- Enable verbose application logging for create, update, and read operations on item category fields.
- Monitor browser Content Security Policy violation reports if a CSP is enforced in front of OpenSourcePOS.
- Alert on anomalous session activity such as multiple concurrent sessions from a single user account, which can indicate stolen cookies.
How to Mitigate CVE-2025-70094
Immediate Actions Required
- Restrict access to item category management to trusted administrative users only until a patch is applied.
- Audit existing item category records and remove or sanitize any entries containing HTML or JavaScript content.
- Force a password and session reset for users who may have viewed barcode pages with suspicious categories.
Patch Information
Review and apply the upstream fix tracked in OpenSourcePOS pull request 4357. Upgrade beyond version 3.4.1 once the maintainers publish a release that includes the remediation. Verify the fix performs HTML-entity encoding of the Item Category parameter wherever it is rendered.
Workarounds
- Place OpenSourcePOS behind a web application firewall configured to block common XSS payloads targeting the item_category parameter.
- Enforce a strict Content Security Policy that disallows inline scripts and restricts script sources to trusted origins.
- Apply server-side input validation that rejects category names containing <, >, or quote characters until the official patch is deployed.
# Example nginx Content-Security-Policy header to limit XSS impact
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none';" always;
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


