Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEnumerate merchant receiver_email from checkout page
-
DeliveryIdentify sequential pending order ID
-
ExploitCraft forged IPN POST omitting mc_gross
-
ExecutionIPN handler skips amount check (floatval null = 0)
-
PersistSignature check passes on UNVERIFIED response
-
ImpactOrder status set to CONFIRMED with no payment
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V3 - Web Frontend Security Server-side parameter enforcement
|
| Exploitation Conditions | The PayPal IPN listener endpoint must be enabled - this is required for any PayPal-integrated J2Store installation using IPN, which is the default PayPal integration mode. The attacker requires two values: the merchant's PayPal receiver_email address (publicly visible on most merchant sites in PayPal button markup or discoverable from prior transaction metadata) and a valid pending order ID, which the advisory explicitly describes as sequential and enumerable. No authentication is required. The attack is limited to orders in pending status; already-confirmed or completed orders are not susceptible to the confirmation bypass. The paypalv2.php code path bypasses the amount check unconditionally and is not subject to the mc_gross omission technique - it requires no preconditions at all beyond a reachable endpoint. The attack works regardless of whether SSL is enforced on the IPN endpoint itself, because the vulnerability is in server-side logic, not transport. |
| Impact | Real-world risk is high for any merchant running a vulnerable J2Store version with PayPal IPN enabled. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N) scoring 8.7 accurately reflects the attack surface: network-reachable, no privileges, no user interaction, and high integrity impact. The attack requires only two pieces of information - the merchant's PayPal receiver_email (typically visible on the merchant's site or in previous PayPal transactions) and a valid pending order ID (explicitly described as sequential and enumerable). No special conditions, authentication, or timing requirements exist. The secondary impact - forcing another customer's order to FAILED - is an underappreciated denial-of-service against order integrity. No KEV listing or public exploit code has been identified, but the vulnerability is self-documenting from the advisory description and requires no binary analysis or fuzzing; any developer familiar with PHP and PayPal IPN can construct a working exploit in minutes. EPSS data is absent from the provided input. |
| Exploit ScenarioDerived | An attacker browsing a J2Store-powered Joomla shop places a legitimate order to learn its sequential order ID and observes the merchant's PayPal receiver_email (typically embedded in PayPal buttons on the checkout page). The attacker then sends a forged HTTP POST to the store's IPN endpoint, omitting mc_gross to bypass the amount check and supplying the target order's ID in the custom field, causing the store to mark the order CONFIRMED and fulfill it without any payment having been processed. The same technique applied to another customer's pending order ID sets that order to FAILED, disrupting a legitimate transaction. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 03, 2026
Unauthenticated PayPal IPN callback forgery in J2Store (Joomla e-commerce extension) versions 1.0.0-3.3.21, 4.0.0-4.0.21, and 4.1.0-4.1.6 allows any anonymous attacker to confirm orders without payment or force other customers' orders to FAILED status. The vulnerability stems from three compounding flaws: a signature verification function that treated UNVERIFIED as acceptable, disabled TLS peer verification on the outbound PayPal check, and amount validation that could be entirely bypassed by omitting the mc_gross field - making the IPN endpoint trivially forgeable with a plain unauthenticated HTTP POST. No public exploit has been identified at time of analysis, but the attack is trivially constructable from the description alone given enumerable order IDs and a merchant receiver_email that is typically public.
RemediationAI
Upgrade J2Store to a version beyond the affected ranges: above 3.3.21 for the 3.x branch, above 4.0.21 for the 4.0.x branch, or above 4.1.6 for the 4.1.x branch. No exact fix version is confirmed from the provided input data; verify the current release at https://www.j2commerce.com/ before upgrading. If an immediate upgrade is not possible, the most effective compensating control is to disable the PayPal IPN callback endpoint entirely at the web server or Joomla configuration level and switch to a redirect-based PayPal flow with server-side verification - this eliminates the forged-callback attack surface entirely but requires reconfiguring the payment gateway. As a secondary measure, restrict the IPN callback URL to PayPal's published IP ranges at the firewall or .htaccess level, which raises the attack complexity from trivially low to requiring a PayPal IP spoofing capability. Do not rely on application-level fixes alone without patching, as the description identifies three independent logic failures in the IPN handler.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
J2Store is a PHP-based Joomla extension (CPE: cpe:2.3:a:j2commerce.com:j2store_extension_for_joomla) implementing e-commerce functionality including PayPal Instant Payment Notification (IPN) handling. The IPN flow is designed so PayPal POSTs payment data to a merchant callback URL, which the merchant verifies by re-POSTing to PayPal and checking for a VERIFIED response. J2Store's _validateIPN() function treated any response that was not literally INVALID as passing - including UNVERIFIED - and made its outbound verification call with CURLOPT_SSL_VERIFYPEER disabled, opening a secondary MITM vector on that check. Crucially, the validation result was stored in a local field that no downstream code path actually read. Separately, the amount check in paypalv2.php was gated on mc_gross being a positive float; PHP's floatval(null) evaluates to 0, so omitting the field entirely caused the condition to be false and the amount check to be skipped unconditionally. The root cause class is CWE-472 (External Control of Assumed-Immutable Web Parameter): the IPN listener treated attacker-supplied POST fields - including the order identifier in the custom field, which is sequential and enumerable - as trustworthy without genuine server-side verification.
Know when PHP 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Network-accessible IPN endpoint, no auth or complexity; pure integrity impact (order fraud), no confidentiality or availability effect.
Primary rating from Vendor (Joomla).
CVSS VectorVendor: Joomla
DescriptionCVE.org
Joomla Extension - j2commerce.com - Unauthenticated PayPal callback forgery leading to order confirmation fraud in J2Store 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6 - The PayPal IPN listener's signature check (_validateIPN()) accepted UNVERIFIED and any non-INVALID response as valid, made its verification request with CURLOPT_SSL_VERIFYPEER disabled, and stored its verdict in a field nothing downstream ever checked - so processing continued regardless of the outcome. Separately, the paid-amount comparison only ran when mc_gross was a positive number; omitting the field from the POST body (floatval(null) == 0) skipped the check entirely. Combined with a merchant-configured receiver_email and a sequential, enumerable order id read from the custom field, an anonymous POST was enough to move a pending order straight to CONFIRMED with no payment, or force another customer's pending order to FAILED. paypalv2.php performed no amount check under any circumstances.
Executive ViewAI
J2Store e-commerce extensions in versions 1.0.0-3.3.21, 4.0.0-4.0.21, and 4.1.0-4.1.6 contain an unauthenticated payment authentication bypass that allows attackers to confirm orders without payment or sabotage legitimate customer transactions. Any organization running affected J2Store versions faces immediate exposure to payment fraud, revenue loss, and customer service disruption. This vulnerability directly compromises the integrity of payment processing for Joomla-based e-commerce operations.
No vendor-released patch identified at time of analysis. Interim mitigations include: (1) restrict IPN endpoint access to PayPal-authorized IP addresses only via firewall ACLs; (2) implement independent server-side payment validation that cross-checks IPN confirmations against live PayPal transaction records before any order status change; (3) re-enable strict TLS peer verification for all outbound PayPal API communications; (4) deploy real-time alerting and mandatory manual review for all payment confirmations; (5) require manual merchant approval for orders exceeding a defined revenue threshold before processing.
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
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-70415
GHSA-ffqf-m6vh-866w
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB