{"id":"CVE-2026-71531","kind":"vulnerability","aliases":["CVE-2026-71531"],"related":[],"title":"PrestaShop: shop-restricted Webservice key reads and edits every shop's data","description":"PrestaShop before 8.2.9 and 9.2.1 contains an authorization flaw in the Webservice API that allows an attacker holding a key restricted to one shop to act on data of every shop by submitting requests with id_shop=all or id_shop_group=N, which expand the shop context without validating the key's actual shop associations and cause shopHasRight() to evaluate the expanded set as a disjunction. Attackers can exploit this flaw via classes/webservice/WebserviceRequest.php to read, modify, or delete data belonging to shops they are not authorized for, including full customer records such as email addresses, secure_key, and password hashes across the installation.","summary":"A PrestaShop Webservice API key limited to one shop can use id_shop=all or id_shop_group=N to act on every shop in the installation. An attacker with such a key can read, change or delete other shops' data, including customer emails, secure keys and password hashes.","severity":"high","cvss":8.6,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ecommerce","package","php","prestashop","self-hosted"],"not_affected_if":["patched-version","single-shop-keys-unused","webservice-disabled"],"how_to_check":"- Check the PrestaShop version in the admin panel or in `config/settings.inc.php` (or the version field in `composer.json` for source installs); versions below `8.2.9` or `9.2.1` are affected.\n- Review Webservice API keys in Advanced Parameters > Webservice and look for keys restricted to a single shop that are used by external systems.\n- Check whether the Webservice API is enabled at all in Advanced Parameters > Webservice.","fix":"- PrestaShop 8.x: upgrade to `8.2.9` or later\n- PrestaShop 9.x: upgrade to `9.2.1` or later","status":"open","published_at":"2026-11-13T23:17:19+00:00","first_seen_at":"2026-11-13T23:35:11+00:00","triaged_at":"2026-11-13T23:37:00+00:00","updated_at":"2026-11-13T23:37:00+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-13T23:37:00Z","model":"claude-haiku-5-5","output":{"fix":"- PrestaShop 8.x: upgrade to `8.2.9` or later\n- PrestaShop 9.x: upgrade to `9.2.1` or later","reach":"internet","title":"PrestaShop: shop-restricted Webservice key reads and edits every shop's data","impact":"high","summary":"A PrestaShop Webservice API key limited to one shop can use id_shop=all or id_shop_group=N to act on every shop in the installation. An attacker with such a key can read, change or delete other shops' data, including customer emails, secure keys and password hashes.","audience":"businesses","category":"package","nicknames":[],"who_cares":["prestashop","ecommerce","php","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Attacker reads or changes all shops' customer records and password hashes","analyst_note":"","how_to_check":"- Check the PrestaShop version in the admin panel or in `config/settings.inc.php` (or the version field in `composer.json` for source installs); versions below `8.2.9` or `9.2.1` are affected.\n- Review Webservice API keys in Advanced Parameters > Webservice and look for keys restricted to a single shop that are used by external systems.\n- Check whether the Webservice API is enabled at all in Advanced Parameters > Webservice.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["patched-version","webservice-disabled","single-shop-keys-unused"],"who_is_affected":"Shops running PrestaShop before 8.2.9 or 9.2.1 that have the Webservice API enabled and at least one API key restricted to a single shop. The flaw sits in classes/webservice/WebserviceRequest.php, so installations without the Webservice API in use are less exposed. Multi-shop installations face the largest impact because the attacker reaches every shop.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000823,"input_tokens":4742,"output_tokens":698,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':15A,18A '-71531':16A,19A '8.2.9':78C '9.2.1':80C 'across':177C 'act':47B,101C 'actual':129C 'address':171C 'allow':90C 'api':30B,88C 'associ':131C 'attack':55B,92C,143C 'author':83C,162C 'belong':156C 'caus':133C 'chang':62B 'classes/webservice/webservicerequest.php':149C 'contain':81C 'context':123C 'custom':69B,166C 'cve':14A,17A 'data':13A,67B,103C,155C 'delet':64B,154C 'disjunct':142C 'ecommerc':20B 'edit':9A 'email':70B,170C 'evalu':136C 'everi':10A,49B,105C 'expand':120C,138C 'exploit':145C 'flaw':84C,147C 'full':165C 'group':44B,117C 'hash':75B,176C 'hold':93C 'host':26B 'id':38B,42B,111C,115C 'includ':68B,164C 'instal':53B,179C 'key':6A,31B,59B,72B,95C,127C,173C 'limit':32B 'modifi':152C 'n':45B,118C 'one':34B,98C 'packag':21B 'password':74B,175C 'php':22B 'prestashop':1A,23B,28B,76C 'read':7A,61B,151C 'record':167C 'request':109C 'restrict':4A,96C 'secur':71B,172C 'self':25B 'self-host':24B 'set':139C 'shop':3A,11A,35B,39B,43B,50B,66B,99C,106C,112C,116C,122C,130C,158C 'shop-restrict':2A 'shophasright':134C 'submit':108C 'use':37B 'valid':125C 'via':148C 'webservic':5A,29B,87C 'without':124C","nicknames":[],"mitigations":[],"who_affected":"Shops running PrestaShop before 8.2.9 or 9.2.1 that have the Webservice API enabled and at least one API key restricted to a single shop. The flaw sits in classes/webservice/WebserviceRequest.php, so installations without the Webservice API in use are less exposed. Multi-shop installations face the largest impact because the attacker reaches every shop.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["ecommerce","high","package","php","prestashop","selfhosted"],"campaign_type":null,"search_a":"'-2026':15A,18A '-71531':16A,19A 'cve':14A,17A 'data':13A 'edit':9A 'everi':10A 'key':6A 'prestashop':1A 'read':7A 'restrict':4A 'shop':3A,11A 'shop-restrict':2A 'webservic':5A","search_b":"'act':47B 'api':30B 'attack':55B 'chang':62B 'custom':69B 'data':67B 'delet':64B 'ecommerc':20B 'email':70B 'everi':49B 'group':44B 'hash':75B 'host':26B 'id':38B,42B 'includ':68B 'instal':53B 'key':31B,59B,72B 'limit':32B 'n':45B 'one':34B 'packag':21B 'password':74B 'php':22B 'prestashop':23B,28B 'read':61B 'secur':71B 'self':25B 'self-host':24B 'shop':35B,39B,43B,50B,66B 'use':37B 'webservic':29B","search_c":"'8.2.9':78C '9.2.1':80C 'across':177C 'act':101C 'actual':129C 'address':171C 'allow':90C 'api':88C 'associ':131C 'attack':92C,143C 'author':83C,162C 'belong':156C 'caus':133C 'classes/webservice/webservicerequest.php':149C 'contain':81C 'context':123C 'custom':166C 'data':103C,155C 'delet':154C 'disjunct':142C 'email':170C 'evalu':136C 'everi':105C 'expand':120C,138C 'exploit':145C 'flaw':84C,147C 'full':165C 'group':117C 'hash':176C 'hold':93C 'id':111C,115C 'includ':164C 'instal':179C 'key':95C,127C,173C 'modifi':152C 'n':118C 'one':98C 'password':175C 'prestashop':76C 'read':151C 'record':167C 'request':109C 'restrict':96C 'secur':172C 'set':139C 'shop':99C,106C,112C,116C,122C,130C,158C 'shophasright':134C 'submit':108C 'valid':125C 'via':148C 'webservic':87C 'without':124C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-09T12:35:02+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/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-71531","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-71531","severity":null,"published_at":"2026-11-13T23:17:19+00:00","modified_at":"2026-11-13T23:17:19+00:00","first_seen_at":"2026-11-13T23:35:11+00:00","fetched_at":"2026-11-13T23:35:11+00:00","note":null}],"documents":[{"id":151011,"url":"https://github.com/PrestaShop/PrestaShop/releases/tag/8.2.9","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":151012,"url":"https://github.com/PrestaShop/PrestaShop/releases/tag/9.2.1","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":151017,"url":"https://github.com/PrestaShop/PrestaShop/security/advisories/GHSA-3f36-4qv4-vfgh","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-11-09T12:35:02+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":151014,"url":"https://www.vulncheck.com/advisories/prestashop-webservice-api-authorization-bypass-via-id-shop-parameter","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"}