{"id":"CVE-2026-47741","aliases":["GHSA-9rh9-hf3w-9fgg"],"url":"https://o3.security/vulnerability/CVE-2026-47741","summary":"Shopper: Race condition on Discount.usage_limit allows silent over-redemption","details":"Shopper is a Headless e-commerce Admin Panel. Prior to 2.8.0, CreateOrderFromCartAction::execute previously created the Order row before checking and incrementing the discount's total_use counter. Under concurrent checkout pressure (Black Friday, flash sale, viral coupon), the global usage_limit was silently exceeded: orders were committed with the discount fully applied to price_amount while the counter blocked at usage_limit. The merchant had no signal that an over-redemption had occurred. This vulnerability is fixed in 2.8.0.","published":"2026-05-29T18:02:13.168Z","modified":"2026-08-12T03:51:35.223172614Z","cvss":{"score":5.9,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N"},"epss":{"score":0.00239,"percentile":0.15113,"asOf":"2026-08-14"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Packagist","name":"shopper/cart","fixedVersion":"2.8.0"}],"fix":{"url":"https://github.com/shopperlabs/shopper/pull/511","label":"shopperlabs/shopper#511"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47741.json"},{"type":"ADVISORY","url":"https://github.com/shopperlabs/shopper/security/advisories/GHSA-9rh9-hf3w-9fgg"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-47741"},{"type":"REPORT","url":"https://github.com/shopperlabs/shopper/issues/510"},{"type":"FIX","url":"https://github.com/shopperlabs/shopper/pull/511"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:35.223172614Z"}}