Skip to main content

Open Source POS CVE-2025-68147

HIGH
Cross-site Scripting (XSS) (CWE-79)
2025-12-17 security-advisories@github.com
8.1
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain admin access to Store Configuration
  2. Delivery
    Inject JavaScript into Return Policy field
  3. Exploit
    Payload stored unescaped in database
  4. Execution
    Victim staff/admin views receipt
  5. Persist
    Script executes in victim browser
  6. Impact
    Hijack 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).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

NVD PRIMARY 8.1 HIGH
AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Low
niche open-source PHP POS app, limited small-business footprint
Exploit
POC
Public exploit code exists
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

60
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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

cpe:2.3:a:opensourcepos:open_source_point_of_sale:*:*:*:*:*:*:*:*
CVE-2026-26746 HIGH POC
8.8 Feb 20

Open Source Point Of Sale versions up to 3.4.1 is affected by unrestricted upload of file with dangerous type (CVSS 8.8)

CVE-2025-68434 HIGH POC
8.8 Dec 17

Cross-site request forgery in Open Source Point of Sale (OSPOS) 3.4.0 through 3.4.1 allows an unauthenticated remote att

CVE-2025-70093 HIGH POC
7.4 Feb 13

An issue in OpenSourcePOS v3.4.1 allows attackers to execute arbitrary code via returning a crafted AJAX response. [CVSS

CVE-2025-66923 HIGH POC
7.2 Dec 17

Authenticated attackers with high privileges can exploit a stored cross-site scripting (XSS) vulnerability in Open Sourc

CVE-2025-66921 HIGH POC
7.2 Dec 17

Stored cross-site scripting in Open Source Point of Sale 3.4.1 allows an authenticated user who can reach the Create/Upd

CVE-2022-34578 HIGH POC
7.2 Jul 28

Open Source Point of Sale v3.3.7 was discovered to contain an arbitrary file upload vulnerability via the Update Brandin

CVE-2025-70095 MEDIUM POC
6.5 Feb 13

A cross-site scripting (XSS) vulnerability in the item management and sales invoice function of OpenSourcePOS v3.4.1 all

CVE-2025-70091 MEDIUM POC
6.5 Feb 13

A cross-site scripting (XSS) vulnerability in the Customers function of OpenSourcePOS v3.4.1 allows attackers to execute

CVE-2025-70094 MEDIUM POC
6.5 Feb 13

A cross-site scripting (XSS) vulnerability in the Generate Item Barcode function of OpenSourcePOS v3.4.1 allows attacker

CVE-2025-66924 MEDIUM POC
6.1 Dec 17

Open Source Point of Sale v3.4.1 contains a stored cross-site scripting (XSS) vulnerability in the Create/Update Item Ki

CVE-2025-70092 MEDIUM POC
5.5 Feb 12

A cross-site scripting (XSS) vulnerability in the Item Kits function of OpenSourcePOS v3.4.1 allows attackers to execute

CVE-2026-26745 MEDIUM POC
5.3 Feb 20

OpenSourcePOS 3.4.1 allows authenticated attackers to execute arbitrary SQL commands through unsanitized concatenation o

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy