Medium

Shopware: Privilege escalation: non-admin user with user:create ACL can create admin accounts

  • Disclosed: 04.06.2026
  • Updated: 11.10.2026 10:22

UserController::upsertUser() writes user data in SYSTEM_SCOPE and does not filter the admin field. A non-admin API user with user:create or user:update ACL permission can set admin: true on new or existing users, escalating to full admin access.

The Problem

In src/Core/Framework/Api/Controller/UserController.php, line 210-234:

php
public function upsertUser(?string $userId, Request $request, Context $context, ResponseFactoryInterface $factory): Response
{
    $data = $request->request->all(); // raw request data, no field filtering
    // ...
    $events = $context->scope(Context::SYSTEM_SCOPE, fn (Context $context) =>
        $this->userRepository->upsert([$data], $context)
    );
}

SYSTEM_SCOPE bypasses AclWriteValidator entirely (line 52 of AclWriteValidator::preValidate() returns early for SYSTEM_SCOPE). The admin boolean field is accepted without restriction.

Compare with IntegrationController::upsertIntegration() in the same codebase, which correctly checks:

php
if ((!$source instanceof AdminApiSource)
    || (!$source->isAdmin()
    && isset($data['admin']))
) {
    throw new PermissionDeniedException();
}

UserController is missing this exact check.

Impact

Any API user with the low-privilege user:create permission can create accounts with full admin access, or with user:update can promote any existing user to admin. This is a direct privilege escalation.

Suggested Fix

Add the same isAdmin() check from IntegrationController:

php
$source = $context->getSource();
if ((!$source instanceof AdminApiSource) || (!$source->isAdmin() && isset($data['admin']))) {
    throw new PermissionDeniedException();
}

Best regards, Keyvan Hardani

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
Composer package shopware/core >= 6.7.0.0, < 6.7.10.1, < 6.6.10.18 6.7.10.1, 6.6.10.18
Composer package shopware/platform >= 6.7.0.0, < 6.7.10.1, < 6.6.10.18 6.7.10.1, 6.6.10.18

References

CVSS score 6.5/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
Weakness (CWE)
CWE-269
Platform
Composer
Package
shopware/core, shopware/platform
Disclosed
04.06.2026
Updated
11.10.2026 10:22

Sources and licenses

OSV / GitHub Advisory Database - GHSA-v39m-97p8-gqg7 - CC BY 4.0

Vulnerability history: shopware/platform

All published vulnerabilities of this package (Composer package), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (70) in the archive
Total entries
70
First → latest
09.2020 06.2026
Without a fix
1
Exploited in attacks
0

Severity breakdown

  • Critical 6
  • High 16
  • Medium 33
  • Low 15

Disclosures per year

  1. 2020: 7
  2. 2021: 17
  3. 2022: 9
  4. 2023: 6
  5. 2024: 8
  6. 2025: 11
  7. 2026: 12
Severity:
  1. Shopware: Privilege escalation: non-admin user with user:create ACL can create admin accounts this entry
    Medium · 6.5 CVE-2026-48010 >= 6.7.0.0, < 6.7.10.1, < 6.6.10.18 6.7.10.1, 6.6.10.18
  2. High · 8.9 CVE-2026-31889 >= 6.7.0.0, < 6.7.8.1, < 6.6.10.15 6.7.8.1, 6.6.10.15
  3. High CVE-2026-31887 >= 6.7.0.0, < 6.7.8.1, < 6.6.10.15 6.7.8.1, 6.6.10.15
  4. High · 7.3 CVE-2025-27892 >= 6.7.0.0-rc1, < 6.7.0.0-rc2, >= 6.6.0.0, < 6.6.10.3, < 6.5.8.18 6.7.0.0-rc2, 6.6.10.3, 6.5.8.18
  5. High · 7.5 CVE-2025-30151 >= 6.6.0.0, < 6.6.10.3, >= 6.7.0.0-rc1, < 6.7.0.0-rc2, < 6.5.8.17 6.6.10.3, 6.7.0.0-rc2, 6.5.8.17
  6. High · 8.3 CVE-2024-42356 < 6.5.8.13, >= 6.6.0.0, < 6.6.5.1 6.5.8.13, 6.6.5.1
  7. High · 8.3 CVE-2024-42355 < 6.5.8.13, >= 6.6.0.0, < 6.6.5.1 6.5.8.13, 6.6.5.1
  8. High · 7.5 CVE-2024-27917 >= 6.5.8.0, < 6.5.8.7 6.5.8.7
  9. Critical · 9.3 CVE-2024-22406 < 6.5.7.4 6.5.7.4
  10. High · 7.5 CVE-2020-13997 >= 6.0.0, < 6.2.3 6.2.3
  11. High · 8.8 CVE-2020-13970 < 6.2.3 6.2.3
  12. High · 8.1 CVE-2022-24872 < 6.4.10.1 6.4.10.1
  13. High · 7.2 CVE-2022-24871 < 6.4.10.1 6.4.10.1
  14. Critical ghsa-r64m-qchj-hrjp < 6.4.6.1 6.4.6.1
  15. High · 8.8 CVE-2021-37708 < 6.4.3.1 6.4.3.1
  16. High · 8.0 CVE-2021-37710 < 6.4.3.1 6.4.3.1
  17. High · 8.8 CVE-2021-37711 < 6.4.3.1 6.4.3.1
  18. High · 7.5 CVE-2021-32717 < 6.4.1.1 6.4.1.1
  19. Critical · 9.1 CVE-2021-32711 < 6.3.5.1 6.3.5.1

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.