Расширение Joomla - j2commerce.com - Подделка обратного вызова PayPal без аутентификации, приводящая к мошенничеству с подтверждением заказа в J2Store 1.0.0-3.3.21, 4.0.0-4.0.21, 4.1.0-4.1.6 - Проверка подписи прослушивателя IPN PayPal (`_validateIPN()`) приняла `UNVERIFIED` и любой не`INVALID` ответ как действительный, сделал запрос на проверку с помощью `CURLOPT_SSL_VERIFYPEER` отключен и сохраняет свой вердикт в поле, которое ни одна из последующих версий никогда не проверяла, поэтому обработка продолжалась независимо от результата. Отдельно сравнение оплаченных сумм выполнялось только в том случае, если `mc_gross` был положительным числом; исключение поля из тела POST (`floatval(null) == 0`) полностью пропускает проверку. В сочетании с настроенным продавцом «receiver_email» и последовательным перечисляемым идентификатором заказа, считываемым из поля «custom», анонимного POST было достаточно, чтобы перевести отложенный заказ прямо в состояние «ПОДТВЕРЖДЕНО» без оплаты или принудительно перевести отложенный заказ другого клиента в состояние «FAILED». `paypalv2.php` ни при каких обстоятельствах не выполнял проверку суммы.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v4.0