{"id":3367,"date":"2026-09-04T04:59:39","date_gmt":"2026-09-03T20:59:39","guid":{"rendered":"https:\/\/www.54iter.cn\/?p=3367"},"modified":"2026-09-04T04:59:39","modified_gmt":"2026-09-03T20:59:39","slug":"cve-2026-77999","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-77999","title":{"rendered":"CVE-2026-77999 &#8211; Joomla Extension &#8211; j2commerce.com &#8211; Unauthenticated PayPal callback forgery leading to ord"},"content":{"rendered":"<p>Joomla Extension &#8211; j2commerce.com &#8211; 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 &#8211; The PayPal IPN listener&#8217;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 \u2014 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&#8217;s pending order to `FAILED`. `paypalv2.php` performed no amount check under any circumstances.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Joomla Extension &#8211; j2commerce.com &#8211; 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 &#8211; The PayPal IPN listener&#8217;s signature<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-3367","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/3367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}