Low

Shopware: Timing-attack on admin panel allowing enumeration of administrator usernames

  • Disclosed: 04.06.2026
  • Updated: 11.10.2026 10:22

Summary

There is a Proof of Concept which is able to enumerate the usernames of administrator users. This was possible by performing a timing attack.

Details

The faulty code exists in src/Core/Framework/Api/OAuth/UserRepository.php:

php
public function getUserEntityByUserCredentials(
        string $username,
        #[\SensitiveParameter]
        string $password,
        string $grantType,
        ClientEntityInterface $clientEntity
    ): ?UserEntityInterface {
        if ($this->loginConfigService->getConfig()?->useDefault === false) {
            // never allow login via password if the default login is disabled (e.g. using SSO only)
            return null;
        }

        $builder = $this->connection->createQueryBuilder();
        $user = $builder->select('user.id', 'user.password')
            ->from('user')
            ->where('username = :username')
            ->setParameter('username', $username)
            ->fetchAssociative();

        // PATH 1: EARLY RETURN WHEN USERNAME IS NOT FOUND
        if (!$user) {
            return null;
        }

        // PATH 2: VERIFY PASSWORD IF USER IS FOUND
        if (!password_verify($password, (string) $user['password'])) {
            return null;
        }

        return new User(Uuid::fromBytesToHex($user['id']));
    }

Subroutine getUserEntityByUserCredentials() is called when an auth request is send to api/oauth/token. If the given username is not found an early return is done (PATH 1). Only if the user is found we verify the password using password_verify.

PHP method password_verify by default uses hashing algorithm Argon2id which by design is intentionally 'slow' by introducing a timing cost to an attempt to bruteforce hashes more costly.

Since password_verify has a notable executable time, PATH 2 where an user is found and verified will be slower on average then PATH 1 where we do an early return for non-existing users.

Proposed fix

Before doing the early return, password_verify a dummy hash.

Impact

  1. More targeted dictionary/bruteforce attacks.
  2. Spear phishing / eases social engineering.
  3. Credential stuffing from other data leaks.

Authors

Niel Duysters (@NielDuysters) and Thomas Brankaer (@tbrankaer)

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 3.7/10
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
Weakness (CWE)
CWE-208
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-7w52-7jvm-m9vw - 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: Timing-attack on admin panel allowing enumeration of administrator usernames this entry
    Low · 3.7 CVE-2026-48011 >= 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.