{"id":"CVE-2026-128042","kind":"vulnerability","aliases":["CVE-2026-128042"],"related":[],"title":"OpenMage magento-lts: race condition lets coupons be redeemed past their cap","description":"OpenMage magento-lts before 20.19.0 and 21.0.0-beta1 before 21.0.0-beta3 contains a race condition in shopping cart price rule usage limits, because Mage_SalesRule_Model_Validator checks coupon limits without locking and the usage counters are later incremented non-atomically. Unauthenticated attackers, including guest shoppers, can submit concurrent checkouts to redeem a limited coupon more times than its cap allows.","summary":"OpenMage magento-lts checks shopping cart coupon usage limits without a lock, and the usage counters are incremented non-atomically. Concurrent checkouts can redeem a limited coupon more times than its cap allows.","severity":"medium","cvss":6.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ecommerce","magento-lts","openmage","runtime","self-hosted"],"not_affected_if":["fixed-version","no-usage-limited-coupons"],"how_to_check":"- Check the installed magento-lts version in composer.json or the OpenMage admin; affected versions are before `20.19.0` and `21.0.0-beta1` through `21.0.0-beta2`.\n- Review whether limited-use cart price rules are in use in the sales rules configuration.","fix":"- magento-lts: upgrade to `20.19.0` or later\n- magento-lts 21.0.0 beta line: upgrade to `21.0.0-beta3` or later","status":"open","published_at":"2026-11-13T10:18:09+00:00","first_seen_at":"2026-11-13T10:47:32+00:00","triaged_at":"2026-11-13T10:55:11+00:00","updated_at":"2026-11-13T10:55:11+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-11-13T10:55:11Z","model":"claude-haiku-5-5","output":{"fix":"- magento-lts: upgrade to `20.19.0` or later\n- magento-lts 21.0.0 beta line: upgrade to `21.0.0-beta3` or later","reach":"internet","title":"OpenMage magento-lts: race condition lets coupons be redeemed past their cap","impact":"low","summary":"OpenMage magento-lts checks shopping cart coupon usage limits without a lock, and the usage counters are incremented non-atomically. Concurrent checkouts can redeem a limited coupon more times than its cap allows.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["magento-lts","openmage","ecommerce","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"coupons are redeemed beyond their usage cap, causing financial loss","analyst_note":"","how_to_check":"- Check the installed magento-lts version in composer.json or the OpenMage admin; affected versions are before `20.19.0` and `21.0.0-beta1` through `21.0.0-beta2`.\n- Review whether limited-use cart price rules are in use in the sales rules configuration.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["fixed-version","no-usage-limited-coupons"],"who_is_affected":"Stores running OpenMage magento-lts with coupon or cart price rules that have a usage limit are exposed. Stores without limited-use coupons, or running a fixed version, can skip it. Unauthenticated guest shoppers can trigger it by submitting concurrent checkouts.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.00077,"input_tokens":4678,"output_tokens":605,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-128042':16A,19A '-2026':15A,18A '20.19.0':69C '21.0.0':71C,74C 'allow':63B,126C 'atom':50B,106C 'attack':108C 'beta1':72C 'beta3':75C 'cap':13A,62B,125C 'cart':35B,82C 'check':33B,92C 'checkout':52B,115C 'concurr':51B,114C 'condit':6A,79C 'contain':76C 'counter':45B,100C 'coupon':8A,36B,57B,93C,120C 'cve':14A,17A 'ecommerc':20B 'guest':110C 'host':28B 'includ':109C 'increment':47B,103C 'later':102C 'let':7A 'limit':38B,56B,86C,94C,119C 'lock':41B,96C 'lts':4A,23B,32B,67C 'mage':88C 'magento':3A,22B,31B,66C 'magento-lt':2A,21B,30B,65C 'model':90C 'non':49B,105C 'non-atom':48B,104C 'openmag':1A,24B,29B,64C 'past':11A 'price':83C 'race':5A,78C 'redeem':10A,54B,117C 'rule':84C 'runtim':25B 'salesrul':89C 'self':27B 'self-host':26B 'shop':34B,81C 'shopper':111C 'submit':113C 'time':59B,122C 'unauthent':107C 'usag':37B,44B,85C,99C 'valid':91C 'without':39B,95C","nicknames":[],"mitigations":[],"who_affected":"Stores running OpenMage magento-lts with coupon or cart price rules that have a usage limit are exposed. Stores without limited-use coupons, or running a fixed version, can skip it. Unauthenticated guest shoppers can trigger it by submitting concurrent checkouts.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["ecommerce","magentolts","medium","openmage","runtime","selfhosted"],"campaign_type":null,"search_a":"'-128042':16A,19A '-2026':15A,18A 'cap':13A 'condit':6A 'coupon':8A 'cve':14A,17A 'let':7A 'lts':4A 'magento':3A 'magento-lt':2A 'openmag':1A 'past':11A 'race':5A 'redeem':10A","search_b":"'allow':63B 'atom':50B 'cap':62B 'cart':35B 'check':33B 'checkout':52B 'concurr':51B 'counter':45B 'coupon':36B,57B 'ecommerc':20B 'host':28B 'increment':47B 'limit':38B,56B 'lock':41B 'lts':23B,32B 'magento':22B,31B 'magento-lt':21B,30B 'non':49B 'non-atom':48B 'openmag':24B,29B 'redeem':54B 'runtim':25B 'self':27B 'self-host':26B 'shop':34B 'time':59B 'usag':37B,44B 'without':39B","search_c":"'20.19.0':69C '21.0.0':71C,74C 'allow':126C 'atom':106C 'attack':108C 'beta1':72C 'beta3':75C 'cap':125C 'cart':82C 'check':92C 'checkout':115C 'concurr':114C 'condit':79C 'contain':76C 'counter':100C 'coupon':93C,120C 'guest':110C 'includ':109C 'increment':103C 'later':102C 'limit':86C,94C,119C 'lock':96C 'lts':67C 'mage':88C 'magento':66C 'magento-lt':65C 'model':90C 'non':105C 'non-atom':104C 'openmag':64C 'price':83C 'race':78C 'redeem':117C 'rule':84C 'salesrul':89C 'shop':81C 'shopper':111C 'submit':113C 'time':122C 'unauthent':107C 'usag':85C,99C 'valid':91C 'without':95C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-26T19:59:30+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-128042","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-128042","severity":null,"published_at":"2026-11-13T10:18:09+00:00","modified_at":"2026-11-13T10:18:09+00:00","first_seen_at":"2026-11-13T10:47:32+00:00","fetched_at":"2026-11-13T10:47:32+00:00","note":null}],"documents":[{"id":145387,"url":"https://github.com/OpenMage/magento-lts/commit/2626f027a752cda004c5cf7f8f9bd3cf52f525f2","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":145388,"url":"https://github.com/OpenMage/magento-lts/security/advisories/GHSA-5rg7-22cv-c9q6","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-26T19:59:30+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":145389,"url":"https://www.vulncheck.com/advisories/openmage-magento-lts-before-20.19.0-race-condition-in-coupon-usage-limits","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}