Open Source POS CVE-2025-68147
HIGHAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain admin access to Store Configuration
-
DeliveryInject JavaScript into Return Policy field
-
ExploitPayload stored unescaped in database
-
ExecutionVictim staff/admin views receipt
-
PersistScript executes in victim browser
-
ImpactHijack session or perform unauthorized actions
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an attacker to have write access to the 'Store Configuration' area of OSPOS - i.e. administrator-level privileges (per PR:H), obtained legitimately as a rogue admin or via a compromised/CSRF-abused admin account. The specific injection point is the 'Return Policy' configuration field, which is rendered unescaped by the receipt (receipt_default.php) and invoice email (invoice_email.php) templates. Execution additionally requires user interaction (UI:R): a victim - staff member or administrator - must view a receipt or complete a transaction for the stored payload to run in their browser. Limiting factors that reduce realistic risk: the privileged write prerequisite, the dependence on a victim actually rendering a receipt, and the temporary mitigation of restricting the field to plain text. Affected versions are 3.4.0 up to (not including) 3.4.2. |
| Impact | This is a stored XSS (CWE-79) in OSPOS whose CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N = 8.1 High) is driven up primarily by the scope change (S:C) and the high confidentiality/integrity impact on victim sessions, NOT by ease of initial access. The critical qualifier is PR:H: injecting the payload requires access to 'Store Configuration,' i.e. an administrator-level account (or an account hijacked via the separately-referenced CSRF flaw). This substantially lowers real-world urgency versus an unauthenticated XSS - the attacker must already be a rogue/compromised admin. A public POC exists (publicly available exploit code exists), and a vendor patch is available, but the vulnerability is NOT in CISA KEV (no confirmed active exploitation) and no EPSS score was provided in the input, so widespread opportunistic exploitation cannot be inferred. SSVC framing: exploitation is 'poc,' automatable is effectively 'no' (requires privileged configuration write plus a victim viewing a receipt), and technical impact is 'total' only against the victim's session scope. Net: a genuine privilege-escalation/lateral-movement risk inside an already-trusted admin boundary rather than a drive-by internet threat - a moderate real-world priority despite the 8.1 score. Note signal tension: POC availability is present but must not be conflated with active exploitation, which is unconfirmed. |
| Exploit ScenarioDerived | A rogue administrator, or an attacker who has compromised an admin account (potentially chaining the separate CSRF issue), opens Store Configuration and enters a malicious JavaScript payload into the 'Return Policy' field. The payload is stored unescaped and later executes in the browser of any staff member or other administrator who views a receipt or completes a transaction, enabling session hijacking or actions on the victim's behalf. A public proof-of-concept is available (Nixon-H GitHub repo and the GHSA advisory). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Stored cross-site scripting in Open Source Point of Sale (OSPOS) versions 3.4.0 through 3.4.1 allows an attacker with administrator-level access to the Store Configuration panel to plant a JavaScript payload in the 'Return Policy' field, which is then rendered unescaped in receipts and invoice emails. Because the payload executes in the browser of any sales staff member or administrator who views a receipt or completes a transaction, it can hijack sessions, exfiltrate sensitive data, or perform unauthorized actions as the victim. Exploitation requires authenticated admin write access plus victim interaction (CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N = 8.1 High), and publicly available exploit code exists; a vendor patch is available in version 3.4.2 that escapes output with the esc() function.
RemediationAI
Upgrade to Open Source POS 3.4.2, which is the vendor-released patch: commit 22297a applies the esc() output-encoding helper to $config['return_policy'] in both app/Views/sales/receipt_default.php and app/Views/sales/invoice_email.php, neutralizing HTML and script injection in receipts and invoice emails (advisory: https://github.com/opensourcepos/opensourcepos/security/advisories/GHSA-xgr7-7pvw-fpmh). Until the upgrade can be applied, the only supported mitigation is operational rather than code-based: audit and scrub the 'Return Policy' field in Store Configuration so it contains plain text only, with no HTML tags or angle brackets, and restrict write access to Store Configuration to a minimal set of trusted administrators - the trade-off being that this does not fix the underlying missing encoding and any future HTML entry will re-arm the payload. Administrators should also treat the field as untrusted and re-check it after any configuration import or restore, and should consider resetting credentials or invalidating sessions of staff who may have rendered an injected receipt, since the stored script executes with their session privileges; blocking admin-console access from untrusted networks reduces the residual risk from the related CSRF vector. No code-level workaround exists beyond the 3.4.2 patch.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OSPOS is a PHP point-of-sale application built on the CodeIgniter framework, and this is a classic CWE-79 improper neutralization of input during web page generation, specifically the stored/persistent subtype. The 'Return Policy' value is saved unsanitized into the application configuration store and later emitted directly from the receipt_default.php and invoice_email.php view templates using the raw PHP short-echo tag alongside nl2br(), meaning any HTML or JavaScript the administrator types is written into the rendered page and executed by the recipient's browser. The upstream fix in commit 22297a wraps the value in CodeIgniter's esc() helper (<?= nl2br(esc($config['return_policy'])) ?>) in both templates, applying HTML-context output encoding. The scope-changing (S:C) portion of the vector reflects that the injected script crosses a trust boundary - from the configuration data plane into the victim's authenticated session - which is what pushes the score to 8.1 despite the high PR:H privilege requirement. The CPE cpe:2.3:a:opensourcepos:open_source_point_of_sale tracks the affected product line, and tags point to a companion CSRF weakness that could serve as the delivery mechanism for obtaining the admin write access the injection needs.
Know when Open Source Point Of Sale gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Injecting into Return Policy needs Store Configuration admin access (PR:H); a victim must view a receipt (UI:R); payload runs in another user's session (S:C) enabling session/data theft (C:H/I:H), no availability impact.
Primary rating from NVD.
CVSS VectorNVD
DescriptionNVD
Open Source Point of Sale (opensourcepos) is a web based point of sale application written in PHP using CodeIgniter framework. Starting in version 3.4.0 and prior to version 3.4.2, a Stored Cross-Site Scripting (XSS) vulnerability exists in the "Return Policy" configuration field. The application does not properly sanitize user input before saving it to the database or displaying it on receipts. An attacker with access to the "Store Configuration" (such as a rogue administrator or an account compromised via the separate CSRF vulnerability) can inject malicious JavaScript payloads into this field. These payloads are executed in the browser of any user (including other administrators and sales staff) whenever they view a receipt or complete a transaction. This can lead to session hijacking, theft of sensitive data, or unauthorized actions performed on behalf of the victim. The vulnerability has been patched in version 3.4.2 by ensuring the output is escaped using the esc() function in the receipt template. As a temporary mitigation, administrators should ensure the "Return Policy" field contains only plain text and strictly avoid entering any HTML tags. There is no code-based workaround other than applying the patch.
Executive ViewAI
Open Source Point of Sale (OSPOS) 3.4.0 through 3.4.1 exposes sales and administrative users to a persistent browser-based attack that can lead to session takeover and unauthorized access to transaction and customer data. Leadership should care because these users operate core point-of-sale workflows, and a successful attack could disrupt sales operations, expose sensitive information, and require costly incident response; a vendor patch is available in 3.4.2, and publicly available exploit code exists.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)NVD
More in Open Source Point Of Sale
View allOpen Source Point Of Sale versions up to 3.4.1 is affected by unrestricted upload of file with dangerous type (CVSS 8.8)
Cross-site request forgery in Open Source Point of Sale (OSPOS) 3.4.0 through 3.4.1 allows an unauthenticated remote att
An issue in OpenSourcePOS v3.4.1 allows attackers to execute arbitrary code via returning a crafted AJAX response. [CVSS
Authenticated attackers with high privileges can exploit a stored cross-site scripting (XSS) vulnerability in Open Sourc
Stored cross-site scripting in Open Source Point of Sale 3.4.1 allows an authenticated user who can reach the Create/Upd
Open Source Point of Sale v3.3.7 was discovered to contain an arbitrary file upload vulnerability via the Update Brandin
A cross-site scripting (XSS) vulnerability in the item management and sales invoice function of OpenSourcePOS v3.4.1 all
A cross-site scripting (XSS) vulnerability in the Customers function of OpenSourcePOS v3.4.1 allows attackers to execute
A cross-site scripting (XSS) vulnerability in the Generate Item Barcode function of OpenSourcePOS v3.4.1 allows attacker
Open Source Point of Sale v3.4.1 contains a stored cross-site scripting (XSS) vulnerability in the Create/Update Item Ki
A cross-site scripting (XSS) vulnerability in the Item Kits function of OpenSourcePOS v3.4.1 allows attackers to execute
OpenSourcePOS 3.4.1 allows authenticated attackers to execute arbitrary SQL commands through unsanitized concatenation o
NVD
CVE.org
EPSS
GitHub
Exploit-DB