CVE-2026-39380
Stored XSS in Open Source POS Stock Locations Configuration
Publication date: 2026-04-07
Last updated on: 2026-04-24
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| opensourcepos | open_source_point_of_sale | to 3.4.3 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-79 | The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users. |
Attack-Flow Graph
AI Powered Q&A
What immediate steps should I take to mitigate this vulnerability?
The immediate and recommended mitigation is to upgrade the Open Source Point of Sale application to version 3.4.3 or later, where the vulnerability is fixed.
The fix involves properly escaping user input using the esc() helper function or htmlspecialchars() in PHP before rendering it in the Employees interface.
If upgrading immediately is not possible, avoid entering untrusted input into the Stock Locations configuration and restrict access to the configuration interface to trusted users only.
Additionally, monitor and sanitize any existing stock_location entries in the database to remove malicious scripts.
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
The vulnerability allows attackers to inject and execute malicious JavaScript code in the application, which can lead to unauthorized actions on behalf of authenticated users, defacement, phishing, and credential harvesting.
Such security weaknesses can potentially lead to unauthorized access to personal or sensitive data, which may impact compliance with data protection regulations like GDPR or HIPAA that require safeguarding user data and preventing unauthorized access.
However, the provided information does not explicitly state the direct impact on compliance with these standards.
Can you explain this vulnerability to me?
CVE-2026-39380 is a Stored Cross-Site Scripting (XSS) vulnerability in the Open Source Point of Sale application, specifically in the Stock Locations configuration feature. The application does not properly sanitize user input supplied through the stock_location parameter, allowing attackers to inject malicious JavaScript code. This code is stored in the database and executed later when viewed in the Employees interface, enabling attackers to run arbitrary scripts in other users' browsers.
How can this vulnerability impact me? :
This vulnerability can allow attackers to execute arbitrary JavaScript in the browsers of authenticated users. Potential impacts include performing unauthorized actions on behalf of users, defacing the application interface, and conducting phishing or credential harvesting attacks. The attacker can exploit this by injecting malicious scripts that run when users access certain parts of the application.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability can be detected by attempting to inject a test payload into the Stock Locations configuration feature and observing if the payload executes in the Employees interface.
A practical method is to log into the Open Source Point of Sale application, navigate to Configuration β Stock tab, and insert a payload such as <img/src=x onerror=alert(1)> into the Stock Locations field.
After saving, navigate to Employees β New Employee and check if the injected script executes, indicating the presence of the vulnerability.
For command-line detection, you can use curl to send a POST request with a malicious payload to the /config/saveLocations endpoint and then verify if the payload is stored and executed in the Employees interface.
- Example curl command to test injection: curl -X POST -d "stock_location[]=<img/src=x onerror=alert(1)>" https://your-opensourcepos-instance/config/saveLocations -b cookie.txt -c cookie.txt
After running the above command, access the Employees β New Employee page in a browser to see if the alert triggers.