{"id":"CVE-2026-48008","aliases":["GHSA-gv8p-48fr-4fxg"],"url":"https://o3.security/vulnerability/CVE-2026-48008","summary":"Shopware: Privilege Escalation via Sync API Integration Admin Flag Bypass","details":"## Summary\n\nA non-admin API user with `integration:create` ACL privilege can escalate to full administrator by creating an integration with `admin: true` through the Sync API (`POST /api/_action/sync`). The regular integration endpoint (`POST /api/integration`) correctly blocks this, but the Sync API bypasses the controller-level check by writing directly through the DAL EntityWriter. The `integration` entity definition lacks `WriteProtection`, and the `admin` field has no field-level restriction flag.\n\n**OWASP:** A01:2021 — Broken Access Control\n\n## Root Cause\n\n`IntegrationController::upsertIntegration()` checks `$source->isAdmin()` before allowing the `admin` field to be set. However, `SyncController::sync()` routes writes through `SyncService → EntityWriter`, which only applies:\n\n1. `AclWriteValidator` — checks entity-level ACL (`integration:create` is sufficient)\n2. `EntityProtectionValidator` — checks `WriteProtection` on entity definitions, but `IntegrationDefinition` has none\n\nThe `admin` field in `IntegrationDefinition` is a plain `BoolField` with no `WriteProtection` or special flag. The Sync API writes it without restriction.\n\n**Vulnerable code path:**\n- `src/Core/Framework/Api/Controller/SyncController.php` → `SyncService` → `EntityWriter::upsert()`\n- **Missing protection:** `src/Core/Framework/Integration/IntegrationDefinition.php` — `admin` field has no `WriteProtection(Context::SYSTEM_SCOPE)`\n\n**Working protection (bypassed):**\n- `src/Core/Framework/Integration/IntegrationController.php:46-56` — `isAdmin()` check only applies to the dedicated controller endpoint\n\n## Impact\n\n- **Complete admin API access** — the escalated integration has full read/write on every entity: users, customers, orders, system configuration, integrations, plugins\n- **PII exfiltration** — read all customer records (names, emails, addresses, order history)\n- **Persistent backdoor** — the admin integration survives password changes and user deactivation\n\n## Remediation\n\nAdd `WriteProtection(Context::SYSTEM_SCOPE)` to `IntegrationDefinition`, matching how `UserDefinition` and `AclRoleDefinition` are already protected:\n\n```php\n// src/Core/Framework/Integration/IntegrationDefinition.php\n(new BoolField('admin', 'admin'))\n    ->addFlags(new WriteProtection(Context::SYSTEM_SCOPE)),\n```","published":"2026-07-17T17:47:27.906Z","modified":"2026-08-12T03:51:38.271351356Z","cvss":{"score":6.5,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N"},"epss":{"score":0.00472,"percentile":0.39801,"asOf":"2026-09-17"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Packagist","name":"shopware/platform","fixedVersion":"6.7.10.1"},{"ecosystem":"Packagist","name":"shopware/platform","fixedVersion":"6.6.10.18"},{"ecosystem":"Packagist","name":"shopware/core","fixedVersion":"6.7.10.1"},{"ecosystem":"Packagist","name":"shopware/core","fixedVersion":"6.6.10.18"}],"fix":{"url":"https://github.com/shopware/shopware/commit/1e047f6d7fd9129271e28c1c9f1c272983c6f48f","label":"shopware/shopware@1e047f6"},"references":[{"type":"WEB","url":"https://github.com/shopware/shopware/releases/tag/v6.6.10.18"},{"type":"WEB","url":"https://github.com/shopware/shopware/releases/tag/v6.7.10.1"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48008.json"},{"type":"ADVISORY","url":"https://github.com/shopware/shopware/security/advisories/GHSA-gv8p-48fr-4fxg"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48008"},{"type":"FIX","url":"https://github.com/shopware/shopware/commit/1e047f6d7fd9129271e28c1c9f1c272983c6f48f"},{"type":"FIX","url":"https://github.com/shopware/shopware/commit/db5adff33ec30b648979cd1938c87f164f7b3073"},{"type":"PACKAGE","url":"https://github.com/shopware/shopware"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:38.271351356Z"}}