Skip to content
Heist/ feed
Back to feed
Critical

EverShop Missing Authorization on PATCH /api/customers/:id Allows Unauthenticated Account Takeover

Type: advisorySources: OSV

The customer update route in EverShop is declared with "access": "public" in packages/evershop/src/modules/customer/api/updateCustomer/route.json, which causes the admin authentication middleware to call next() without checking the caller, and no customer-session middleware guards the route; the only middleware in the chain parses the JSON body. The handler in updateCustomer.js then loads the customer by the uuid taken from the URL path and writes the supplied fields back to that record, hashing a password if one is provided, without verifying that the caller owns the record. An unauthenticated request carrying a known customer uuid can therefore overwrite that customer's email address and password and read back the updated record from the 200 response, taking over the account and locking out its owner. Customer uuids are exposed through order confirmation email links and administrative URLs. Version 2.2.1 changes the route to "access": "private".

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-72843
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 18:44 UTC · Revision 1

Source evidence

EverShop Missing Authorization on PATCH /api/customers/:id Allows Unauthenticated Account Takeover

core-osv · Original source

Published 20 Aug 2026, 21:57 UTC

The customer update route in EverShop is declared with "access": "public" in packages/evershop/src/modules/customer/api/updateCustomer/route.json, which causes the admin authentication middleware to call next() without checking the caller, and no customer-session middleware guards the route; the only middleware in the chain parses the JSON body. The handler in updateCustomer.js then loads the customer by the uuid taken from the URL path and writes the supplied fields back to that record, hashing a password if one is provided, without verifying that the caller owns the record. An unauthenticated request carrying a known customer uuid can therefore overwrite that customer's email address and password and read back the updated record from the 200 response, taking over the account and locking out its owner. Customer uuids are exposed through order confirmation email links and administrative URLs. Version 2.2.1 changes the route to "access": "private".

osv:CVE-2026-72843
Complete source record
{
  "id": "a028172e9a08b9a7bfefe7d8c3ac59e497c4618e72719926b0a9640317901a79",
  "url": "https://osv.dev/vulnerability/CVE-2026-72843",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "EverShop Missing Authorization on PATCH /api/customers/:id Allows Unauthenticated Account Takeover",
    "summary": "The customer update route in EverShop is declared with \"access\": \"public\" in packages/evershop/src/modules/customer/api/updateCustomer/route.json, which causes the admin authentication middleware to call next() without checking the caller, and no customer-session middleware guards the route; the only middleware in the chain parses the JSON body. The handler in updateCustomer.js then loads the customer by the uuid taken from the URL path and writes the supplied fields back to that record, hashing a password if one is provided, without verifying that the caller owns the record. An unauthenticated request carrying a known customer uuid can therefore overwrite that customer's email address and password and read back the updated record from the 200 response, taking over the account and locking out its owner. Customer uuids are exposed through order confirmation email links and administrative URLs. Version 2.2.1 changes the route to \"access\": \"private\".",
    "evidence": "osv:CVE-2026-72843",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-72843",
      "aliases": [
        "CVE-2026-72843"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/evershopcommerce/evershop",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "89d09fbd200931daa892c59ee8e5866490788e4c"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.2.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "fixed": "89d09fbd200931daa892c59ee8e5866490788e4c"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v2.2.1"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.2.1",
            "v1.2.0",
            "v1.1.0",
            "v1.0.0",
            "1.0.0-rc.9"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72843.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:38.294716243Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72843.json",
        "https://github.com/evershopcommerce/evershop/releases/tag/v2.2.1",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-72843",
        "https://www.vulncheck.com/advisories/evershop-missing-authorization-on-patch-api-customers-id-allows-unauthenticated-account-takeover",
        "https://github.com/evershopcommerce/evershop/issues/952",
        "https://github.com/evershopcommerce/evershop",
        "https://github.com/evershopcommerce/evershop/blob/v2.1.2/packages/evershop/src/modules/customer/api/updateCustomer/route.json",
        "https://github.com/evershopcommerce/evershop/blob/v2.1.2/packages/evershop/src/modules/customer/api/updateCustomer/updateCustomer.js"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-862"
        ],
        "cna_assigner": "VulnCheck",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72843.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-72843",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 505814,
  "published_at": "2026-08-20T21:57:34.88+00:00"
}