{"id":"CVE-2026-128049","kind":"vulnerability","aliases":["CVE-2026-128049"],"related":[],"title":"OpenMage Magento: forged GET request links attacker OAuth token to admin","description":"OpenMage Magento LTS before 20.18.2 and 21.0.0-beta1 before 21.0.0-beta3 contains a cross-site request forgery vulnerability in the admin and storefront OAuth confirm and confirmSimple actions, which accept GET requests without form-key validation. Attackers holding OAuth consumer credentials can lure a logged-in administrator or customer to a crafted confirm URL that authorizes the attacker's request token, then exchange it at /oauth/token for a persistent REST API access token bound to the victim.","summary":"OpenMage Magento's admin and storefront OAuth confirm actions accept GET requests without form-key validation, so a crafted link can authorize an attacker's OAuth request token. The attacker then exchanges it for a persistent REST API token bound to a logged-in administrator or customer.","severity":"critical","cvss":9.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["magento","oauth","openmage","package","self-hosted"],"not_affected_if":["fixed-version","oauth-unused"],"how_to_check":"- Check the installed OpenMage Magento version against the fixed ranges below.\n- Look for `OAuth` confirm routes (`confirm` and `confirmSimple`) in the admin and storefront that accept GET requests.","fix":"- OpenMage Magento LTS: upgrade to `20.18.2` or later.\n- OpenMage Magento 21.0.0-beta line: upgrade to `21.0.0-beta3` or later.","status":"open","published_at":"2026-11-13T10:18:10+00:00","first_seen_at":"2026-11-13T10:47:32+00:00","triaged_at":"2026-11-13T10:48:15+00:00","updated_at":"2026-11-13T10:48:15+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-13T10:48:15Z","model":"claude-haiku-5-5","output":{"fix":"- OpenMage Magento LTS: upgrade to `20.18.2` or later.\n- OpenMage Magento 21.0.0-beta line: upgrade to `21.0.0-beta3` or later.","reach":"internet","title":"OpenMage Magento: forged GET request links attacker OAuth token to admin","impact":"high","summary":"OpenMage Magento's admin and storefront OAuth confirm actions accept GET requests without form-key validation, so a crafted link can authorize an attacker's OAuth request token. The attacker then exchanges it for a persistent REST API token bound to a logged-in administrator or customer.","audience":"businesses","category":"package","nicknames":[],"who_cares":["openmage","magento","oauth","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"attacker gets a persistent REST API token for a victim account","analyst_note":"","how_to_check":"- Check the installed OpenMage Magento version against the fixed ranges below.\n- Look for `OAuth` confirm routes (`confirm` and `confirmSimple`) in the admin and storefront that accept GET requests.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["fixed-version","oauth-unused"],"who_is_affected":"Sites running OpenMage Magento LTS before 20.18.2 or the 21.0.0-beta line before 21.0.0-beta3 with OAuth enabled are exposed. The attack needs OAuth consumer credentials and a logged-in administrator or customer who opens a crafted link. Sites on the fixed versions, or with OAuth unused, can skip it.","user_interaction":"yes","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000784,"input_tokens":4703,"output_tokens":628,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-128049':14A,17A '-2026':13A,16A '/oauth/token':142C '20.18.2':78C '21.0.0':80C,83C 'accept':34B,104C 'access':148C 'action':33B,102C 'admin':11A,28B,95C 'administr':71B,123C 'api':63B,147C 'attack':7A,49B,55B,112C,134C 'author':47B,132C 'beta1':81C 'beta3':84C 'bound':65B,150C 'confirm':32B,99C,129C 'confirmsimpl':101C 'consum':115C 'contain':85C 'craft':44B,128C 'credenti':116C 'cross':88C 'cross-sit':87C 'custom':73B,125C 'cve':12A,15A 'exchang':57B,139C 'forg':3A 'forgeri':91C 'form':39B,109C 'form-key':38B,108C 'get':4A,35B,105C 'hold':113C 'host':24B 'key':40B,110C 'link':6A,45B 'log':69B,121C 'logged-in':68B,120C 'lts':76C 'lure':118C 'magento':2A,18B,26B,75C 'oauth':8A,19B,31B,51B,98C,114C 'openmag':1A,20B,25B,74C 'packag':21B 'persist':61B,145C 'request':5A,36B,52B,90C,106C,136C 'rest':62B,146C 'self':23B 'self-host':22B 'site':89C 'storefront':30B,97C 'token':9A,53B,64B,137C,149C 'url':130C 'valid':41B,111C 'victim':153C 'vulner':92C 'without':37B,107C","nicknames":[],"mitigations":[],"who_affected":"Sites running OpenMage Magento LTS before 20.18.2 or the 21.0.0-beta line before 21.0.0-beta3 with OAuth enabled are exposed. The attack needs OAuth consumer credentials and a logged-in administrator or customer who opens a crafted link. Sites on the fixed versions, or with OAuth unused, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["critical","magento","oauth","openmage","package","selfhosted"],"campaign_type":null,"search_a":"'-128049':14A,17A '-2026':13A,16A 'admin':11A 'attack':7A 'cve':12A,15A 'forg':3A 'get':4A 'link':6A 'magento':2A 'oauth':8A 'openmag':1A 'request':5A 'token':9A","search_b":"'accept':34B 'action':33B 'admin':28B 'administr':71B 'api':63B 'attack':49B,55B 'author':47B 'bound':65B 'confirm':32B 'craft':44B 'custom':73B 'exchang':57B 'form':39B 'form-key':38B 'get':35B 'host':24B 'key':40B 'link':45B 'log':69B 'logged-in':68B 'magento':18B,26B 'oauth':19B,31B,51B 'openmag':20B,25B 'packag':21B 'persist':61B 'request':36B,52B 'rest':62B 'self':23B 'self-host':22B 'storefront':30B 'token':53B,64B 'valid':41B 'without':37B","search_c":"'/oauth/token':142C '20.18.2':78C '21.0.0':80C,83C 'accept':104C 'access':148C 'action':102C 'admin':95C 'administr':123C 'api':147C 'attack':112C,134C 'author':132C 'beta1':81C 'beta3':84C 'bound':150C 'confirm':99C,129C 'confirmsimpl':101C 'consum':115C 'contain':85C 'craft':128C 'credenti':116C 'cross':88C 'cross-sit':87C 'custom':125C 'exchang':139C 'forgeri':91C 'form':109C 'form-key':108C 'get':105C 'hold':113C 'key':110C 'log':121C 'logged-in':120C 'lts':76C 'lure':118C 'magento':75C 'oauth':98C,114C 'openmag':74C 'persist':145C 'request':90C,106C,136C 'rest':146C 'site':89C 'storefront':97C 'token':137C,149C 'url':130C 'valid':111C 'victim':153C 'vulner':92C 'without':107C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-10-26T19:59:23+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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-128049","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-128049","severity":null,"published_at":"2026-11-13T10:18:10+00:00","modified_at":"2026-11-13T10:18:10+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":145411,"url":"https://github.com/OpenMage/magento-lts/commit/1f83e49b60e08aa7ba89dcc2d41ea21f62c0b796","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":145412,"url":"https://github.com/OpenMage/magento-lts/security/advisories/GHSA-grrq-9gq2-vm55","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-26T19:59:23+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":145413,"url":"https://www.vulncheck.com/advisories/openmage-magento-lts-before-20.18.2-csrf-via-oauth-authorization-confirm","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"}